From 5547a3567fb87b011ac795c9af6ff35fc3f9ba76 Mon Sep 17 00:00:00 2001 From: "Michael B. Gale" Date: Wed, 28 Oct 2026 12:34:08 +0000 Subject: [PATCH] Only create diagnostics for traced languages --- lib/entry-points.js | 14 +++++++++----- src/languages/traced.ts | 21 ++++++++++++++------- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/lib/entry-points.js b/lib/entry-points.js index 7f5c3b447..e025efbdd 100644 --- a/lib/entry-points.js +++ b/lib/entry-points.js @@ -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 diff --git a/src/languages/traced.ts b/src/languages/traced.ts index 605c99f2e..85f9ddc1b 100644 --- a/src/languages/traced.ts +++ b/src/languages/traced.ts @@ -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 { +): Promise { + 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,