diff --git a/.github/workflows/__multi-language-autodetect.yml b/.github/workflows/__multi-language-autodetect.yml index e5f157881c..8bedb73e8b 100644 --- a/.github/workflows/__multi-language-autodetect.yml +++ b/.github/workflows/__multi-language-autodetect.yml @@ -164,4 +164,5 @@ jobs: exit 1 fi env: + CODEQL_ACTION_RESOLVE_SUPPORTED_LANGUAGES_USING_CLI: true CODEQL_ACTION_TEST_MODE: true diff --git a/lib/analyze-action-post.js b/lib/analyze-action-post.js index 99d289f8f0..a3c4d2fbe4 100644 --- a/lib/analyze-action-post.js +++ b/lib/analyze-action-post.js @@ -117798,6 +117798,12 @@ var featureConfig = { legacyApi: true, minimumVersion: void 0 }, + ["resolve_supported_languages_using_cli" /* ResolveSupportedLanguagesUsingCli */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_RESOLVE_SUPPORTED_LANGUAGES_USING_CLI", + minimumVersion: void 0, + toolsFeature: "builtinExtractorsSpecifyDefaultQueries" /* BuiltinExtractorsSpecifyDefaultQueries */ + }, ["overlay_analysis" /* OverlayAnalysis */]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", @@ -118245,13 +118251,16 @@ async function getCodeQLForCmd(cmd, checkVersion) { ); } }, - async betterResolveLanguages() { + async betterResolveLanguages({ + filterToLanguagesWithQueries + } = { filterToLanguagesWithQueries: false }) { const codeqlArgs = [ "resolve", "languages", "--format=betterjson", "--extractor-options-verbosity=4", "--extractor-include-aliases", + ...filterToLanguagesWithQueries ? ["--filter-to-languages-with-queries"] : [], ...getExtraOptionsFromEnv(["resolve", "languages"]) ]; const output = await runCli(cmd, codeqlArgs); diff --git a/lib/analyze-action.js b/lib/analyze-action.js index 29aef44a7a..8a90096efd 100644 --- a/lib/analyze-action.js +++ b/lib/analyze-action.js @@ -90993,6 +90993,12 @@ var featureConfig = { legacyApi: true, minimumVersion: void 0 }, + ["resolve_supported_languages_using_cli" /* ResolveSupportedLanguagesUsingCli */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_RESOLVE_SUPPORTED_LANGUAGES_USING_CLI", + minimumVersion: void 0, + toolsFeature: "builtinExtractorsSpecifyDefaultQueries" /* BuiltinExtractorsSpecifyDefaultQueries */ + }, ["overlay_analysis" /* OverlayAnalysis */]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", @@ -92757,13 +92763,16 @@ async function getCodeQLForCmd(cmd, checkVersion) { ); } }, - async betterResolveLanguages() { + async betterResolveLanguages({ + filterToLanguagesWithQueries + } = { filterToLanguagesWithQueries: false }) { const codeqlArgs = [ "resolve", "languages", "--format=betterjson", "--extractor-options-verbosity=4", "--extractor-include-aliases", + ...filterToLanguagesWithQueries ? ["--filter-to-languages-with-queries"] : [], ...getExtraOptionsFromEnv(["resolve", "languages"]) ]; const output = await runCli(cmd, codeqlArgs); diff --git a/lib/autobuild-action.js b/lib/autobuild-action.js index ca18e315a4..e0ef341b6a 100644 --- a/lib/autobuild-action.js +++ b/lib/autobuild-action.js @@ -78536,6 +78536,12 @@ var featureConfig = { legacyApi: true, minimumVersion: void 0 }, + ["resolve_supported_languages_using_cli" /* ResolveSupportedLanguagesUsingCli */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_RESOLVE_SUPPORTED_LANGUAGES_USING_CLI", + minimumVersion: void 0, + toolsFeature: "builtinExtractorsSpecifyDefaultQueries" /* BuiltinExtractorsSpecifyDefaultQueries */ + }, ["overlay_analysis" /* OverlayAnalysis */]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", @@ -79280,13 +79286,16 @@ async function getCodeQLForCmd(cmd, checkVersion) { ); } }, - async betterResolveLanguages() { + async betterResolveLanguages({ + filterToLanguagesWithQueries + } = { filterToLanguagesWithQueries: false }) { const codeqlArgs = [ "resolve", "languages", "--format=betterjson", "--extractor-options-verbosity=4", "--extractor-include-aliases", + ...filterToLanguagesWithQueries ? ["--filter-to-languages-with-queries"] : [], ...getExtraOptionsFromEnv(["resolve", "languages"]) ]; const output = await runCli(cmd, codeqlArgs); diff --git a/lib/init-action-post.js b/lib/init-action-post.js index 1995591edc..bd475e8739 100644 --- a/lib/init-action-post.js +++ b/lib/init-action-post.js @@ -129115,6 +129115,12 @@ var featureConfig = { legacyApi: true, minimumVersion: void 0 }, + ["resolve_supported_languages_using_cli" /* ResolveSupportedLanguagesUsingCli */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_RESOLVE_SUPPORTED_LANGUAGES_USING_CLI", + minimumVersion: void 0, + toolsFeature: "builtinExtractorsSpecifyDefaultQueries" /* BuiltinExtractorsSpecifyDefaultQueries */ + }, ["overlay_analysis" /* OverlayAnalysis */]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", @@ -130699,13 +130705,16 @@ async function getCodeQLForCmd(cmd, checkVersion) { ); } }, - async betterResolveLanguages() { + async betterResolveLanguages({ + filterToLanguagesWithQueries + } = { filterToLanguagesWithQueries: false }) { const codeqlArgs = [ "resolve", "languages", "--format=betterjson", "--extractor-options-verbosity=4", "--extractor-include-aliases", + ...filterToLanguagesWithQueries ? ["--filter-to-languages-with-queries"] : [], ...getExtraOptionsFromEnv(["resolve", "languages"]) ]; const output = await runCli(cmd, codeqlArgs); diff --git a/lib/init-action.js b/lib/init-action.js index 2edef19804..ac4a004ba2 100644 --- a/lib/init-action.js +++ b/lib/init-action.js @@ -86586,6 +86586,12 @@ var featureConfig = { legacyApi: true, minimumVersion: void 0 }, + ["resolve_supported_languages_using_cli" /* ResolveSupportedLanguagesUsingCli */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_RESOLVE_SUPPORTED_LANGUAGES_USING_CLI", + minimumVersion: void 0, + toolsFeature: "builtinExtractorsSpecifyDefaultQueries" /* BuiltinExtractorsSpecifyDefaultQueries */ + }, ["overlay_analysis" /* OverlayAnalysis */]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", @@ -87162,11 +87168,22 @@ function getNoLanguagesError() { function getUnknownLanguagesError(languages) { return `Did not recognize the following languages: ${languages.join(", ")}`; } -async function getSupportedLanguageMap(codeql) { - const resolveResult = await codeql.betterResolveLanguages(); +async function getSupportedLanguageMap(codeql, features, logger) { + const resolveSupportedLanguagesUsingCli = await features.getValue( + "resolve_supported_languages_using_cli" /* ResolveSupportedLanguagesUsingCli */, + codeql + ); + const resolveResult = await codeql.betterResolveLanguages({ + filterToLanguagesWithQueries: resolveSupportedLanguagesUsingCli + }); + if (resolveSupportedLanguagesUsingCli) { + logger.debug( + `The CodeQL CLI supports the following languages: ${Object.keys(resolveResult.extractors).join(", ")}` + ); + } const supportedLanguages = {}; for (const extractor of Object.keys(resolveResult.extractors)) { - if (KnownLanguage[extractor] !== void 0) { + if (resolveSupportedLanguagesUsingCli || KnownLanguage[extractor] !== void 0) { supportedLanguages[extractor] = extractor; } } @@ -87202,14 +87219,14 @@ async function getRawLanguagesInRepo(repository, sourceRoot, logger) { logger.debug(`Raw languages in repository: ${result.join(", ")}`); return result; } -async function getLanguages(codeql, languagesInput, repository, sourceRoot, logger) { +async function getLanguages(codeql, languagesInput, repository, sourceRoot, features, logger) { const { rawLanguages, autodetected } = await getRawLanguages( languagesInput, repository, sourceRoot, logger ); - const languageMap = await getSupportedLanguageMap(codeql); + const languageMap = await getSupportedLanguageMap(codeql, features, logger); const languagesSet = /* @__PURE__ */ new Set(); const unknownLanguages = []; for (const language of rawLanguages) { @@ -87277,6 +87294,7 @@ async function getDefaultConfig({ languagesInput, repository, sourceRoot, + features, logger ); const buildMode = await parseBuildModeInput( @@ -89303,13 +89321,16 @@ async function getCodeQLForCmd(cmd, checkVersion) { ); } }, - async betterResolveLanguages() { + async betterResolveLanguages({ + filterToLanguagesWithQueries + } = { filterToLanguagesWithQueries: false }) { const codeqlArgs = [ "resolve", "languages", "--format=betterjson", "--extractor-options-verbosity=4", "--extractor-include-aliases", + ...filterToLanguagesWithQueries ? ["--filter-to-languages-with-queries"] : [], ...getExtraOptionsFromEnv(["resolve", "languages"]) ]; const output = await runCli(cmd, codeqlArgs); diff --git a/lib/resolve-environment-action.js b/lib/resolve-environment-action.js index 7c46b8092b..0d63e4dcbc 100644 --- a/lib/resolve-environment-action.js +++ b/lib/resolve-environment-action.js @@ -78527,6 +78527,12 @@ var featureConfig = { legacyApi: true, minimumVersion: void 0 }, + ["resolve_supported_languages_using_cli" /* ResolveSupportedLanguagesUsingCli */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_RESOLVE_SUPPORTED_LANGUAGES_USING_CLI", + minimumVersion: void 0, + toolsFeature: "builtinExtractorsSpecifyDefaultQueries" /* BuiltinExtractorsSpecifyDefaultQueries */ + }, ["overlay_analysis" /* OverlayAnalysis */]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", @@ -78980,13 +78986,16 @@ async function getCodeQLForCmd(cmd, checkVersion) { ); } }, - async betterResolveLanguages() { + async betterResolveLanguages({ + filterToLanguagesWithQueries + } = { filterToLanguagesWithQueries: false }) { const codeqlArgs = [ "resolve", "languages", "--format=betterjson", "--extractor-options-verbosity=4", "--extractor-include-aliases", + ...filterToLanguagesWithQueries ? ["--filter-to-languages-with-queries"] : [], ...getExtraOptionsFromEnv(["resolve", "languages"]) ]; const output = await runCli(cmd, codeqlArgs); diff --git a/lib/start-proxy-action-post.js b/lib/start-proxy-action-post.js index c9317c4cd2..e9e40ec48a 100644 --- a/lib/start-proxy-action-post.js +++ b/lib/start-proxy-action-post.js @@ -117207,6 +117207,12 @@ var featureConfig = { legacyApi: true, minimumVersion: void 0 }, + ["resolve_supported_languages_using_cli" /* ResolveSupportedLanguagesUsingCli */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_RESOLVE_SUPPORTED_LANGUAGES_USING_CLI", + minimumVersion: void 0, + toolsFeature: "builtinExtractorsSpecifyDefaultQueries" /* BuiltinExtractorsSpecifyDefaultQueries */ + }, ["overlay_analysis" /* OverlayAnalysis */]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", diff --git a/lib/upload-lib.js b/lib/upload-lib.js index 825744e8d4..fa5bfea51c 100644 --- a/lib/upload-lib.js +++ b/lib/upload-lib.js @@ -89226,6 +89226,12 @@ var featureConfig = { legacyApi: true, minimumVersion: void 0 }, + ["resolve_supported_languages_using_cli" /* ResolveSupportedLanguagesUsingCli */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_RESOLVE_SUPPORTED_LANGUAGES_USING_CLI", + minimumVersion: void 0, + toolsFeature: "builtinExtractorsSpecifyDefaultQueries" /* BuiltinExtractorsSpecifyDefaultQueries */ + }, ["overlay_analysis" /* OverlayAnalysis */]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", @@ -90546,13 +90552,16 @@ async function getCodeQLForCmd(cmd, checkVersion) { ); } }, - async betterResolveLanguages() { + async betterResolveLanguages({ + filterToLanguagesWithQueries + } = { filterToLanguagesWithQueries: false }) { const codeqlArgs = [ "resolve", "languages", "--format=betterjson", "--extractor-options-verbosity=4", "--extractor-include-aliases", + ...filterToLanguagesWithQueries ? ["--filter-to-languages-with-queries"] : [], ...getExtraOptionsFromEnv(["resolve", "languages"]) ]; const output = await runCli(cmd, codeqlArgs); diff --git a/lib/upload-sarif-action-post.js b/lib/upload-sarif-action-post.js index 4e569eb512..8b7d115dbe 100644 --- a/lib/upload-sarif-action-post.js +++ b/lib/upload-sarif-action-post.js @@ -117372,6 +117372,12 @@ var featureConfig = { legacyApi: true, minimumVersion: void 0 }, + ["resolve_supported_languages_using_cli" /* ResolveSupportedLanguagesUsingCli */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_RESOLVE_SUPPORTED_LANGUAGES_USING_CLI", + minimumVersion: void 0, + toolsFeature: "builtinExtractorsSpecifyDefaultQueries" /* BuiltinExtractorsSpecifyDefaultQueries */ + }, ["overlay_analysis" /* OverlayAnalysis */]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", diff --git a/lib/upload-sarif-action.js b/lib/upload-sarif-action.js index e785cef377..453e181a18 100644 --- a/lib/upload-sarif-action.js +++ b/lib/upload-sarif-action.js @@ -89195,6 +89195,12 @@ var featureConfig = { legacyApi: true, minimumVersion: void 0 }, + ["resolve_supported_languages_using_cli" /* ResolveSupportedLanguagesUsingCli */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_RESOLVE_SUPPORTED_LANGUAGES_USING_CLI", + minimumVersion: void 0, + toolsFeature: "builtinExtractorsSpecifyDefaultQueries" /* BuiltinExtractorsSpecifyDefaultQueries */ + }, ["overlay_analysis" /* OverlayAnalysis */]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", @@ -91226,13 +91232,16 @@ async function getCodeQLForCmd(cmd, checkVersion) { ); } }, - async betterResolveLanguages() { + async betterResolveLanguages({ + filterToLanguagesWithQueries + } = { filterToLanguagesWithQueries: false }) { const codeqlArgs = [ "resolve", "languages", "--format=betterjson", "--extractor-options-verbosity=4", "--extractor-include-aliases", + ...filterToLanguagesWithQueries ? ["--filter-to-languages-with-queries"] : [], ...getExtraOptionsFromEnv(["resolve", "languages"]) ]; const output = await runCli(cmd, codeqlArgs); diff --git a/pr-checks/checks/multi-language-autodetect.yml b/pr-checks/checks/multi-language-autodetect.yml index e663c4f8f8..794da35679 100644 --- a/pr-checks/checks/multi-language-autodetect.yml +++ b/pr-checks/checks/multi-language-autodetect.yml @@ -1,6 +1,8 @@ name: "Multi-language repository" description: "An end-to-end integration test of a multi-language repository using automatic language detection for macOS" operatingSystems: ["macos", "ubuntu"] +env: + CODEQL_ACTION_RESOLVE_SUPPORTED_LANGUAGES_USING_CLI: true installGo: true steps: - name: Use Xcode 16 diff --git a/src/codeql.ts b/src/codeql.ts index 81c8e3decd..1256d7fd14 100644 --- a/src/codeql.ts +++ b/src/codeql.ts @@ -127,7 +127,9 @@ export interface CodeQL { /** * Run 'codeql resolve languages' with '--format=betterjson'. */ - betterResolveLanguages(): Promise; + betterResolveLanguages(options?: { + filterToLanguagesWithQueries: boolean; + }): Promise; /** * Run 'codeql resolve build-environment' */ @@ -737,13 +739,22 @@ export async function getCodeQLForCmd( ); } }, - async betterResolveLanguages() { + async betterResolveLanguages( + { + filterToLanguagesWithQueries, + }: { + filterToLanguagesWithQueries: boolean; + } = { filterToLanguagesWithQueries: false }, + ) { const codeqlArgs = [ "resolve", "languages", "--format=betterjson", "--extractor-options-verbosity=4", "--extractor-include-aliases", + ...(filterToLanguagesWithQueries + ? ["--filter-to-languages-with-queries"] + : []), ...getExtraOptionsFromEnv(["resolve", "languages"]), ]; const output = await runCli(cmd, codeqlArgs); diff --git a/src/config-utils.test.ts b/src/config-utils.test.ts index e57cb5f6f4..d7470673ef 100644 --- a/src/config-utils.test.ts +++ b/src/config-utils.test.ts @@ -976,6 +976,13 @@ const mockRepositoryNwo = parseRepositoryNwo("owner/repo"); expectedLanguages: ["javascript", "csharp", "cpp"], expectedApiCall: true, }, + { + name: "unsupported languages from github api", + languagesInput: "", + languagesInRepository: ["html"], + expectedApiCall: true, + expectedError: configUtils.getNoLanguagesError(), + }, { name: "no languages", languagesInput: "", @@ -1005,57 +1012,71 @@ const mockRepositoryNwo = parseRepositoryNwo("owner/repo"); expectedLanguages: ["javascript"], }, ].forEach((args) => { - test(`getLanguages: ${args.name}`, async (t) => { - const mockRequest = mockLanguagesInRepo(args.languagesInRepository); - const stubExtractorEntry = { - extractor_root: "", - }; - const codeQL = createStubCodeQL({ - betterResolveLanguages: () => - Promise.resolve({ - aliases: { - "c#": KnownLanguage.csharp, - c: KnownLanguage.cpp, - kotlin: KnownLanguage.java, - typescript: KnownLanguage.javascript, - }, - extractors: { - cpp: [stubExtractorEntry], - csharp: [stubExtractorEntry], - java: [stubExtractorEntry], - javascript: [stubExtractorEntry], - python: [stubExtractorEntry], - }, - }), - }); - - if (args.expectedLanguages) { - // happy path - const actualLanguages = await configUtils.getLanguages( - codeQL, - args.languagesInput, - mockRepositoryNwo, - ".", - mockLogger, + for (const resolveSupportedLanguagesUsingCli of [true, false]) { + test(`getLanguages${resolveSupportedLanguagesUsingCli ? " (supported languages via CLI)" : ""}: ${args.name}`, async (t) => { + const features = createFeatures( + resolveSupportedLanguagesUsingCli + ? [Feature.ResolveSupportedLanguagesUsingCli] + : [], ); + const mockRequest = mockLanguagesInRepo(args.languagesInRepository); + const stubExtractorEntry = { + extractor_root: "", + }; + const codeQL = createStubCodeQL({ + betterResolveLanguages: (options) => + Promise.resolve({ + aliases: { + "c#": KnownLanguage.csharp, + c: KnownLanguage.cpp, + kotlin: KnownLanguage.java, + typescript: KnownLanguage.javascript, + }, + extractors: { + cpp: [stubExtractorEntry], + csharp: [stubExtractorEntry], + java: [stubExtractorEntry], + javascript: [stubExtractorEntry], + python: [stubExtractorEntry], + ...(options?.filterToLanguagesWithQueries + ? {} + : { + html: [stubExtractorEntry], + }), + }, + }), + }); + + if (args.expectedLanguages) { + // happy path + const actualLanguages = await configUtils.getLanguages( + codeQL, + args.languagesInput, + mockRepositoryNwo, + ".", + features, + mockLogger, + ); - t.deepEqual(actualLanguages.sort(), args.expectedLanguages.sort()); - } else { - // there is an error - await t.throwsAsync( - async () => - await configUtils.getLanguages( - codeQL, - args.languagesInput, - mockRepositoryNwo, - ".", - mockLogger, - ), - { message: args.expectedError }, - ); - } - t.deepEqual(mockRequest.called, args.expectedApiCall); - }); + t.deepEqual(actualLanguages.sort(), args.expectedLanguages.sort()); + } else { + // there is an error + await t.throwsAsync( + async () => + await configUtils.getLanguages( + codeQL, + args.languagesInput, + mockRepositoryNwo, + ".", + features, + mockLogger, + ), + { message: args.expectedError }, + ); + } + t.deepEqual(mockRequest.called, args.expectedApiCall); + }); + } }); for (const { displayName, language, feature } of [ diff --git a/src/config-utils.ts b/src/config-utils.ts index 477cb20e6c..dd659aa6b9 100644 --- a/src/config-utils.ts +++ b/src/config-utils.ts @@ -304,16 +304,31 @@ export function getUnknownLanguagesError(languages: string[]): string { export async function getSupportedLanguageMap( codeql: CodeQL, + features: FeatureEnablement, + logger: Logger, ): Promise> { - const resolveResult = await codeql.betterResolveLanguages(); + const resolveSupportedLanguagesUsingCli = await features.getValue( + Feature.ResolveSupportedLanguagesUsingCli, + codeql, + ); + const resolveResult = await codeql.betterResolveLanguages({ + filterToLanguagesWithQueries: resolveSupportedLanguagesUsingCli, + }); + if (resolveSupportedLanguagesUsingCli) { + logger.debug( + `The CodeQL CLI supports the following languages: ${Object.keys(resolveResult.extractors).join(", ")}`, + ); + } const supportedLanguages: Record = {}; // Populate canonical language names for (const extractor of Object.keys(resolveResult.extractors)) { - // Require the language to be a known language. - // This is a temporary workaround since we have extractors that are not - // supported languages, such as `csv`, `html`, `properties`, `xml`, and - // `yaml`. We should replace this with a more robust solution in the future. - if (KnownLanguage[extractor] !== undefined) { + // If the CLI supports resolving languages with default queries, use these + // as the set of supported languages. Otherwise, require the language to be + // a known language. + if ( + resolveSupportedLanguagesUsingCli || + KnownLanguage[extractor] !== undefined + ) { supportedLanguages[extractor] = extractor; } } @@ -395,6 +410,7 @@ export async function getLanguages( languagesInput: string | undefined, repository: RepositoryNwo, sourceRoot: string, + features: FeatureEnablement, logger: Logger, ): Promise { // Obtain languages without filtering them. @@ -405,7 +421,7 @@ export async function getLanguages( logger, ); - const languageMap = await getSupportedLanguageMap(codeql); + const languageMap = await getSupportedLanguageMap(codeql, features, logger); const languagesSet = new Set(); const unknownLanguages: string[] = []; @@ -548,6 +564,7 @@ export async function getDefaultConfig({ languagesInput, repository, sourceRoot, + features, logger, ); diff --git a/src/feature-flags.ts b/src/feature-flags.ts index d9f1a1cc3a..ef6747d6d2 100644 --- a/src/feature-flags.ts +++ b/src/feature-flags.ts @@ -73,6 +73,7 @@ export enum Feature { OverlayAnalysisSwift = "overlay_analysis_swift", PythonDefaultIsToNotExtractStdlib = "python_default_is_to_not_extract_stdlib", QaTelemetryEnabled = "qa_telemetry_enabled", + ResolveSupportedLanguagesUsingCli = "resolve_supported_languages_using_cli", } export const featureConfig: Record< @@ -145,6 +146,12 @@ export const featureConfig: Record< legacyApi: true, minimumVersion: undefined, }, + [Feature.ResolveSupportedLanguagesUsingCli]: { + defaultValue: false, + envVar: "CODEQL_ACTION_RESOLVE_SUPPORTED_LANGUAGES_USING_CLI", + minimumVersion: undefined, + toolsFeature: ToolsFeature.BuiltinExtractorsSpecifyDefaultQueries, + }, [Feature.OverlayAnalysis]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", diff --git a/src/tools-features.ts b/src/tools-features.ts index 7db27edf1b..0e88ccd92f 100644 --- a/src/tools-features.ts +++ b/src/tools-features.ts @@ -4,11 +4,12 @@ import type { VersionInfo } from "./codeql"; export enum ToolsFeature { AnalysisSummaryV2IsDefault = "analysisSummaryV2Default", + BuiltinExtractorsSpecifyDefaultQueries = "builtinExtractorsSpecifyDefaultQueries", DatabaseInterpretResultsSupportsSarifRunProperty = "databaseInterpretResultsSupportsSarifRunProperty", - IndirectTracingSupportsStaticBinaries = "indirectTracingSupportsStaticBinaries", - SarifMergeRunsFromEqualCategory = "sarifMergeRunsFromEqualCategory", ForceOverwrite = "forceOverwrite", + IndirectTracingSupportsStaticBinaries = "indirectTracingSupportsStaticBinaries", PythonDefaultIsToNotExtractStdlib = "pythonDefaultIsToNotExtractStdlib", + SarifMergeRunsFromEqualCategory = "sarifMergeRunsFromEqualCategory", } /**