diff --git a/lib/analyze-action.js b/lib/analyze-action.js index d66eb32fd..d15c8977c 100644 --- a/lib/analyze-action.js +++ b/lib/analyze-action.js @@ -94197,6 +94197,9 @@ function generateCodeScanningConfig(originalUserInput, augmentationProperties) { } return augmentedConfig; } +function isCodeScanningEnabled(config) { + return config.analysisKinds.includes("code-scanning" /* CodeScanning */); +} function isCodeQualityEnabled(config) { return config.analysisKinds.includes("code-quality" /* CodeQuality */); } @@ -96179,7 +96182,7 @@ async function runQueries(sarifFolder, memoryFlag, addSnippetsFlag, threadsFlag, try { const sarifFile = path12.join(sarifFolder, `${language}.sarif`); const queries = []; - if (isCodeQualityEnabled(config)) { + if (isCodeQualityEnabled(config) && isCodeScanningEnabled(config)) { queries.push(getGeneratedSuitePath(config, language)); for (const qualityQuery of config.augmentationProperties.qualityQueriesInput) { queries.push(resolveQuerySuiteAlias(language, qualityQuery.uses)); diff --git a/src/analyze.ts b/src/analyze.ts index dad12d78c..b597281f9 100644 --- a/src/analyze.ts +++ b/src/analyze.ts @@ -661,8 +661,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 config.augmentationProperties .qualityQueriesInput) {