Make "feature not enabled" reason more specific

This commit is contained in:
Henry Mercer
2026-03-03 17:17:07 +01:00
parent 9bf973324f
commit 0158d05946
4 changed files with 44 additions and 39 deletions
+10 -9
View File
@@ -106388,9 +106388,9 @@ var OVERLAY_ANALYSIS_CODE_SCANNING_FEATURES = {
rust: "overlay_analysis_code_scanning_rust" /* OverlayAnalysisCodeScanningRust */,
swift: "overlay_analysis_code_scanning_swift" /* OverlayAnalysisCodeScanningSwift */
};
async function isOverlayAnalysisFeatureEnabled(features, codeql, languages, codeScanningConfig) {
async function getOverlayFeatureDisabledReason(features, codeql, languages, codeScanningConfig) {
if (!await features.getValue("overlay_analysis" /* OverlayAnalysis */, codeql)) {
return false;
return "overall-feature-not-enabled" /* OverallFeatureNotEnabled */;
}
let enableForCodeScanningOnly = false;
for (const language of languages) {
@@ -106403,12 +106403,15 @@ async function isOverlayAnalysisFeatureEnabled(features, codeql, languages, code
enableForCodeScanningOnly = true;
continue;
}
return false;
return "language-not-enabled" /* LanguageNotEnabled */;
}
if (enableForCodeScanningOnly) {
return codeScanningConfig["disable-default-queries"] !== true && codeScanningConfig.packs === void 0 && codeScanningConfig.queries === void 0 && codeScanningConfig["query-filters"] === void 0;
const isCodeScanningOnly = codeScanningConfig["disable-default-queries"] !== true && codeScanningConfig.packs === void 0 && codeScanningConfig.queries === void 0 && codeScanningConfig["query-filters"] === void 0;
if (!isCodeScanningOnly) {
return "non-default-queries" /* NonDefaultQueries */;
}
}
return true;
return void 0;
}
function runnerHasSufficientDiskSpace(diskUsage, logger, useV2ResourceChecks) {
const minimumDiskSpaceBytes = useV2ResourceChecks ? OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_V2_BYTES : OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_BYTES;
@@ -106469,12 +106472,12 @@ async function getOverlayDatabaseMode(codeql, features, languages, sourceRoot, b
);
overlayDatabaseMode = "none" /* None */;
disabledReason = "disabled-by-repository-property" /* DisabledByRepositoryProperty */;
} else if (await isOverlayAnalysisFeatureEnabled(
} else if ((disabledReason = await getOverlayFeatureDisabledReason(
features,
codeql,
languages,
codeScanningConfig
)) {
)) === void 0) {
const performResourceChecks = !await features.getValue(
"overlay_analysis_skip_resource_checks" /* OverlayAnalysisSkipResourceChecks */,
codeql
@@ -106520,8 +106523,6 @@ async function getOverlayDatabaseMode(codeql, features, languages, sourceRoot, b
`Setting overlay database mode to ${overlayDatabaseMode} with caching because we are analyzing the default branch.`
);
}
} else {
disabledReason = "feature-not-enabled" /* FeatureNotEnabled */;
}
const disabledResult = (reason) => ({
overlayDatabaseMode: "none" /* None */,
+16 -16
View File
@@ -1151,7 +1151,7 @@ test(
{
overlayDatabaseMode: OverlayDatabaseMode.None,
useOverlayDatabaseCaching: false,
disabledReason: OverlayDisabledReason.FeatureNotEnabled,
disabledReason: OverlayDisabledReason.OverallFeatureNotEnabled,
},
);
@@ -1460,7 +1460,7 @@ test(
{
overlayDatabaseMode: OverlayDatabaseMode.None,
useOverlayDatabaseCaching: false,
disabledReason: OverlayDisabledReason.FeatureNotEnabled,
disabledReason: OverlayDisabledReason.NonDefaultQueries,
},
);
@@ -1481,7 +1481,7 @@ test(
{
overlayDatabaseMode: OverlayDatabaseMode.None,
useOverlayDatabaseCaching: false,
disabledReason: OverlayDisabledReason.FeatureNotEnabled,
disabledReason: OverlayDisabledReason.NonDefaultQueries,
},
);
@@ -1502,7 +1502,7 @@ test(
{
overlayDatabaseMode: OverlayDatabaseMode.None,
useOverlayDatabaseCaching: false,
disabledReason: OverlayDisabledReason.FeatureNotEnabled,
disabledReason: OverlayDisabledReason.NonDefaultQueries,
},
);
@@ -1523,7 +1523,7 @@ test(
{
overlayDatabaseMode: OverlayDatabaseMode.None,
useOverlayDatabaseCaching: false,
disabledReason: OverlayDisabledReason.FeatureNotEnabled,
disabledReason: OverlayDisabledReason.NonDefaultQueries,
},
);
@@ -1538,7 +1538,7 @@ test(
{
overlayDatabaseMode: OverlayDatabaseMode.None,
useOverlayDatabaseCaching: false,
disabledReason: OverlayDisabledReason.FeatureNotEnabled,
disabledReason: OverlayDisabledReason.OverallFeatureNotEnabled,
},
);
@@ -1553,7 +1553,7 @@ test(
{
overlayDatabaseMode: OverlayDatabaseMode.None,
useOverlayDatabaseCaching: false,
disabledReason: OverlayDisabledReason.FeatureNotEnabled,
disabledReason: OverlayDisabledReason.OverallFeatureNotEnabled,
},
);
@@ -1568,7 +1568,7 @@ test(
{
overlayDatabaseMode: OverlayDatabaseMode.None,
useOverlayDatabaseCaching: false,
disabledReason: OverlayDisabledReason.FeatureNotEnabled,
disabledReason: OverlayDisabledReason.LanguageNotEnabled,
},
);
@@ -1757,7 +1757,7 @@ test(
{
overlayDatabaseMode: OverlayDatabaseMode.None,
useOverlayDatabaseCaching: false,
disabledReason: OverlayDisabledReason.FeatureNotEnabled,
disabledReason: OverlayDisabledReason.NonDefaultQueries,
},
);
@@ -1778,7 +1778,7 @@ test(
{
overlayDatabaseMode: OverlayDatabaseMode.None,
useOverlayDatabaseCaching: false,
disabledReason: OverlayDisabledReason.FeatureNotEnabled,
disabledReason: OverlayDisabledReason.NonDefaultQueries,
},
);
@@ -1799,7 +1799,7 @@ test(
{
overlayDatabaseMode: OverlayDatabaseMode.None,
useOverlayDatabaseCaching: false,
disabledReason: OverlayDisabledReason.FeatureNotEnabled,
disabledReason: OverlayDisabledReason.NonDefaultQueries,
},
);
@@ -1820,7 +1820,7 @@ test(
{
overlayDatabaseMode: OverlayDatabaseMode.None,
useOverlayDatabaseCaching: false,
disabledReason: OverlayDisabledReason.FeatureNotEnabled,
disabledReason: OverlayDisabledReason.NonDefaultQueries,
},
);
@@ -1835,7 +1835,7 @@ test(
{
overlayDatabaseMode: OverlayDatabaseMode.None,
useOverlayDatabaseCaching: false,
disabledReason: OverlayDisabledReason.FeatureNotEnabled,
disabledReason: OverlayDisabledReason.OverallFeatureNotEnabled,
},
);
@@ -1850,7 +1850,7 @@ test(
{
overlayDatabaseMode: OverlayDatabaseMode.None,
useOverlayDatabaseCaching: false,
disabledReason: OverlayDisabledReason.FeatureNotEnabled,
disabledReason: OverlayDisabledReason.OverallFeatureNotEnabled,
},
);
@@ -1865,7 +1865,7 @@ test(
{
overlayDatabaseMode: OverlayDatabaseMode.None,
useOverlayDatabaseCaching: false,
disabledReason: OverlayDisabledReason.FeatureNotEnabled,
disabledReason: OverlayDisabledReason.LanguageNotEnabled,
},
);
@@ -2057,7 +2057,7 @@ for (const language in KnownLanguage) {
{
overlayDatabaseMode: OverlayDatabaseMode.None,
useOverlayDatabaseCaching: false,
disabledReason: OverlayDisabledReason.FeatureNotEnabled,
disabledReason: OverlayDisabledReason.LanguageNotEnabled,
},
);
}
+12 -12
View File
@@ -653,14 +653,14 @@ const OVERLAY_ANALYSIS_CODE_SCANNING_FEATURES: Record<Language, Feature> = {
swift: Feature.OverlayAnalysisCodeScanningSwift,
};
async function isOverlayAnalysisFeatureEnabled(
async function getOverlayFeatureDisabledReason(
features: FeatureEnablement,
codeql: CodeQL,
languages: Language[],
codeScanningConfig: UserConfig,
): Promise<boolean> {
): Promise<OverlayDisabledReason | undefined> {
if (!(await features.getValue(Feature.OverlayAnalysis, codeql))) {
return false;
return OverlayDisabledReason.OverallFeatureNotEnabled;
}
let enableForCodeScanningOnly = false;
for (const language of languages) {
@@ -677,20 +677,22 @@ async function isOverlayAnalysisFeatureEnabled(
enableForCodeScanningOnly = true;
continue;
}
return false;
return OverlayDisabledReason.LanguageNotEnabled;
}
if (enableForCodeScanningOnly) {
// A code-scanning configuration runs only the (default) code-scanning suite
// if the default queries are not disabled, and no packs, queries, or
// query-filters are specified.
return (
const isCodeScanningOnly =
codeScanningConfig["disable-default-queries"] !== true &&
codeScanningConfig.packs === undefined &&
codeScanningConfig.queries === undefined &&
codeScanningConfig["query-filters"] === undefined
);
codeScanningConfig["query-filters"] === undefined;
if (!isCodeScanningOnly) {
return OverlayDisabledReason.NonDefaultQueries;
}
}
return true;
return undefined;
}
/** Checks if the runner has enough disk space for overlay analysis. */
@@ -837,12 +839,12 @@ export async function getOverlayDatabaseMode(
overlayDatabaseMode = OverlayDatabaseMode.None;
disabledReason = OverlayDisabledReason.DisabledByRepositoryProperty;
} else if (
await isOverlayAnalysisFeatureEnabled(
(disabledReason = await getOverlayFeatureDisabledReason(
features,
codeql,
languages,
codeScanningConfig,
)
)) === undefined
) {
const performResourceChecks = !(await features.getValue(
Feature.OverlayAnalysisSkipResourceChecks,
@@ -903,8 +905,6 @@ export async function getOverlayDatabaseMode(
"with caching because we are analyzing the default branch.",
);
}
} else {
disabledReason = OverlayDisabledReason.FeatureNotEnabled;
}
const disabledResult = (reason: OverlayDisabledReason | undefined) => ({
+6 -2
View File
@@ -12,8 +12,12 @@ import { RepositoryPropertyName } from "../feature-flags/properties";
export enum OverlayDisabledReason {
/** Overlay analysis was disabled by a repository property. */
DisabledByRepositoryProperty = "disabled-by-repository-property",
/** Overlay analysis feature was not enabled. */
FeatureNotEnabled = "feature-not-enabled",
/** The top-level overlay analysis feature flag is not enabled. */
OverallFeatureNotEnabled = "overall-feature-not-enabled",
/** Overlay analysis is not enabled for one or more of the configured languages. */
LanguageNotEnabled = "language-not-enabled",
/** Overlay analysis is restricted to code-scanning-only configs but the config uses custom queries or packs. */
NonDefaultQueries = "non-default-queries",
/** The build mode is incompatible with overlay analysis. */
IncompatibleBuildMode = "incompatible-build-mode",
/** The CodeQL CLI version is too old to support overlay analysis. */