Clean up codeql.resolveLanguages

Only the betterjson option is now used, so remove the old version.
This commit is contained in:
Henry Mercer
2026-06-05 12:50:57 +01:00
parent 9fc351a8ac
commit 72b0f9fed4
8 changed files with 26 additions and 68 deletions

24
lib/entry-points.js generated
View File

@@ -151527,7 +151527,7 @@ async function getTrapCachesForLanguage(allCaches, language, logger) {
} }
async function getLanguagesSupportingCaching(codeql, languages, logger) { async function getLanguagesSupportingCaching(codeql, languages, logger) {
const result = []; const result = [];
const resolveResult = await codeql.betterResolveLanguages(); const resolveResult = await codeql.resolveLanguages();
outer: for (const lang of languages) { outer: for (const lang of languages) {
const extractorsForLanguage = resolveResult.extractors[lang]; const extractorsForLanguage = resolveResult.extractors[lang];
if (extractorsForLanguage === void 0) { if (extractorsForLanguage === void 0) {
@@ -151580,7 +151580,7 @@ async function getSupportedLanguageMap(codeql, logger) {
const resolveSupportedLanguagesUsingCli = await codeql.supportsFeature( const resolveSupportedLanguagesUsingCli = await codeql.supportsFeature(
"builtinExtractorsSpecifyDefaultQueries" /* BuiltinExtractorsSpecifyDefaultQueries */ "builtinExtractorsSpecifyDefaultQueries" /* BuiltinExtractorsSpecifyDefaultQueries */
); );
const resolveResult = await codeql.betterResolveLanguages({ const resolveResult = await codeql.resolveLanguages({
filterToLanguagesWithQueries: resolveSupportedLanguagesUsingCli filterToLanguagesWithQueries: resolveSupportedLanguagesUsingCli
}); });
if (resolveSupportedLanguagesUsingCli) { if (resolveSupportedLanguagesUsingCli) {
@@ -154078,23 +154078,7 @@ async function getCodeQLForCmd(cmd, checkVersion) {
]; ];
await runCli(cmd, args); await runCli(cmd, args);
}, },
async resolveLanguages() { async resolveLanguages({
const codeqlArgs = [
"resolve",
"languages",
"--format=json",
...getExtraOptionsFromEnv(["resolve", "languages"])
];
const output = await runCli(cmd, codeqlArgs);
try {
return JSON.parse(output);
} catch (e) {
throw new Error(
`Unexpected output from codeql resolve languages: ${e}`
);
}
},
async betterResolveLanguages({
filterToLanguagesWithQueries filterToLanguagesWithQueries
} = { filterToLanguagesWithQueries: false }) { } = { filterToLanguagesWithQueries: false }) {
const codeqlArgs = [ const codeqlArgs = [
@@ -158779,7 +158763,7 @@ var WorkflowErrors = toCodedErrors({
InconsistentActionVersion: `Not all workflow steps that use \`github/codeql-action\` actions use the same version. Please ensure that all such steps use the same version to avoid compatibility issues.` InconsistentActionVersion: `Not all workflow steps that use \`github/codeql-action\` actions use the same version. Please ensure that all such steps use the same version to avoid compatibility issues.`
}); });
async function groupLanguagesByExtractor(languages, codeql) { async function groupLanguagesByExtractor(languages, codeql) {
const resolveResult = await codeql.betterResolveLanguages(); const resolveResult = await codeql.resolveLanguages();
if (!resolveResult.aliases) { if (!resolveResult.aliases) {
return void 0; return void 0;
} }

View File

@@ -117,16 +117,12 @@ export interface CodeQL {
memoryFlag: string, memoryFlag: string,
enableDebugLogging: boolean, enableDebugLogging: boolean,
): Promise<void>; ): Promise<void>;
/**
* Run 'codeql resolve languages'.
*/
resolveLanguages(): Promise<ResolveLanguagesOutput>;
/** /**
* Run 'codeql resolve languages' with '--format=betterjson'. * Run 'codeql resolve languages' with '--format=betterjson'.
*/ */
betterResolveLanguages(options?: { resolveLanguages(options?: {
filterToLanguagesWithQueries: boolean; filterToLanguagesWithQueries: boolean;
}): Promise<BetterResolveLanguagesOutput>; }): Promise<ResolveLanguagesOutput>;
/** /**
* Run 'codeql resolve build-environment' * Run 'codeql resolve build-environment'
*/ */
@@ -239,10 +235,6 @@ export interface ResolveDatabaseOutput {
} }
export interface ResolveLanguagesOutput { export interface ResolveLanguagesOutput {
[language: string]: [string];
}
export interface BetterResolveLanguagesOutput {
aliases?: { aliases?: {
[alias: string]: string; [alias: string]: string;
}; };
@@ -460,10 +452,9 @@ export function createStubCodeQL(partialCodeql: Partial<CodeQL>): CodeQL {
"extractUsingBuildMode", "extractUsingBuildMode",
), ),
finalizeDatabase: resolveFunction(partialCodeql, "finalizeDatabase"), finalizeDatabase: resolveFunction(partialCodeql, "finalizeDatabase"),
resolveLanguages: resolveFunction(partialCodeql, "resolveLanguages"), resolveLanguages: resolveFunction(
betterResolveLanguages: resolveFunction(
partialCodeql, partialCodeql,
"betterResolveLanguages", "resolveLanguages",
async () => ({ aliases: {}, extractors: {} }), async () => ({ aliases: {}, extractors: {} }),
), ),
resolveBuildEnvironment: resolveFunction( resolveBuildEnvironment: resolveFunction(
@@ -735,24 +726,7 @@ async function getCodeQLForCmd(
]; ];
await runCli(cmd, args); await runCli(cmd, args);
}, },
async resolveLanguages() { async resolveLanguages(
const codeqlArgs = [
"resolve",
"languages",
"--format=json",
...getExtraOptionsFromEnv(["resolve", "languages"]),
];
const output = await runCli(cmd, codeqlArgs);
try {
return JSON.parse(output) as ResolveLanguagesOutput;
} catch (e) {
throw new Error(
`Unexpected output from codeql resolve languages: ${e}`,
);
}
},
async betterResolveLanguages(
{ {
filterToLanguagesWithQueries, filterToLanguagesWithQueries,
}: { }: {
@@ -773,7 +747,7 @@ async function getCodeQLForCmd(
const output = await runCli(cmd, codeqlArgs); const output = await runCli(cmd, codeqlArgs);
try { try {
return JSON.parse(output) as BetterResolveLanguagesOutput; return JSON.parse(output) as ResolveLanguagesOutput;
} catch (e) { } catch (e) {
throw new Error( throw new Error(
`Unexpected output from codeql resolve languages with --format=betterjson: ${e}`, `Unexpected output from codeql resolve languages with --format=betterjson: ${e}`,

View File

@@ -75,7 +75,7 @@ function createTestInitConfigInputs(
repository: { owner: "github", repo: "example" }, repository: { owner: "github", repo: "example" },
tempDir: "", tempDir: "",
codeql: createStubCodeQL({ codeql: createStubCodeQL({
async betterResolveLanguages() { async resolveLanguages() {
return { return {
extractors: { extractors: {
html: [{ extractor_root: "" }], html: [{ extractor_root: "" }],
@@ -150,7 +150,7 @@ test.serial("load empty config", async (t) => {
setupActionsVars(tempDir, tempDir); setupActionsVars(tempDir, tempDir);
const codeql = createStubCodeQL({ const codeql = createStubCodeQL({
async betterResolveLanguages() { async resolveLanguages() {
return { return {
extractors: { extractors: {
javascript: [{ extractor_root: "" }], javascript: [{ extractor_root: "" }],
@@ -193,7 +193,7 @@ test.serial("load code quality config", async (t) => {
setupActionsVars(tempDir, tempDir); setupActionsVars(tempDir, tempDir);
const codeql = createStubCodeQL({ const codeql = createStubCodeQL({
async betterResolveLanguages() { async resolveLanguages() {
return { return {
extractors: { extractors: {
actions: [{ extractor_root: "" }], actions: [{ extractor_root: "" }],
@@ -247,7 +247,7 @@ test.serial(
setupActionsVars(tempDir, tempDir); setupActionsVars(tempDir, tempDir);
const codeql = createStubCodeQL({ const codeql = createStubCodeQL({
async betterResolveLanguages() { async resolveLanguages() {
return { return {
extractors: { extractors: {
javascript: [{ extractor_root: "" }], javascript: [{ extractor_root: "" }],
@@ -305,7 +305,7 @@ test.serial("loading a saved config produces the same config", async (t) => {
const logger = getRunnerLogger(true); const logger = getRunnerLogger(true);
const codeql = createStubCodeQL({ const codeql = createStubCodeQL({
async betterResolveLanguages() { async resolveLanguages() {
return { return {
extractors: { extractors: {
javascript: [{ extractor_root: "" }], javascript: [{ extractor_root: "" }],
@@ -352,7 +352,7 @@ test.serial("loading config with version mismatch throws", async (t) => {
const logger = getRunnerLogger(true); const logger = getRunnerLogger(true);
const codeql = createStubCodeQL({ const codeql = createStubCodeQL({
async betterResolveLanguages() { async resolveLanguages() {
return { return {
extractors: { extractors: {
javascript: [{ extractor_root: "" }], javascript: [{ extractor_root: "" }],
@@ -487,7 +487,7 @@ test.serial("load non-empty input", async (t) => {
setupActionsVars(tempDir, tempDir); setupActionsVars(tempDir, tempDir);
const codeql = createStubCodeQL({ const codeql = createStubCodeQL({
async betterResolveLanguages() { async resolveLanguages() {
return { return {
extractors: { extractors: {
javascript: [{ extractor_root: "" }], javascript: [{ extractor_root: "" }],
@@ -582,7 +582,7 @@ test.serial(
fs.mkdirSync(path.join(tempDir, "foo")); fs.mkdirSync(path.join(tempDir, "foo"));
const codeql = createStubCodeQL({ const codeql = createStubCodeQL({
async betterResolveLanguages() { async resolveLanguages() {
return { return {
extractors: { extractors: {
javascript: [{ extractor_root: "" }], javascript: [{ extractor_root: "" }],
@@ -615,7 +615,7 @@ test.serial(
test.serial("API client used when reading remote config", async (t) => { test.serial("API client used when reading remote config", async (t) => {
return await withTmpDir(async (tempDir) => { return await withTmpDir(async (tempDir) => {
const codeql = createStubCodeQL({ const codeql = createStubCodeQL({
async betterResolveLanguages() { async resolveLanguages() {
return { return {
extractors: { extractors: {
javascript: [{ extractor_root: "" }], javascript: [{ extractor_root: "" }],
@@ -725,7 +725,7 @@ test.serial("No detected languages", async (t) => {
mockListLanguages([]); mockListLanguages([]);
const codeql = createStubCodeQL({ const codeql = createStubCodeQL({
async resolveLanguages() { async resolveLanguages() {
return {}; return { extractors: {} };
}, },
}); });
@@ -891,7 +891,7 @@ const mockRepositoryNwo = parseRepositoryNwo("owner/repo");
extractor_root: "", extractor_root: "",
}; };
const codeQL = createStubCodeQL({ const codeQL = createStubCodeQL({
betterResolveLanguages: (options) => resolveLanguages: (options) =>
Promise.resolve({ Promise.resolve({
aliases: { aliases: {
"c#": BuiltInLanguage.csharp, "c#": BuiltInLanguage.csharp,

View File

@@ -266,7 +266,7 @@ async function getSupportedLanguageMap(
const resolveSupportedLanguagesUsingCli = await codeql.supportsFeature( const resolveSupportedLanguagesUsingCli = await codeql.supportsFeature(
ToolsFeature.BuiltinExtractorsSpecifyDefaultQueries, ToolsFeature.BuiltinExtractorsSpecifyDefaultQueries,
); );
const resolveResult = await codeql.betterResolveLanguages({ const resolveResult = await codeql.resolveLanguages({
filterToLanguagesWithQueries: resolveSupportedLanguagesUsingCli, filterToLanguagesWithQueries: resolveSupportedLanguagesUsingCli,
}); });
if (resolveSupportedLanguagesUsingCli) { if (resolveSupportedLanguagesUsingCli) {

View File

@@ -38,7 +38,7 @@ const stubCodeql = createStubCodeQL({
async getVersion() { async getVersion() {
return makeVersionInfo("2.10.3"); return makeVersionInfo("2.10.3");
}, },
async betterResolveLanguages() { async resolveLanguages() {
return { return {
extractors: { extractors: {
[BuiltInLanguage.javascript]: [ [BuiltInLanguage.javascript]: [

View File

@@ -280,7 +280,7 @@ export async function getLanguagesSupportingCaching(
logger: Logger, logger: Logger,
): Promise<Language[]> { ): Promise<Language[]> {
const result: Language[] = []; const result: Language[] = [];
const resolveResult = await codeql.betterResolveLanguages(); const resolveResult = await codeql.resolveLanguages();
outer: for (const lang of languages) { outer: for (const lang of languages) {
const extractorsForLanguage = resolveResult.extractors[lang]; const extractorsForLanguage = resolveResult.extractors[lang];
if (extractorsForLanguage === undefined) { if (extractorsForLanguage === undefined) {

View File

@@ -383,7 +383,7 @@ async function testLanguageAliases(
process.env.GITHUB_JOB = "test"; process.env.GITHUB_JOB = "test";
const codeql = await getCodeQLForTesting(); const codeql = await getCodeQLForTesting();
sinon.stub(codeql, "betterResolveLanguages").resolves({ sinon.stub(codeql, "resolveLanguages").resolves({
aliases: aliases:
aliases !== undefined aliases !== undefined
? // Remap from languageName -> aliases to alias -> languageName ? // Remap from languageName -> aliases to alias -> languageName

View File

@@ -86,7 +86,7 @@ async function groupLanguagesByExtractor(
languages: string[], languages: string[],
codeql: CodeQL, codeql: CodeQL,
): Promise<{ [extractorName: string]: string[] } | undefined> { ): Promise<{ [extractorName: string]: string[] } | undefined> {
const resolveResult = await codeql.betterResolveLanguages(); const resolveResult = await codeql.resolveLanguages();
if (!resolveResult.aliases) { if (!resolveResult.aliases) {
return undefined; return undefined;
} }