Skip to content

Commit ad10347

Browse files
committed
Add support for disabling overlay analysis using custom repo property
1 parent 0c5185d commit ad10347

File tree

2 files changed

+43
-34
lines changed

2 files changed

+43
-34
lines changed

src/config-utils.ts

Lines changed: 42 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import {
2525
import { shouldPerformDiffInformedAnalysis } from "./diff-informed-analysis-utils";
2626
import * as errorMessages from "./error-messages";
2727
import { Feature, FeatureEnablement } from "./feature-flags";
28-
import { RepositoryProperties } from "./feature-flags/properties";
28+
import { RepositoryProperties, RepositoryPropertyName } from "./feature-flags/properties";
2929
import { getGitRoot, isAnalyzingDefaultBranch } from "./git-utils";
3030
import { KnownLanguage, Language } from "./languages";
3131
import { Logger } from "./logging";
@@ -656,6 +656,7 @@ export async function getOverlayDatabaseMode(
656656
sourceRoot: string,
657657
buildMode: BuildMode | undefined,
658658
codeScanningConfig: UserConfig,
659+
repositoryProperties: RepositoryProperties,
659660
logger: Logger,
660661
): Promise<{
661662
overlayDatabaseMode: OverlayDatabaseMode;
@@ -664,42 +665,48 @@ export async function getOverlayDatabaseMode(
664665
let overlayDatabaseMode = OverlayDatabaseMode.None;
665666
let useOverlayDatabaseCaching = false;
666667

667-
const modeEnv = process.env.CODEQL_OVERLAY_DATABASE_MODE;
668-
// Any unrecognized CODEQL_OVERLAY_DATABASE_MODE value will be ignored and
669-
// treated as if the environment variable was not set.
670-
if (
671-
modeEnv === OverlayDatabaseMode.Overlay ||
672-
modeEnv === OverlayDatabaseMode.OverlayBase ||
673-
modeEnv === OverlayDatabaseMode.None
674-
) {
675-
overlayDatabaseMode = modeEnv;
676-
logger.info(
677-
`Setting overlay database mode to ${overlayDatabaseMode} ` +
678-
"from the CODEQL_OVERLAY_DATABASE_MODE environment variable.",
679-
);
680-
} else if (
681-
await isOverlayAnalysisFeatureEnabled(
682-
repository,
683-
features,
684-
codeql,
685-
languages,
686-
codeScanningConfig,
687-
)
688-
) {
689-
if (isAnalyzingPullRequest()) {
690-
overlayDatabaseMode = OverlayDatabaseMode.Overlay;
691-
useOverlayDatabaseCaching = true;
692-
logger.info(
693-
`Setting overlay database mode to ${overlayDatabaseMode} ` +
694-
"with caching because we are analyzing a pull request.",
695-
);
696-
} else if (await isAnalyzingDefaultBranch()) {
697-
overlayDatabaseMode = OverlayDatabaseMode.OverlayBase;
698-
useOverlayDatabaseCaching = true;
668+
const overlayAnalysisDisabled = repositoryProperties[RepositoryPropertyName.DISABLE_OVERLAY_ANALYSIS];
669+
if (overlayAnalysisDisabled) {
670+
logger.info(`Setting overlay database mode to ${overlayDatabaseMode} ` +
671+
`because overlay analysis is disabled by a custom repository property.`);
672+
} else {
673+
const modeEnv = process.env.CODEQL_OVERLAY_DATABASE_MODE;
674+
// Any unrecognized CODEQL_OVERLAY_DATABASE_MODE value will be ignored and
675+
// treated as if the environment variable was not set.
676+
if (
677+
modeEnv === OverlayDatabaseMode.Overlay ||
678+
modeEnv === OverlayDatabaseMode.OverlayBase ||
679+
modeEnv === OverlayDatabaseMode.None
680+
) {
681+
overlayDatabaseMode = modeEnv;
699682
logger.info(
700683
`Setting overlay database mode to ${overlayDatabaseMode} ` +
701-
"with caching because we are analyzing the default branch.",
684+
"from the CODEQL_OVERLAY_DATABASE_MODE environment variable.",
702685
);
686+
} else if (
687+
await isOverlayAnalysisFeatureEnabled(
688+
repository,
689+
features,
690+
codeql,
691+
languages,
692+
codeScanningConfig,
693+
)
694+
) {
695+
if (isAnalyzingPullRequest()) {
696+
overlayDatabaseMode = OverlayDatabaseMode.Overlay;
697+
useOverlayDatabaseCaching = true;
698+
logger.info(
699+
`Setting overlay database mode to ${overlayDatabaseMode} ` +
700+
"with caching because we are analyzing a pull request.",
701+
);
702+
} else if (await isAnalyzingDefaultBranch()) {
703+
overlayDatabaseMode = OverlayDatabaseMode.OverlayBase;
704+
useOverlayDatabaseCaching = true;
705+
logger.info(
706+
`Setting overlay database mode to ${overlayDatabaseMode} ` +
707+
"with caching because we are analyzing the default branch.",
708+
);
709+
}
703710
}
704711
}
705712

@@ -855,6 +862,7 @@ export async function initConfig(
855862
inputs.sourceRoot,
856863
config.buildMode,
857864
config.computedConfig,
865+
inputs.repositoryProperties,
858866
logger,
859867
);
860868
logger.info(

src/feature-flags/properties.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { GitHubVariant, GitHubVersion } from "../util";
88
*/
99
export enum RepositoryPropertyName {
1010
EXTRA_QUERIES = "github-codeql-extra-queries",
11+
DISABLE_OVERLAY_ANALYSIS = "github-codeql-disable-overlay-analysis",
1112
}
1213

1314
/**

0 commit comments

Comments
 (0)