Pass --ram flag to database finalize

This commit is contained in:
Edoardo Pirovano
2021-08-12 16:02:19 +01:00
parent acd9964b7a
commit 0c4306b672
15 changed files with 85 additions and 37 deletions

View File

@@ -54,6 +54,10 @@ export interface CodeQL {
* Get the path of the CodeQL executable.
*/
getPath(): string;
/**
* Get a string containing the semver version of the CodeQL executable.
*/
getVersion(): Promise<string>;
/**
* Print version information about CodeQL.
*/
@@ -83,7 +87,11 @@ export interface CodeQL {
/**
* Finalize a database using 'codeql database finalize'.
*/
finalizeDatabase(databasePath: string, threadsFlag: string): Promise<void>;
finalizeDatabase(
databasePath: string,
threadsFlag: string,
memoryFlag: string
): Promise<void>;
/**
* Run 'codeql resolve languages'.
*/
@@ -170,6 +178,8 @@ let cachedCodeQL: CodeQL | undefined = undefined;
const CODEQL_BUNDLE_VERSION = defaults.bundleVersion;
const CODEQL_DEFAULT_ACTION_REPOSITORY = "github/codeql-action";
const CODEQL_VERSION_RAM_FINALIZE = "2.5.8";
function getCodeQLBundleName(): string {
let platform: string;
if (process.platform === "win32") {
@@ -490,6 +500,11 @@ function resolveFunction<T>(
export function setCodeQL(partialCodeql: Partial<CodeQL>): CodeQL {
cachedCodeQL = {
getPath: resolveFunction(partialCodeql, "getPath", () => "/tmp/dummy-path"),
getVersion: resolveFunction(
partialCodeql,
"getVersion",
() => new Promise((resolve) => resolve("1.0.0"))
),
printVersion: resolveFunction(partialCodeql, "printVersion"),
getTracerEnv: resolveFunction(partialCodeql, "getTracerEnv"),
databaseInit: resolveFunction(partialCodeql, "databaseInit"),
@@ -532,6 +547,9 @@ function getCodeQLForCmd(cmd: string): CodeQL {
getPath() {
return cmd;
},
async getVersion() {
return await runTool(cmd, ["version", "--format=terse"]);
},
async printVersion() {
await runTool(cmd, ["version", "--format=json"]);
},
@@ -670,19 +688,22 @@ function getCodeQLForCmd(cmd: string): CodeQL {
errorMatchers
);
},
async finalizeDatabase(databasePath: string, threadsFlag: string) {
await toolrunnerErrorCatcher(
cmd,
[
"database",
"finalize",
"--finalize-dataset",
threadsFlag,
...getExtraOptionsFromEnv(["database", "finalize"]),
databasePath,
],
errorMatchers
);
async finalizeDatabase(
databasePath: string,
threadsFlag: string,
memoryFlag: string
) {
const args = [
"database",
"finalize",
"--finalize-dataset",
threadsFlag,
...getExtraOptionsFromEnv(["database", "finalize"]),
databasePath,
];
if (await util.codeQlVersionAbove(this, CODEQL_VERSION_RAM_FINALIZE))
args.push(memoryFlag);
await toolrunnerErrorCatcher(cmd, args, errorMatchers);
},
async resolveLanguages() {
const codeqlArgs = ["resolve", "languages", "--format=json"];