From 70db156dcb3b4e4b3cd25cb65cb0a925c14298be Mon Sep 17 00:00:00 2001 From: Henry Mercer Date: Wed, 25 Feb 2026 11:44:45 +0000 Subject: [PATCH] Add diagnostic when overlay disabled by repo property --- lib/init-action.js | 32 +++++++++++++++++++++++++++++--- src/config-utils.test.ts | 3 +++ src/config-utils.ts | 31 +++++++++++++++++++++++++++++++ 3 files changed, 63 insertions(+), 3 deletions(-) diff --git a/lib/init-action.js b/lib/init-action.js index e85eaeb08..6c9b6d53a 100644 --- a/lib/init-action.js +++ b/lib/init-action.js @@ -106249,6 +106249,7 @@ async function getOverlayDatabaseMode(codeql, features, languages, sourceRoot, b let overlayDatabaseMode = "none" /* None */; let useOverlayDatabaseCaching = false; let skippedDueToCachedStatus = false; + let disabledByRepositoryProperty = false; const modeEnv = process.env.CODEQL_OVERLAY_DATABASE_MODE; if (modeEnv === "overlay" /* Overlay */ || modeEnv === "overlay-base" /* OverlayBase */ || modeEnv === "none" /* None */) { overlayDatabaseMode = modeEnv; @@ -106260,6 +106261,7 @@ async function getOverlayDatabaseMode(codeql, features, languages, sourceRoot, b `Setting overlay database mode to ${"none" /* None */} because the ${"github-codeql-disable-overlay" /* DISABLE_OVERLAY */} repository property is set to true.` ); overlayDatabaseMode = "none" /* None */; + disabledByRepositoryProperty = true; } else if (await isOverlayAnalysisFeatureEnabled( features, codeql, @@ -106312,7 +106314,8 @@ async function getOverlayDatabaseMode(codeql, features, languages, sourceRoot, b const nonOverlayAnalysis = { overlayDatabaseMode: "none" /* None */, useOverlayDatabaseCaching: false, - skippedDueToCachedStatus + skippedDueToCachedStatus, + disabledByRepositoryProperty }; if (overlayDatabaseMode === "none" /* None */) { return nonOverlayAnalysis; @@ -106358,7 +106361,8 @@ async function getOverlayDatabaseMode(codeql, features, languages, sourceRoot, b return { overlayDatabaseMode, useOverlayDatabaseCaching, - skippedDueToCachedStatus + skippedDueToCachedStatus, + disabledByRepositoryProperty }; } function dbLocationOrDefault(dbLocation, tempDir) { @@ -106450,7 +106454,8 @@ async function initConfig(features, inputs) { const { overlayDatabaseMode, useOverlayDatabaseCaching, - skippedDueToCachedStatus: overlaySkippedDueToCachedStatus + skippedDueToCachedStatus: overlaySkippedDueToCachedStatus, + disabledByRepositoryProperty: overlayDisabledByRepositoryProperty } = await getOverlayDatabaseMode( inputs.codeql, inputs.features, @@ -106491,6 +106496,27 @@ Improved incremental analysis will be automatically retried when the next versio ) ); } + if (overlayDisabledByRepositoryProperty) { + addNoLanguageDiagnostic( + config, + makeDiagnostic( + "codeql-action/overlay-disabled-by-repository-property", + "Improved incremental analysis disabled by repository property", + { + attributes: { + languages: config.languages + }, + markdownMessage: `Improved incremental analysis has been disabled because the \`${"github-codeql-disable-overlay" /* DISABLE_OVERLAY */}\` repository property is set to \`true\`. To re-enable improved incremental analysis, set this property to \`false\` or remove it.`, + severity: "note", + visibility: { + cliSummaryTable: true, + statusPage: true, + telemetry: true + } + } + ) + ); + } if (overlayDatabaseMode === "overlay" /* Overlay */ || await shouldPerformDiffInformedAnalysis( inputs.codeql, inputs.features, diff --git a/src/config-utils.test.ts b/src/config-utils.test.ts index 9e0064fe3..769fd14d3 100644 --- a/src/config-utils.test.ts +++ b/src/config-utils.test.ts @@ -1019,6 +1019,7 @@ const getOverlayDatabaseModeMacro = test.macro({ overlayDatabaseMode: OverlayDatabaseMode; useOverlayDatabaseCaching: boolean; skippedDueToCachedStatus?: boolean; + disabledByRepositoryProperty?: boolean; }, ) => { return await withTmpDir(async (tempDir) => { @@ -1092,6 +1093,7 @@ const getOverlayDatabaseModeMacro = test.macro({ t.deepEqual(result, { skippedDueToCachedStatus: false, + disabledByRepositoryProperty: false, ...expected, }); } finally { @@ -1938,6 +1940,7 @@ test( { overlayDatabaseMode: OverlayDatabaseMode.None, useOverlayDatabaseCaching: false, + disabledByRepositoryProperty: true, }, ); diff --git a/src/config-utils.ts b/src/config-utils.ts index 7f2b86a15..0d7e51fb0 100644 --- a/src/config-utils.ts +++ b/src/config-utils.ts @@ -760,10 +760,12 @@ export async function getOverlayDatabaseMode( overlayDatabaseMode: OverlayDatabaseMode; useOverlayDatabaseCaching: boolean; skippedDueToCachedStatus: boolean; + disabledByRepositoryProperty: boolean; }> { let overlayDatabaseMode = OverlayDatabaseMode.None; let useOverlayDatabaseCaching = false; let skippedDueToCachedStatus = false; + let disabledByRepositoryProperty = false; const modeEnv = process.env.CODEQL_OVERLAY_DATABASE_MODE; // Any unrecognized CODEQL_OVERLAY_DATABASE_MODE value will be ignored and @@ -786,6 +788,7 @@ export async function getOverlayDatabaseMode( `because the ${RepositoryPropertyName.DISABLE_OVERLAY} repository property is set to true.`, ); overlayDatabaseMode = OverlayDatabaseMode.None; + disabledByRepositoryProperty = true; } else if ( await isOverlayAnalysisFeatureEnabled( features, @@ -856,6 +859,7 @@ export async function getOverlayDatabaseMode( overlayDatabaseMode: OverlayDatabaseMode.None, useOverlayDatabaseCaching: false, skippedDueToCachedStatus, + disabledByRepositoryProperty, }; if (overlayDatabaseMode === OverlayDatabaseMode.None) { @@ -921,6 +925,7 @@ export async function getOverlayDatabaseMode( overlayDatabaseMode, useOverlayDatabaseCaching, skippedDueToCachedStatus, + disabledByRepositoryProperty, }; } @@ -1071,6 +1076,7 @@ export async function initConfig( overlayDatabaseMode, useOverlayDatabaseCaching, skippedDueToCachedStatus: overlaySkippedDueToCachedStatus, + disabledByRepositoryProperty: overlayDisabledByRepositoryProperty, } = await getOverlayDatabaseMode( inputs.codeql, inputs.features, @@ -1119,6 +1125,31 @@ export async function initConfig( ); } + if (overlayDisabledByRepositoryProperty) { + addNoLanguageDiagnostic( + config, + makeDiagnostic( + "codeql-action/overlay-disabled-by-repository-property", + "Improved incremental analysis disabled by repository property", + { + attributes: { + languages: config.languages, + }, + markdownMessage: + "Improved incremental analysis has been disabled because the " + + `\`${RepositoryPropertyName.DISABLE_OVERLAY}\` repository property is set to \`true\`. ` + + "To re-enable improved incremental analysis, set this property to `false` or remove it.", + severity: "note", + visibility: { + cliSummaryTable: true, + statusPage: true, + telemetry: true, + }, + }, + ), + ); + } + if ( overlayDatabaseMode === OverlayDatabaseMode.Overlay || (await shouldPerformDiffInformedAnalysis(