mirror of
https://github.com/github/codeql-action.git
synced 2025-12-17 21:09:40 +08:00
Compare commits
2 Commits
copilot/up
...
kaspersv/d
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
76df703989 | ||
|
|
ad10347e7c |
55
lib/init-action.js
generated
55
lib/init-action.js
generated
@@ -87845,6 +87845,7 @@ function getUnknownLanguagesError(languages) {
|
|||||||
// src/feature-flags/properties.ts
|
// src/feature-flags/properties.ts
|
||||||
var RepositoryPropertyName = /* @__PURE__ */ ((RepositoryPropertyName2) => {
|
var RepositoryPropertyName = /* @__PURE__ */ ((RepositoryPropertyName2) => {
|
||||||
RepositoryPropertyName2["EXTRA_QUERIES"] = "github-codeql-extra-queries";
|
RepositoryPropertyName2["EXTRA_QUERIES"] = "github-codeql-extra-queries";
|
||||||
|
RepositoryPropertyName2["DISABLE_OVERLAY_ANALYSIS"] = "github-codeql-disable-overlay-analysis";
|
||||||
return RepositoryPropertyName2;
|
return RepositoryPropertyName2;
|
||||||
})(RepositoryPropertyName || {});
|
})(RepositoryPropertyName || {});
|
||||||
async function loadPropertiesFromApi(gitHubVersion, logger, repositoryNwo) {
|
async function loadPropertiesFromApi(gitHubVersion, logger, repositoryNwo) {
|
||||||
@@ -89403,34 +89404,39 @@ async function isOverlayAnalysisFeatureEnabled(repository, features, codeql, lan
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
async function getOverlayDatabaseMode(codeql, repository, features, languages, sourceRoot, buildMode, codeScanningConfig, logger) {
|
async function getOverlayDatabaseMode(codeql, repository, features, languages, sourceRoot, buildMode, codeScanningConfig, repositoryProperties, logger) {
|
||||||
let overlayDatabaseMode = "none" /* None */;
|
let overlayDatabaseMode = "none" /* None */;
|
||||||
let useOverlayDatabaseCaching = false;
|
let useOverlayDatabaseCaching = false;
|
||||||
const modeEnv = process.env.CODEQL_OVERLAY_DATABASE_MODE;
|
const overlayAnalysisDisabled = repositoryProperties["github-codeql-disable-overlay-analysis" /* DISABLE_OVERLAY_ANALYSIS */];
|
||||||
if (modeEnv === "overlay" /* Overlay */ || modeEnv === "overlay-base" /* OverlayBase */ || modeEnv === "none" /* None */) {
|
if (overlayAnalysisDisabled && overlayAnalysisDisabled === "true") {
|
||||||
overlayDatabaseMode = modeEnv;
|
logger.info(`Setting overlay database mode to ${overlayDatabaseMode} because overlay analysis is disabled by a custom repository property.`);
|
||||||
logger.info(
|
} else {
|
||||||
`Setting overlay database mode to ${overlayDatabaseMode} from the CODEQL_OVERLAY_DATABASE_MODE environment variable.`
|
const modeEnv = process.env.CODEQL_OVERLAY_DATABASE_MODE;
|
||||||
);
|
if (modeEnv === "overlay" /* Overlay */ || modeEnv === "overlay-base" /* OverlayBase */ || modeEnv === "none" /* None */) {
|
||||||
} else if (await isOverlayAnalysisFeatureEnabled(
|
overlayDatabaseMode = modeEnv;
|
||||||
repository,
|
|
||||||
features,
|
|
||||||
codeql,
|
|
||||||
languages,
|
|
||||||
codeScanningConfig
|
|
||||||
)) {
|
|
||||||
if (isAnalyzingPullRequest()) {
|
|
||||||
overlayDatabaseMode = "overlay" /* Overlay */;
|
|
||||||
useOverlayDatabaseCaching = true;
|
|
||||||
logger.info(
|
logger.info(
|
||||||
`Setting overlay database mode to ${overlayDatabaseMode} with caching because we are analyzing a pull request.`
|
`Setting overlay database mode to ${overlayDatabaseMode} from the CODEQL_OVERLAY_DATABASE_MODE environment variable.`
|
||||||
);
|
|
||||||
} else if (await isAnalyzingDefaultBranch()) {
|
|
||||||
overlayDatabaseMode = "overlay-base" /* OverlayBase */;
|
|
||||||
useOverlayDatabaseCaching = true;
|
|
||||||
logger.info(
|
|
||||||
`Setting overlay database mode to ${overlayDatabaseMode} with caching because we are analyzing the default branch.`
|
|
||||||
);
|
);
|
||||||
|
} else if (await isOverlayAnalysisFeatureEnabled(
|
||||||
|
repository,
|
||||||
|
features,
|
||||||
|
codeql,
|
||||||
|
languages,
|
||||||
|
codeScanningConfig
|
||||||
|
)) {
|
||||||
|
if (isAnalyzingPullRequest()) {
|
||||||
|
overlayDatabaseMode = "overlay" /* Overlay */;
|
||||||
|
useOverlayDatabaseCaching = true;
|
||||||
|
logger.info(
|
||||||
|
`Setting overlay database mode to ${overlayDatabaseMode} with caching because we are analyzing a pull request.`
|
||||||
|
);
|
||||||
|
} else if (await isAnalyzingDefaultBranch()) {
|
||||||
|
overlayDatabaseMode = "overlay-base" /* OverlayBase */;
|
||||||
|
useOverlayDatabaseCaching = true;
|
||||||
|
logger.info(
|
||||||
|
`Setting overlay database mode to ${overlayDatabaseMode} with caching because we are analyzing the default branch.`
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const nonOverlayAnalysis = {
|
const nonOverlayAnalysis = {
|
||||||
@@ -89527,6 +89533,7 @@ async function initConfig(features, inputs) {
|
|||||||
inputs.sourceRoot,
|
inputs.sourceRoot,
|
||||||
config.buildMode,
|
config.buildMode,
|
||||||
config.computedConfig,
|
config.computedConfig,
|
||||||
|
inputs.repositoryProperties,
|
||||||
logger
|
logger
|
||||||
);
|
);
|
||||||
logger.info(
|
logger.info(
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ import {
|
|||||||
withTmpDir,
|
withTmpDir,
|
||||||
BuildMode,
|
BuildMode,
|
||||||
} from "./util";
|
} from "./util";
|
||||||
|
import { RepositoryProperties, RepositoryPropertyName } from "./feature-flags/properties";
|
||||||
|
|
||||||
setupTests(test);
|
setupTests(test);
|
||||||
|
|
||||||
@@ -1005,6 +1006,7 @@ interface OverlayDatabaseModeTestSetup {
|
|||||||
codeqlVersion: string;
|
codeqlVersion: string;
|
||||||
gitRoot: string | undefined;
|
gitRoot: string | undefined;
|
||||||
codeScanningConfig: configUtils.UserConfig;
|
codeScanningConfig: configUtils.UserConfig;
|
||||||
|
repositoryProperties?: RepositoryProperties | undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
const defaultOverlayDatabaseModeTestSetup: OverlayDatabaseModeTestSetup = {
|
const defaultOverlayDatabaseModeTestSetup: OverlayDatabaseModeTestSetup = {
|
||||||
@@ -1092,6 +1094,7 @@ const getOverlayDatabaseModeMacro = test.macro({
|
|||||||
tempDir, // sourceRoot
|
tempDir, // sourceRoot
|
||||||
setup.buildMode,
|
setup.buildMode,
|
||||||
setup.codeScanningConfig,
|
setup.codeScanningConfig,
|
||||||
|
setup.repositoryProperties || {},
|
||||||
logger,
|
logger,
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -1180,6 +1183,21 @@ test(
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
test(
|
||||||
|
getOverlayDatabaseModeMacro,
|
||||||
|
"Overlay analysis disabled by repository property overrides overlay-base database on default branch when feature enabled",
|
||||||
|
{
|
||||||
|
languages: [KnownLanguage.javascript],
|
||||||
|
features: [Feature.OverlayAnalysis, Feature.OverlayAnalysisJavascript],
|
||||||
|
isDefaultBranch: true,
|
||||||
|
repositoryProperties: { [RepositoryPropertyName.DISABLE_OVERLAY_ANALYSIS]: "true" },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
overlayDatabaseMode: OverlayDatabaseMode.None,
|
||||||
|
useOverlayDatabaseCaching: false,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
test(
|
test(
|
||||||
getOverlayDatabaseModeMacro,
|
getOverlayDatabaseModeMacro,
|
||||||
"Overlay-base database on default branch when feature enabled with custom analysis",
|
"Overlay-base database on default branch when feature enabled with custom analysis",
|
||||||
@@ -1214,6 +1232,24 @@ test(
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
test(
|
||||||
|
getOverlayDatabaseModeMacro,
|
||||||
|
"Overlay analysis disabled by repository property overrides overlay-base database on default branch when code-scanning feature enabled",
|
||||||
|
{
|
||||||
|
languages: [KnownLanguage.javascript],
|
||||||
|
features: [
|
||||||
|
Feature.OverlayAnalysis,
|
||||||
|
Feature.OverlayAnalysisCodeScanningJavascript,
|
||||||
|
],
|
||||||
|
isDefaultBranch: true,
|
||||||
|
repositoryProperties: { [RepositoryPropertyName.DISABLE_OVERLAY_ANALYSIS]: "true" },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
overlayDatabaseMode: OverlayDatabaseMode.None,
|
||||||
|
useOverlayDatabaseCaching: false,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
test(
|
test(
|
||||||
getOverlayDatabaseModeMacro,
|
getOverlayDatabaseModeMacro,
|
||||||
"No overlay-base database on default branch when code-scanning feature enabled with disable-default-queries",
|
"No overlay-base database on default branch when code-scanning feature enabled with disable-default-queries",
|
||||||
@@ -1350,6 +1386,21 @@ test(
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
test(
|
||||||
|
getOverlayDatabaseModeMacro,
|
||||||
|
"Overlay analysis disabled by repository property overrides overlay analysis on PR when feature enabled",
|
||||||
|
{
|
||||||
|
languages: [KnownLanguage.javascript],
|
||||||
|
features: [Feature.OverlayAnalysis, Feature.OverlayAnalysisJavascript],
|
||||||
|
isPullRequest: true,
|
||||||
|
repositoryProperties: { [RepositoryPropertyName.DISABLE_OVERLAY_ANALYSIS]: "true" },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
overlayDatabaseMode: OverlayDatabaseMode.None,
|
||||||
|
useOverlayDatabaseCaching: false,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
test(
|
test(
|
||||||
getOverlayDatabaseModeMacro,
|
getOverlayDatabaseModeMacro,
|
||||||
"Overlay analysis on PR when feature enabled with custom analysis",
|
"Overlay analysis on PR when feature enabled with custom analysis",
|
||||||
@@ -1532,6 +1583,34 @@ test(
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
test(
|
||||||
|
getOverlayDatabaseModeMacro,
|
||||||
|
"Overlay analysis disabled by repository property overrides PR analysis by env for other-org",
|
||||||
|
{
|
||||||
|
overlayDatabaseEnvVar: "overlay",
|
||||||
|
repositoryOwner: "other-org",
|
||||||
|
repositoryProperties: { [RepositoryPropertyName.DISABLE_OVERLAY_ANALYSIS]: "true" },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
overlayDatabaseMode: OverlayDatabaseMode.None,
|
||||||
|
useOverlayDatabaseCaching: false,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
test(
|
||||||
|
getOverlayDatabaseModeMacro,
|
||||||
|
"Disable overlay analysis repository property must be true to disable overlay analysis",
|
||||||
|
{
|
||||||
|
overlayDatabaseEnvVar: "overlay",
|
||||||
|
repositoryOwner: "other-org",
|
||||||
|
repositoryProperties: { [RepositoryPropertyName.DISABLE_OVERLAY_ANALYSIS]: "false" },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
overlayDatabaseMode: OverlayDatabaseMode.Overlay,
|
||||||
|
useOverlayDatabaseCaching: false,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
test(
|
test(
|
||||||
getOverlayDatabaseModeMacro,
|
getOverlayDatabaseModeMacro,
|
||||||
"Overlay PR analysis by feature flag for dsp-testing",
|
"Overlay PR analysis by feature flag for dsp-testing",
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ import {
|
|||||||
import { shouldPerformDiffInformedAnalysis } from "./diff-informed-analysis-utils";
|
import { shouldPerformDiffInformedAnalysis } from "./diff-informed-analysis-utils";
|
||||||
import * as errorMessages from "./error-messages";
|
import * as errorMessages from "./error-messages";
|
||||||
import { Feature, FeatureEnablement } from "./feature-flags";
|
import { Feature, FeatureEnablement } from "./feature-flags";
|
||||||
import { RepositoryProperties } from "./feature-flags/properties";
|
import { RepositoryProperties, RepositoryPropertyName } from "./feature-flags/properties";
|
||||||
import { getGitRoot, isAnalyzingDefaultBranch } from "./git-utils";
|
import { getGitRoot, isAnalyzingDefaultBranch } from "./git-utils";
|
||||||
import { KnownLanguage, Language } from "./languages";
|
import { KnownLanguage, Language } from "./languages";
|
||||||
import { Logger } from "./logging";
|
import { Logger } from "./logging";
|
||||||
@@ -656,6 +656,7 @@ export async function getOverlayDatabaseMode(
|
|||||||
sourceRoot: string,
|
sourceRoot: string,
|
||||||
buildMode: BuildMode | undefined,
|
buildMode: BuildMode | undefined,
|
||||||
codeScanningConfig: UserConfig,
|
codeScanningConfig: UserConfig,
|
||||||
|
repositoryProperties: RepositoryProperties,
|
||||||
logger: Logger,
|
logger: Logger,
|
||||||
): Promise<{
|
): Promise<{
|
||||||
overlayDatabaseMode: OverlayDatabaseMode;
|
overlayDatabaseMode: OverlayDatabaseMode;
|
||||||
@@ -664,42 +665,48 @@ export async function getOverlayDatabaseMode(
|
|||||||
let overlayDatabaseMode = OverlayDatabaseMode.None;
|
let overlayDatabaseMode = OverlayDatabaseMode.None;
|
||||||
let useOverlayDatabaseCaching = false;
|
let useOverlayDatabaseCaching = false;
|
||||||
|
|
||||||
const modeEnv = process.env.CODEQL_OVERLAY_DATABASE_MODE;
|
const overlayAnalysisDisabled = repositoryProperties[RepositoryPropertyName.DISABLE_OVERLAY_ANALYSIS];
|
||||||
// Any unrecognized CODEQL_OVERLAY_DATABASE_MODE value will be ignored and
|
if (overlayAnalysisDisabled && overlayAnalysisDisabled === "true") {
|
||||||
// treated as if the environment variable was not set.
|
logger.info(`Setting overlay database mode to ${overlayDatabaseMode} ` +
|
||||||
if (
|
`because overlay analysis is disabled by a custom repository property.`);
|
||||||
modeEnv === OverlayDatabaseMode.Overlay ||
|
} else {
|
||||||
modeEnv === OverlayDatabaseMode.OverlayBase ||
|
const modeEnv = process.env.CODEQL_OVERLAY_DATABASE_MODE;
|
||||||
modeEnv === OverlayDatabaseMode.None
|
// Any unrecognized CODEQL_OVERLAY_DATABASE_MODE value will be ignored and
|
||||||
) {
|
// treated as if the environment variable was not set.
|
||||||
overlayDatabaseMode = modeEnv;
|
if (
|
||||||
logger.info(
|
modeEnv === OverlayDatabaseMode.Overlay ||
|
||||||
`Setting overlay database mode to ${overlayDatabaseMode} ` +
|
modeEnv === OverlayDatabaseMode.OverlayBase ||
|
||||||
"from the CODEQL_OVERLAY_DATABASE_MODE environment variable.",
|
modeEnv === OverlayDatabaseMode.None
|
||||||
);
|
) {
|
||||||
} else if (
|
overlayDatabaseMode = modeEnv;
|
||||||
await isOverlayAnalysisFeatureEnabled(
|
|
||||||
repository,
|
|
||||||
features,
|
|
||||||
codeql,
|
|
||||||
languages,
|
|
||||||
codeScanningConfig,
|
|
||||||
)
|
|
||||||
) {
|
|
||||||
if (isAnalyzingPullRequest()) {
|
|
||||||
overlayDatabaseMode = OverlayDatabaseMode.Overlay;
|
|
||||||
useOverlayDatabaseCaching = true;
|
|
||||||
logger.info(
|
logger.info(
|
||||||
`Setting overlay database mode to ${overlayDatabaseMode} ` +
|
`Setting overlay database mode to ${overlayDatabaseMode} ` +
|
||||||
"with caching because we are analyzing a pull request.",
|
"from the CODEQL_OVERLAY_DATABASE_MODE environment variable.",
|
||||||
);
|
|
||||||
} else if (await isAnalyzingDefaultBranch()) {
|
|
||||||
overlayDatabaseMode = OverlayDatabaseMode.OverlayBase;
|
|
||||||
useOverlayDatabaseCaching = true;
|
|
||||||
logger.info(
|
|
||||||
`Setting overlay database mode to ${overlayDatabaseMode} ` +
|
|
||||||
"with caching because we are analyzing the default branch.",
|
|
||||||
);
|
);
|
||||||
|
} else if (
|
||||||
|
await isOverlayAnalysisFeatureEnabled(
|
||||||
|
repository,
|
||||||
|
features,
|
||||||
|
codeql,
|
||||||
|
languages,
|
||||||
|
codeScanningConfig,
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
if (isAnalyzingPullRequest()) {
|
||||||
|
overlayDatabaseMode = OverlayDatabaseMode.Overlay;
|
||||||
|
useOverlayDatabaseCaching = true;
|
||||||
|
logger.info(
|
||||||
|
`Setting overlay database mode to ${overlayDatabaseMode} ` +
|
||||||
|
"with caching because we are analyzing a pull request.",
|
||||||
|
);
|
||||||
|
} else if (await isAnalyzingDefaultBranch()) {
|
||||||
|
overlayDatabaseMode = OverlayDatabaseMode.OverlayBase;
|
||||||
|
useOverlayDatabaseCaching = true;
|
||||||
|
logger.info(
|
||||||
|
`Setting overlay database mode to ${overlayDatabaseMode} ` +
|
||||||
|
"with caching because we are analyzing the default branch.",
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -855,6 +862,7 @@ export async function initConfig(
|
|||||||
inputs.sourceRoot,
|
inputs.sourceRoot,
|
||||||
config.buildMode,
|
config.buildMode,
|
||||||
config.computedConfig,
|
config.computedConfig,
|
||||||
|
inputs.repositoryProperties,
|
||||||
logger,
|
logger,
|
||||||
);
|
);
|
||||||
logger.info(
|
logger.info(
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import { GitHubVariant, GitHubVersion } from "../util";
|
|||||||
*/
|
*/
|
||||||
export enum RepositoryPropertyName {
|
export enum RepositoryPropertyName {
|
||||||
EXTRA_QUERIES = "github-codeql-extra-queries",
|
EXTRA_QUERIES = "github-codeql-extra-queries",
|
||||||
|
DISABLE_OVERLAY_ANALYSIS = "github-codeql-disable-overlay-analysis",
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user