Skip to content

Commit 8ea50b8

Browse files
committed
Add and use helpers for determining analysis config the DB is initialised with
1 parent 04bb074 commit 8ea50b8

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,
@@ -650,13 +660,16 @@ export async function runQueries(
650660
? `--sarif-run-property=incrementalMode=${incrementalMode.join(",")}`
651661
: undefined;
652662

663+
const dbAnalysisConfig = configUtils.getDbAnalysisConfig(config);
664+
653665
for (const language of config.languages) {
654666
try {
655667
// If Code Scanning is enabled, then the main SARIF file is always the Code Scanning one.
656668
// Otherwise, only Code Quality is enabled, and the main SARIF file is the Code Quality one.
657-
const sarifFile = configUtils.isCodeScanningEnabled(config)
658-
? path.join(sarifFolder, `${language}.sarif`)
659-
: path.join(sarifFolder, `${language}.quality.sarif`);
669+
const sarifFile = path.join(
670+
sarifFolder,
671+
addSarifExtension(dbAnalysisConfig, language),
672+
);
660673

661674
// This should be empty to run only the query suite that was generated when
662675
// the database was initialised.
@@ -701,7 +714,9 @@ export async function runQueries(
701714
configUtils.isCodeScanningEnabled(config) ||
702715
configUtils.isCodeQualityEnabled(config)
703716
) {
704-
logger.startGroup(`Interpreting results for ${language}`);
717+
logger.startGroup(
718+
`Interpreting ${dbAnalysisConfig.name} results for ${language}`,
719+
);
705720

706721
// If this is a Code Quality analysis, correct the category to one
707722
// accepted by the Code Quality backend.
@@ -728,14 +743,16 @@ export async function runQueries(
728743
configUtils.isCodeQualityEnabled(config) &&
729744
configUtils.isCodeScanningEnabled(config)
730745
) {
731-
logger.info(`Interpreting quality results for ${language}`);
746+
logger.info(
747+
`Interpreting ${analyses.CodeQuality.name} results for ${language}`,
748+
);
732749
const qualityCategory = fixCodeQualityCategory(
733750
logger,
734751
automationDetailsId,
735752
);
736753
const qualitySarifFile = path.join(
737754
sarifFolder,
738-
`${language}.quality.sarif`,
755+
addSarifExtension(analyses.CodeQuality, language),
739756
);
740757
qualityAnalysisSummary = await runInterpretResults(
741758
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";
@@ -1522,3 +1528,28 @@ export function isCodeScanningEnabled(config: Config): boolean {
15221528
export function isCodeQualityEnabled(config: Config): boolean {
15231529
return config.analysisKinds.includes(AnalysisKind.CodeQuality);
15241530
}
1531+
1532+
/**
1533+
* Returns the analysis kind for which the database is initialised. This is
1534+
* always `AnalysisKind.CodeScanning` unless `AnalysisKind.CodeScanning` is not enabled.
1535+
*
1536+
* @returns Returns `AnalysisKind.CodeScanning` if `AnalysisKind.CodeScanning` is enabled;
1537+
* otherwise `AnalysisKind.CodeQuality`.
1538+
*/
1539+
export function getDbAnalysisKind(config: Config): AnalysisKind {
1540+
return isCodeScanningEnabled(config)
1541+
? AnalysisKind.CodeScanning
1542+
: AnalysisKind.CodeQuality;
1543+
}
1544+
1545+
/**
1546+
* Returns the analysis configuration for which the database is initialised. This is
1547+
* always `CodeScanning` unless `CodeScanning` is not enabled.
1548+
*
1549+
* @returns Returns `CodeScanning` if `AnalysisKind.CodeScanning` is enabled; otherwise `CodeQuality`.
1550+
*/
1551+
export function getDbAnalysisConfig(config: Config): AnalysisConfig {
1552+
return getDbAnalysisKind(config) === AnalysisKind.CodeScanning
1553+
? CodeScanning
1554+
: CodeQuality;
1555+
}

0 commit comments

Comments
 (0)