From e4ffe6f3e5fd5e3777b08846347a9c2c184734a3 Mon Sep 17 00:00:00 2001 From: "Michael B. Gale" Date: Thu, 28 Aug 2025 17:01:22 +0100 Subject: [PATCH] Only specify queries for `run-queries` if both analysis kinds are enabled --- lib/analyze-action.js | 5 ++++- src/analyze.ts | 13 ++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/lib/analyze-action.js b/lib/analyze-action.js index 36b972483..cb0fe5ce5 100644 --- a/lib/analyze-action.js +++ b/lib/analyze-action.js @@ -91615,6 +91615,9 @@ function appendExtraQueryExclusions(extraQueryExclusions, cliConfig) { } return augmentedConfig; } +function isCodeScanningEnabled(config) { + return config.analysisKinds.includes("code-scanning" /* CodeScanning */); +} function isCodeQualityEnabled(config) { return config.analysisKinds.includes("code-quality" /* CodeQuality */); } @@ -93597,7 +93600,7 @@ async function runQueries(sarifFolder, memoryFlag, addSnippetsFlag, threadsFlag, try { const sarifFile = path16.join(sarifFolder, `${language}.sarif`); const queries = []; - if (isCodeQualityEnabled(config)) { + if (isCodeQualityEnabled(config) && isCodeScanningEnabled(config)) { queries.push(getGeneratedSuitePath(config, language)); for (const qualityQuery of codeQualityQueries) { queries.push(resolveQuerySuiteAlias(language, qualityQuery)); diff --git a/src/analyze.ts b/src/analyze.ts index a8ab5ca91..ad9f61401 100644 --- a/src/analyze.ts +++ b/src/analyze.ts @@ -654,8 +654,19 @@ export async function runQueries( try { const sarifFile = path.join(sarifFolder, `${language}.sarif`); + // This should be empty to run only the query suite that was generated when + // the database was initialised. const queries: string[] = []; - if (configUtils.isCodeQualityEnabled(config)) { + + // If both Code Scanning and Code Quality analyses are enabled, the database + // is initialised for Code Scanning. To avoid duplicate work, we want to run + // queries for both analyses at the same time. To do this, we invoke `run-queries` + // once with the generated query suite for Code Scanning + the fixed + // query suite for Code Quality. + if ( + configUtils.isCodeQualityEnabled(config) && + configUtils.isCodeScanningEnabled(config) + ) { queries.push(util.getGeneratedSuitePath(config, language)); for (const qualityQuery of analyses.codeQualityQueries) { queries.push(resolveQuerySuiteAlias(language, qualityQuery));