Only create diagnostics for traced languages

This commit is contained in:
Michael B. Gale
2026-10-28 12:34:08 +00:00
parent eff66e8fb1
commit 5547a3567f
2 changed files with 23 additions and 12 deletions

14
lib/entry-points.js generated
View File

@@ -193923,14 +193923,14 @@ async function checkSwiftCompatibility(config, codeql, darwinVersion2) {
// src/languages/traced.ts
var UNSUPPORTED_DARWIN_FOR_TRACED = 27;
var UNSUPPORTED_XCODE_FOR_TRACED = 27;
function handleUnsupportedVersion(logger2, config, skipUnsupportedTracedAnalysis, product, version) {
function handleUnsupportedVersion(logger2, config, tracedLanguages, skipUnsupportedTracedAnalysis, product, version) {
const baseMessage = [
`Traced analysis is not supported on ${product} ${UNSUPPORTED_DARWIN_FOR_TRACED} or above.`,
`Configure your analysis to run on macOS ${UNSUPPORTED_DARWIN_FOR_TRACED - 1} or below`,
`and XCode ${UNSUPPORTED_XCODE_FOR_TRACED - 1} or below.`
].join(" ");
const attributeName = product === "macOS" ? "darwinVersion" : "xcodeVersion";
for (const language of config.languages) {
for (const language of tracedLanguages) {
addDiagnostic(
config,
language,
@@ -193967,12 +193967,13 @@ function handleUnsupportedVersion(logger2, config, skipUnsupportedTracedAnalysis
}
}
async function hasTracedLanguages(config, codeql) {
const tracedLanguages = [];
for (const language of config.languages) {
if (await codeql.isTracedLanguage(language)) {
return true;
tracedLanguages.push(language);
}
}
return false;
return tracedLanguages;
}
async function checkRunnerSupportsTracedAnalysis(action, config, codeql) {
const version = darwinVersion(action);
@@ -193980,7 +193981,8 @@ async function checkRunnerSupportsTracedAnalysis(action, config, codeql) {
if (config.buildMode !== void 0 && config.buildMode === "none") {
return;
}
if (!await hasTracedLanguages(config, codeql)) {
const tracedLanguages = await hasTracedLanguages(config, codeql);
if (tracedLanguages.length === 0) {
return;
}
const skipUnsupportedTracedAnalysis = await action.features.getValue(
@@ -193994,6 +193996,7 @@ async function checkRunnerSupportsTracedAnalysis(action, config, codeql) {
handleUnsupportedVersion(
action.logger,
config,
tracedLanguages,
skipUnsupportedTracedAnalysis,
"macOS",
version
@@ -194004,6 +194007,7 @@ async function checkRunnerSupportsTracedAnalysis(action, config, codeql) {
handleUnsupportedVersion(
action.logger,
config,
tracedLanguages,
skipUnsupportedTracedAnalysis,
"Xcode",
xcodeVer

View File

@@ -24,13 +24,15 @@ export const UNSUPPORTED_XCODE_FOR_TRACED = 27;
*
* @param logger The logger to use.
* @param config The CodeQL Action configuration.
* @param tracedLanguages Traced languages that are configured for analysis.
* @param skipUnsupportedTracedAnalysis Whether this is a fatal error.
* @param product The product that the version is unsupported of.
* @param version The unsupported version.
*/
function handleUnsupportedVersion(
logger: Logger,
config: ActionConfig<"languages" | "dbLocation" | "tempDir">,
config: ActionConfig<"dbLocation" | "tempDir">,
tracedLanguages: string[],
skipUnsupportedTracedAnalysis: boolean,
product: "macOS" | "Xcode",
version: semver.SemVer,
@@ -44,7 +46,7 @@ function handleUnsupportedVersion(
const attributeName = product === "macOS" ? "darwinVersion" : "xcodeVersion";
// Create a diagnostic that will show up on the TSP.
for (const language of config.languages) {
for (const language of tracedLanguages) {
addDiagnostic(
config,
language,
@@ -89,20 +91,22 @@ function handleUnsupportedVersion(
}
/**
* Decides whether {@link config} has any traced languages by looking for tracer
* Returns traced languages from {@link config} by looking for tracer
* configurations in the {@link codeql} CLI installation.
*/
export async function hasTracedLanguages(
config: ActionConfig<"languages">,
codeql: CodeQL,
): Promise<boolean> {
): Promise<string[]> {
const tracedLanguages: string[] = [];
for (const language of config.languages) {
if (await codeql.isTracedLanguage(language)) {
return true;
tracedLanguages.push(language);
}
}
return false;
return tracedLanguages;
}
/**
@@ -127,7 +131,8 @@ export async function checkRunnerSupportsTracedAnalysis(
}
// If none of the languages are traced, then we can skip the compatibility checks below as well.
if (!(await hasTracedLanguages(config, codeql))) {
const tracedLanguages = await hasTracedLanguages(config, codeql);
if (tracedLanguages.length === 0) {
return;
}
@@ -146,6 +151,7 @@ export async function checkRunnerSupportsTracedAnalysis(
handleUnsupportedVersion(
action.logger,
config,
tracedLanguages,
skipUnsupportedTracedAnalysis,
"macOS",
version,
@@ -163,6 +169,7 @@ export async function checkRunnerSupportsTracedAnalysis(
handleUnsupportedVersion(
action.logger,
config,
tracedLanguages,
skipUnsupportedTracedAnalysis,
"Xcode",
xcodeVer,