mirror of
https://github.com/github/codeql-action.git
synced 2026-04-22 06:48:48 +00:00
Merge pull request #3055 from github/mbg/cq/telemetry
Report which analysis kinds are enabled in status reports
This commit is contained in:
Generated
+9
@@ -0,0 +1,9 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.AnalysisKind = void 0;
|
||||
var AnalysisKind;
|
||||
(function (AnalysisKind) {
|
||||
AnalysisKind["CodeScanning"] = "code-scanning";
|
||||
AnalysisKind["CodeQuality"] = "code-quality";
|
||||
})(AnalysisKind || (exports.AnalysisKind = AnalysisKind = {}));
|
||||
//# sourceMappingURL=analyses.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"analyses.js","sourceRoot":"","sources":["../src/analyses.ts"],"names":[],"mappings":";;;AAAA,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,8CAA8B,CAAA;IAC9B,4CAA4B,CAAA;AAC9B,CAAC,EAHW,YAAY,4BAAZ,YAAY,QAGvB"}
|
||||
Generated
+1
-1
@@ -219,7 +219,7 @@ async function run() {
|
||||
if (runStats && actionsUtil.getUploadValue(uploadInput) === "always") {
|
||||
uploadResult = await uploadLib.uploadFiles(outputDir, actionsUtil.getRequiredInput("checkout_path"), actionsUtil.getOptionalInput("category"), features, logger, uploadLib.CodeScanningTarget);
|
||||
core.setOutput("sarif-id", uploadResult.sarifID);
|
||||
if (config.augmentationProperties.qualityQueriesInput !== undefined) {
|
||||
if ((0, config_utils_1.isCodeQualityEnabled)(config)) {
|
||||
const qualityUploadResult = await uploadLib.uploadFiles(outputDir, actionsUtil.getRequiredInput("checkout_path"), actionsUtil.fixCodeQualityCategory(logger, actionsUtil.getOptionalInput("category")), features, logger, uploadLib.CodeQualityTarget);
|
||||
core.setOutput("quality-sarif-id", qualityUploadResult.sarifID);
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
Generated
+3
-2
@@ -53,6 +53,7 @@ const yaml = __importStar(require("js-yaml"));
|
||||
const actions_util_1 = require("./actions-util");
|
||||
const api_client_1 = require("./api-client");
|
||||
const autobuild_1 = require("./autobuild");
|
||||
const configUtils = __importStar(require("./config-utils"));
|
||||
const dependency_caching_1 = require("./dependency-caching");
|
||||
const diagnostics_1 = require("./diagnostics");
|
||||
const diff_informed_analysis_utils_1 = require("./diff-informed-analysis-utils");
|
||||
@@ -441,7 +442,7 @@ async function runQueries(sarifFolder, memoryFlag, addSnippetsFlag, threadsFlag,
|
||||
try {
|
||||
const sarifFile = path.join(sarifFolder, `${language}.sarif`);
|
||||
const queries = [];
|
||||
if (config.augmentationProperties.qualityQueriesInput !== undefined) {
|
||||
if (configUtils.isCodeQualityEnabled(config)) {
|
||||
queries.push(util.getGeneratedSuitePath(config, language));
|
||||
for (const qualityQuery of config.augmentationProperties
|
||||
.qualityQueriesInput) {
|
||||
@@ -465,7 +466,7 @@ async function runQueries(sarifFolder, memoryFlag, addSnippetsFlag, threadsFlag,
|
||||
const startTimeInterpretResults = new Date();
|
||||
const analysisSummary = await runInterpretResults(language, undefined, sarifFile, config.debugMode, automationDetailsId);
|
||||
let qualityAnalysisSummary;
|
||||
if (config.augmentationProperties.qualityQueriesInput !== undefined) {
|
||||
if (configUtils.isCodeQualityEnabled(config)) {
|
||||
logger.info(`Interpreting quality results for ${language}`);
|
||||
const qualityCategory = (0, actions_util_1.fixCodeQualityCategory)(logger, automationDetailsId);
|
||||
const qualitySarifFile = path.join(sarifFolder, `${language}.quality.sarif`);
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
Generated
+7
@@ -62,6 +62,7 @@ exports.generateRegistries = generateRegistries;
|
||||
exports.wrapEnvironment = wrapEnvironment;
|
||||
exports.parseBuildModeInput = parseBuildModeInput;
|
||||
exports.generateCodeScanningConfig = generateCodeScanningConfig;
|
||||
exports.isCodeQualityEnabled = isCodeQualityEnabled;
|
||||
const fs = __importStar(require("fs"));
|
||||
const path = __importStar(require("path"));
|
||||
const perf_hooks_1 = require("perf_hooks");
|
||||
@@ -920,4 +921,10 @@ function generateCodeScanningConfig(originalUserInput, augmentationProperties) {
|
||||
}
|
||||
return augmentedConfig;
|
||||
}
|
||||
/**
|
||||
* Returns `true` if Code Quality analysis is enabled, or `false` if not.
|
||||
*/
|
||||
function isCodeQualityEnabled(config) {
|
||||
return config.augmentationProperties.qualityQueriesInput !== undefined;
|
||||
}
|
||||
//# sourceMappingURL=config-utils.js.map
|
||||
File diff suppressed because one or more lines are too long
Generated
+13
@@ -43,7 +43,9 @@ exports.sendStatusReport = sendStatusReport;
|
||||
const os = __importStar(require("os"));
|
||||
const core = __importStar(require("@actions/core"));
|
||||
const actions_util_1 = require("./actions-util");
|
||||
const analyses_1 = require("./analyses");
|
||||
const api_client_1 = require("./api-client");
|
||||
const config_utils_1 = require("./config-utils");
|
||||
const doc_url_1 = require("./doc-url");
|
||||
const environment_1 = require("./environment");
|
||||
const git_utils_1 = require("./git-utils");
|
||||
@@ -156,12 +158,23 @@ async function createStatusReportBase(actionName, status, actionStartedAt, confi
|
||||
core.exportVariable(environment_1.EnvVar.TESTING_ENVIRONMENT, testingEnvironment);
|
||||
}
|
||||
const isSteadyStateDefaultSetupRun = process.env["CODE_SCANNING_IS_STEADY_STATE_DEFAULT_SETUP"] === "true";
|
||||
// We leave `analyses` empty if we don't have a `config`, so that we don't
|
||||
// accidentally report only `code-scanning` when we can't tell whether `code-quality`
|
||||
// is enabled or not.
|
||||
const analysisKinds = [];
|
||||
if (config !== undefined) {
|
||||
analysisKinds.push(analyses_1.AnalysisKind.CodeScanning);
|
||||
if ((0, config_utils_1.isCodeQualityEnabled)(config)) {
|
||||
analysisKinds.push(analyses_1.AnalysisKind.CodeQuality);
|
||||
}
|
||||
}
|
||||
const statusReport = {
|
||||
action_name: actionName,
|
||||
action_oid: "unknown", // TODO decide if it's possible to fill this in
|
||||
action_ref: actionRef,
|
||||
action_started_at: actionStartedAt.toISOString(),
|
||||
action_version: (0, actions_util_1.getActionVersion)(),
|
||||
analysis_kinds: analysisKinds.join(","),
|
||||
analysis_key,
|
||||
build_mode: config?.buildMode,
|
||||
commit_oid: commitOid,
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,4 @@
|
||||
export enum AnalysisKind {
|
||||
CodeScanning = "code-scanning",
|
||||
CodeQuality = "code-quality",
|
||||
}
|
||||
@@ -18,7 +18,7 @@ import { getApiDetails, getGitHubVersion } from "./api-client";
|
||||
import { runAutobuild } from "./autobuild";
|
||||
import { getTotalCacheSize, shouldStoreCache } from "./caching-utils";
|
||||
import { getCodeQL } from "./codeql";
|
||||
import { Config, getConfig } from "./config-utils";
|
||||
import { Config, getConfig, isCodeQualityEnabled } from "./config-utils";
|
||||
import { uploadDatabases } from "./database-upload";
|
||||
import { uploadDependencyCaches } from "./dependency-caching";
|
||||
import { getDiffInformedAnalysisBranches } from "./diff-informed-analysis-utils";
|
||||
@@ -336,7 +336,7 @@ async function run() {
|
||||
);
|
||||
core.setOutput("sarif-id", uploadResult.sarifID);
|
||||
|
||||
if (config.augmentationProperties.qualityQueriesInput !== undefined) {
|
||||
if (isCodeQualityEnabled(config)) {
|
||||
const qualityUploadResult = await uploadLib.uploadFiles(
|
||||
outputDir,
|
||||
actionsUtil.getRequiredInput("checkout_path"),
|
||||
|
||||
+2
-2
@@ -662,7 +662,7 @@ export async function runQueries(
|
||||
const sarifFile = path.join(sarifFolder, `${language}.sarif`);
|
||||
|
||||
const queries: string[] = [];
|
||||
if (config.augmentationProperties.qualityQueriesInput !== undefined) {
|
||||
if (configUtils.isCodeQualityEnabled(config)) {
|
||||
queries.push(util.getGeneratedSuitePath(config, language));
|
||||
for (const qualityQuery of config.augmentationProperties
|
||||
.qualityQueriesInput) {
|
||||
@@ -695,7 +695,7 @@ export async function runQueries(
|
||||
);
|
||||
|
||||
let qualityAnalysisSummary: string | undefined;
|
||||
if (config.augmentationProperties.qualityQueriesInput !== undefined) {
|
||||
if (configUtils.isCodeQualityEnabled(config)) {
|
||||
logger.info(`Interpreting quality results for ${language}`);
|
||||
const qualityCategory = fixCodeQualityCategory(
|
||||
logger,
|
||||
|
||||
@@ -1468,3 +1468,12 @@ export function generateCodeScanningConfig(
|
||||
}
|
||||
return augmentedConfig;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns `true` if Code Quality analysis is enabled, or `false` if not.
|
||||
*/
|
||||
export function isCodeQualityEnabled(config: Config): config is Config & {
|
||||
augmentationProperties: { qualityQueriesInput: string };
|
||||
} {
|
||||
return config.augmentationProperties.qualityQueriesInput !== undefined;
|
||||
}
|
||||
|
||||
+18
-1
@@ -11,8 +11,9 @@ import {
|
||||
getRequiredInput,
|
||||
isSelfHostedRunner,
|
||||
} from "./actions-util";
|
||||
import { AnalysisKind } from "./analyses";
|
||||
import { getAnalysisKey, getApiClient } from "./api-client";
|
||||
import { type Config } from "./config-utils";
|
||||
import { isCodeQualityEnabled, type Config } from "./config-utils";
|
||||
import { DocUrl } from "./doc-url";
|
||||
import { EnvVar } from "./environment";
|
||||
import { getRef } from "./git-utils";
|
||||
@@ -91,6 +92,8 @@ export interface StatusReportBase {
|
||||
action_version: string;
|
||||
/** The name of the Actions event that triggered the workflow. */
|
||||
actions_event_name?: string;
|
||||
/** Comma-separated list of the kinds of analyses we are performing. */
|
||||
analysis_kinds?: string;
|
||||
/** Analysis key, normally composed from the workflow path and job name. */
|
||||
analysis_key: string;
|
||||
/** Build mode, if specified. */
|
||||
@@ -287,12 +290,26 @@ export async function createStatusReportBase(
|
||||
const isSteadyStateDefaultSetupRun =
|
||||
process.env["CODE_SCANNING_IS_STEADY_STATE_DEFAULT_SETUP"] === "true";
|
||||
|
||||
// We leave `analyses` empty if we don't have a `config`, so that we don't
|
||||
// accidentally report only `code-scanning` when we can't tell whether `code-quality`
|
||||
// is enabled or not.
|
||||
const analysisKinds: AnalysisKind[] = [];
|
||||
|
||||
if (config !== undefined) {
|
||||
analysisKinds.push(AnalysisKind.CodeScanning);
|
||||
|
||||
if (isCodeQualityEnabled(config)) {
|
||||
analysisKinds.push(AnalysisKind.CodeQuality);
|
||||
}
|
||||
}
|
||||
|
||||
const statusReport: StatusReportBase = {
|
||||
action_name: actionName,
|
||||
action_oid: "unknown", // TODO decide if it's possible to fill this in
|
||||
action_ref: actionRef,
|
||||
action_started_at: actionStartedAt.toISOString(),
|
||||
action_version: getActionVersion(),
|
||||
analysis_kinds: analysisKinds.join(","),
|
||||
analysis_key,
|
||||
build_mode: config?.buildMode,
|
||||
commit_oid: commitOid,
|
||||
|
||||
Reference in New Issue
Block a user