mirror of
https://github.com/github/codeql-action.git
synced 2026-10-31 01:49:43 +00:00
Add and use helpers for determining analysis config the DB is initialised with
This commit is contained in:
@@ -608,6 +608,16 @@ export function resolveQuerySuiteAlias(
|
||||
return maybeSuite;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the appropriate file extension for the given analysis configuration to the given base filename.
|
||||
*/
|
||||
export function addSarifExtension(
|
||||
analysis: analyses.AnalysisConfig,
|
||||
base: string,
|
||||
): string {
|
||||
return `${base}.${analysis.sarifExtension}`;
|
||||
}
|
||||
|
||||
// Runs queries and creates sarif files in the given folder
|
||||
export async function runQueries(
|
||||
sarifFolder: string,
|
||||
@@ -650,13 +660,16 @@ export async function runQueries(
|
||||
? `--sarif-run-property=incrementalMode=${incrementalMode.join(",")}`
|
||||
: undefined;
|
||||
|
||||
const dbAnalysisConfig = configUtils.getDbAnalysisConfig(config);
|
||||
|
||||
for (const language of config.languages) {
|
||||
try {
|
||||
// If Code Scanning is enabled, then the main SARIF file is always the Code Scanning one.
|
||||
// Otherwise, only Code Quality is enabled, and the main SARIF file is the Code Quality one.
|
||||
const sarifFile = configUtils.isCodeScanningEnabled(config)
|
||||
? path.join(sarifFolder, `${language}.sarif`)
|
||||
: path.join(sarifFolder, `${language}.quality.sarif`);
|
||||
const sarifFile = path.join(
|
||||
sarifFolder,
|
||||
addSarifExtension(dbAnalysisConfig, language),
|
||||
);
|
||||
|
||||
// This should be empty to run only the query suite that was generated when
|
||||
// the database was initialised.
|
||||
@@ -701,7 +714,9 @@ export async function runQueries(
|
||||
configUtils.isCodeScanningEnabled(config) ||
|
||||
configUtils.isCodeQualityEnabled(config)
|
||||
) {
|
||||
logger.startGroup(`Interpreting results for ${language}`);
|
||||
logger.startGroup(
|
||||
`Interpreting ${dbAnalysisConfig.name} results for ${language}`,
|
||||
);
|
||||
|
||||
// If this is a Code Quality analysis, correct the category to one
|
||||
// accepted by the Code Quality backend.
|
||||
@@ -728,14 +743,16 @@ export async function runQueries(
|
||||
configUtils.isCodeQualityEnabled(config) &&
|
||||
configUtils.isCodeScanningEnabled(config)
|
||||
) {
|
||||
logger.info(`Interpreting quality results for ${language}`);
|
||||
logger.info(
|
||||
`Interpreting ${analyses.CodeQuality.name} results for ${language}`,
|
||||
);
|
||||
const qualityCategory = fixCodeQualityCategory(
|
||||
logger,
|
||||
automationDetailsId,
|
||||
);
|
||||
const qualitySarifFile = path.join(
|
||||
sarifFolder,
|
||||
`${language}.quality.sarif`,
|
||||
addSarifExtension(analyses.CodeQuality, language),
|
||||
);
|
||||
qualityAnalysisSummary = await runInterpretResults(
|
||||
language,
|
||||
|
||||
@@ -6,7 +6,13 @@ import * as yaml from "js-yaml";
|
||||
import * as semver from "semver";
|
||||
|
||||
import { isAnalyzingPullRequest } from "./actions-util";
|
||||
import { AnalysisKind, parseAnalysisKinds } from "./analyses";
|
||||
import {
|
||||
AnalysisConfig,
|
||||
AnalysisKind,
|
||||
CodeQuality,
|
||||
CodeScanning,
|
||||
parseAnalysisKinds,
|
||||
} from "./analyses";
|
||||
import * as api from "./api-client";
|
||||
import { CachingKind, getCachingKind } from "./caching-utils";
|
||||
import { type CodeQL } from "./codeql";
|
||||
@@ -1522,3 +1528,28 @@ export function isCodeScanningEnabled(config: Config): boolean {
|
||||
export function isCodeQualityEnabled(config: Config): boolean {
|
||||
return config.analysisKinds.includes(AnalysisKind.CodeQuality);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the analysis kind for which the database is initialised. This is
|
||||
* always `AnalysisKind.CodeScanning` unless `AnalysisKind.CodeScanning` is not enabled.
|
||||
*
|
||||
* @returns Returns `AnalysisKind.CodeScanning` if `AnalysisKind.CodeScanning` is enabled;
|
||||
* otherwise `AnalysisKind.CodeQuality`.
|
||||
*/
|
||||
export function getDbAnalysisKind(config: Config): AnalysisKind {
|
||||
return isCodeScanningEnabled(config)
|
||||
? AnalysisKind.CodeScanning
|
||||
: AnalysisKind.CodeQuality;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the analysis configuration for which the database is initialised. This is
|
||||
* always `CodeScanning` unless `CodeScanning` is not enabled.
|
||||
*
|
||||
* @returns Returns `CodeScanning` if `AnalysisKind.CodeScanning` is enabled; otherwise `CodeQuality`.
|
||||
*/
|
||||
export function getDbAnalysisConfig(config: Config): AnalysisConfig {
|
||||
return getDbAnalysisKind(config) === AnalysisKind.CodeScanning
|
||||
? CodeScanning
|
||||
: CodeQuality;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user