Skip to content

Commit 5599403

Browse files
committed
Add and use helpers for determining analysis config the DB is initialised with
1 parent 50b1a4a commit 5599403

File tree

3 files changed

+76
-11
lines changed

3 files changed

+76
-11
lines changed

lib/analyze-action.js

Lines changed: 21 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/analyze.ts

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -608,6 +608,16 @@ export function resolveQuerySuiteAlias(
608608
return maybeSuite;
609609
}
610610

611+
/**
612+
* Adds the appropriate file extension for the given analysis configuration to the given base filename.
613+
*/
614+
export function addSarifExtension(
615+
analysis: analyses.AnalysisConfig,
616+
base: string,
617+
): string {
618+
return `${base}.${analysis.sarifExtension}`;
619+
}
620+
611621
// Runs queries and creates sarif files in the given folder
612622
export async function runQueries(
613623
sarifFolder: string,
@@ -658,13 +668,16 @@ export async function runQueries(
658668
? `--sarif-run-property=incrementalMode=${incrementalMode.join(",")}`
659669
: undefined;
660670

671+
const dbAnalysisConfig = configUtils.getDbAnalysisConfig(config);
672+
661673
for (const language of config.languages) {
662674
try {
663675
// If Code Scanning is enabled, then the main SARIF file is always the Code Scanning one.
664676
// Otherwise, only Code Quality is enabled, and the main SARIF file is the Code Quality one.
665-
const sarifFile = configUtils.isCodeScanningEnabled(config)
666-
? path.join(sarifFolder, `${language}.sarif`)
667-
: path.join(sarifFolder, `${language}.quality.sarif`);
677+
const sarifFile = path.join(
678+
sarifFolder,
679+
addSarifExtension(dbAnalysisConfig, language),
680+
);
668681

669682
// This should be empty to run only the query suite that was generated when
670683
// the database was initialised.
@@ -709,7 +722,9 @@ export async function runQueries(
709722
configUtils.isCodeScanningEnabled(config) ||
710723
configUtils.isCodeQualityEnabled(config)
711724
) {
712-
logger.startGroup(`Interpreting results for ${language}`);
725+
logger.startGroup(
726+
`Interpreting ${dbAnalysisConfig.name} results for ${language}`,
727+
);
713728

714729
// If this is a Code Quality analysis, correct the category to one
715730
// accepted by the Code Quality backend.
@@ -736,14 +751,16 @@ export async function runQueries(
736751
configUtils.isCodeQualityEnabled(config) &&
737752
configUtils.isCodeScanningEnabled(config)
738753
) {
739-
logger.info(`Interpreting quality results for ${language}`);
754+
logger.info(
755+
`Interpreting ${analyses.CodeQuality.name} results for ${language}`,
756+
);
740757
const qualityCategory = fixCodeQualityCategory(
741758
logger,
742759
automationDetailsId,
743760
);
744761
const qualitySarifFile = path.join(
745762
sarifFolder,
746-
`${language}.quality.sarif`,
763+
addSarifExtension(analyses.CodeQuality, language),
747764
);
748765
qualityAnalysisSummary = await runInterpretResults(
749766
language,

src/config-utils.ts

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,13 @@ import * as yaml from "js-yaml";
66
import * as semver from "semver";
77

88
import { isAnalyzingPullRequest } from "./actions-util";
9-
import { AnalysisKind, parseAnalysisKinds } from "./analyses";
9+
import {
10+
AnalysisConfig,
11+
AnalysisKind,
12+
CodeQuality,
13+
CodeScanning,
14+
parseAnalysisKinds,
15+
} from "./analyses";
1016
import * as api from "./api-client";
1117
import { CachingKind, getCachingKind } from "./caching-utils";
1218
import { type CodeQL } from "./codeql";
@@ -1488,3 +1494,28 @@ export function isCodeScanningEnabled(config: Config): boolean {
14881494
export function isCodeQualityEnabled(config: Config): boolean {
14891495
return config.analysisKinds.includes(AnalysisKind.CodeQuality);
14901496
}
1497+
1498+
/**
1499+
* Returns the analysis kind for which the database is initialised. This is
1500+
* always `AnalysisKind.CodeScanning` unless `AnalysisKind.CodeScanning` is not enabled.
1501+
*
1502+
* @returns Returns `AnalysisKind.CodeScanning` if `AnalysisKind.CodeScanning` is enabled;
1503+
* otherwise `AnalysisKind.CodeQuality`.
1504+
*/
1505+
export function getDbAnalysisKind(config: Config): AnalysisKind {
1506+
return isCodeScanningEnabled(config)
1507+
? AnalysisKind.CodeScanning
1508+
: AnalysisKind.CodeQuality;
1509+
}
1510+
1511+
/**
1512+
* Returns the analysis configuration for which the database is initialised. This is
1513+
* always `CodeScanning` unless `CodeScanning` is not enabled.
1514+
*
1515+
* @returns Returns `CodeScanning` if `AnalysisKind.CodeScanning` is enabled; otherwise `CodeQuality`.
1516+
*/
1517+
export function getDbAnalysisConfig(config: Config): AnalysisConfig {
1518+
return getDbAnalysisKind(config) === AnalysisKind.CodeScanning
1519+
? CodeScanning
1520+
: CodeQuality;
1521+
}

0 commit comments

Comments
 (0)