Merge pull request #3728 from github/nora/remove-cli-version-support

Remove support for CodeQL CLI versions older than v2.16.6
This commit is contained in:
Nora 2024-09-25 16:56:56 +02:00 коммит произвёл GitHub
Родитель 972da52147 181e28cbf9
Коммит e2264435f3
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B5690EEEBB952194
4 изменённых файлов: 2 добавлений и 53 удалений

Просмотреть файл

@ -1909,38 +1909,12 @@ function shouldDebugCliServer() {
export class CliVersionConstraint { export class CliVersionConstraint {
// The oldest version of the CLI that we support. This is used to determine // The oldest version of the CLI that we support. This is used to determine
// whether to show a warning about the CLI being too old on startup. // whether to show a warning about the CLI being too old on startup.
public static OLDEST_SUPPORTED_CLI_VERSION = new SemVer("v2.15.5"); public static OLDEST_SUPPORTED_CLI_VERSION = new SemVer("2.16.6");
public static CLI_VERSION_WITHOUT_MRVA_EXTENSIBLE_PREDICATE_HACK = new SemVer(
"2.16.1",
);
/**
* CLI version where there is support for multiple queries on the pack create command.
*/
public static CLI_VERSION_WITH_MULTI_QUERY_PACK_CREATE = new SemVer("2.16.1");
constructor(private readonly cli: CodeQLCliServer) { constructor(private readonly cli: CodeQLCliServer) {
/**/ /**/
} }
private async isVersionAtLeast(v: SemVer) {
return (await this.cli.getVersion()).compare(v) >= 0;
}
async preservesExtensiblePredicatesInMrvaPack() {
// Negated, because we _stopped_ preserving these in 2.16.1.
return !(await this.isVersionAtLeast(
CliVersionConstraint.CLI_VERSION_WITHOUT_MRVA_EXTENSIBLE_PREDICATE_HACK,
));
}
async supportsPackCreateWithMultipleQueries() {
return this.isVersionAtLeast(
CliVersionConstraint.CLI_VERSION_WITH_MULTI_QUERY_PACK_CREATE,
);
}
async supportsMrvaPackCreate(): Promise<boolean> { async supportsMrvaPackCreate(): Promise<boolean> {
return (await this.cli.getFeatures()).mrvaPackCreate === true; return (await this.cli.getFeatures()).mrvaPackCreate === true;
} }

Просмотреть файл

@ -116,15 +116,6 @@ async function generateQueryPack(
let precompilationOpts: string[]; let precompilationOpts: string[];
if (cliSupportsMrvaPackCreate) { if (cliSupportsMrvaPackCreate) {
if (
qlPackDetails.queryFiles.length > 1 &&
!(await cliServer.cliConstraints.supportsPackCreateWithMultipleQueries())
) {
throw new Error(
`Installed CLI version does not allow creating a MRVA pack with multiple queries`,
);
}
const queryOpts = qlPackDetails.queryFiles.flatMap((q) => [ const queryOpts = qlPackDetails.queryFiles.flatMap((q) => [
"--query", "--query",
join(targetPackPath, relative(qlPackDetails.qlPackRootPath, q)), join(targetPackPath, relative(qlPackDetails.qlPackRootPath, q)),

Просмотреть файл

@ -3,6 +3,5 @@
"v2.18.4", "v2.18.4",
"v2.17.6", "v2.17.6",
"v2.16.6", "v2.16.6",
"v2.15.5",
"nightly" "nightly"
] ]

Просмотреть файл

@ -15,7 +15,6 @@ import { isAbsolute, join } from "path";
import { VariantAnalysisManager } from "../../../../src/variant-analysis/variant-analysis-manager"; import { VariantAnalysisManager } from "../../../../src/variant-analysis/variant-analysis-manager";
import type { CodeQLCliServer } from "../../../../src/codeql-cli/cli"; import type { CodeQLCliServer } from "../../../../src/codeql-cli/cli";
import { CliVersionConstraint } from "../../../../src/codeql-cli/cli";
import { getActivatedExtension, storagePath } from "../../global.helper"; import { getActivatedExtension, storagePath } from "../../global.helper";
import { VariantAnalysisResultsManager } from "../../../../src/variant-analysis/variant-analysis-results-manager"; import { VariantAnalysisResultsManager } from "../../../../src/variant-analysis/variant-analysis-results-manager";
import type { VariantAnalysisSubmission } from "../../../../src/variant-analysis/shared/variant-analysis"; import type { VariantAnalysisSubmission } from "../../../../src/variant-analysis/shared/variant-analysis";
@ -347,13 +346,6 @@ describe("Variant Analysis Manager", () => {
const queryToRun = const queryToRun =
"Security/CWE/CWE-020/ExternalAPIsUsedWithUntrustedData.ql"; "Security/CWE/CWE-020/ExternalAPIsUsedWithUntrustedData.ql";
// Recent versions of the CLI don't preserve queries with extensible predicates in MRVA packs,
// because all the necessary info is in the `.packinfo` file.
const extraQueries =
(await cli.cliConstraints.preservesExtensiblePredicatesInMrvaPack())
? ["Telemetry/ExtractorInformation.ql"]
: [];
const qlPackRootPath = join(process.env.TEST_CODEQL_PATH, "java/ql/src"); const qlPackRootPath = join(process.env.TEST_CODEQL_PATH, "java/ql/src");
const queryPath = join(qlPackRootPath, queryToRun); const queryPath = join(qlPackRootPath, queryToRun);
const qlPackFilePath = join(qlPackRootPath, "qlpack.yml"); const qlPackFilePath = join(qlPackRootPath, "qlpack.yml");
@ -362,7 +354,7 @@ describe("Variant Analysis Manager", () => {
qlPackRootPath, qlPackRootPath,
qlPackFilePath, qlPackFilePath,
expectedPackName: "codeql/java-queries", expectedPackName: "codeql/java-queries",
filesThatExist: [queryToRun, ...extraQueries], filesThatExist: [queryToRun],
filesThatDoNotExist: [], filesThatDoNotExist: [],
qlxFilesThatExist: [], qlxFilesThatExist: [],
dependenciesToCheck: ["codeql/java-all"], dependenciesToCheck: ["codeql/java-all"],
@ -372,13 +364,6 @@ describe("Variant Analysis Manager", () => {
}); });
it("should run multiple queries that are part of the same pack", async () => { it("should run multiple queries that are part of the same pack", async () => {
if (!(await cli.cliConstraints.supportsPackCreateWithMultipleQueries())) {
console.log(
`Skipping test because MRVA with multiple queries is only suppported in CLI version ${CliVersionConstraint.CLI_VERSION_WITH_MULTI_QUERY_PACK_CREATE} or later.`,
);
return;
}
await doVariantAnalysisTest({ await doVariantAnalysisTest({
queryPaths: [ queryPaths: [
"data-qlpack-multiple-queries/query1.ql", "data-qlpack-multiple-queries/query1.ql",