diff --git a/lib/entry-points.js b/lib/entry-points.js index e2fac0cfb..089961508 100644 --- a/lib/entry-points.js +++ b/lib/entry-points.js @@ -177443,14 +177443,16 @@ async function getCodeQLForCmd(logger2, cmd, checkVersion) { await new toolrunner3.ToolRunner(cmd, args).exec(); }, async diagnosticsExport(sarifFile, automationDetailsId, config, diagnosticDir) { + let configPath = getGeneratedCodeScanningConfigPath(config); + if (diagnosticDir !== void 0 && !fs17.existsSync(configPath)) { + configPath = void 0; + } const args = [ "diagnostics", "export", "--format=sarif-latest", `--output=${sarifFile}`, - `--sarif-codescanning-config=${getGeneratedCodeScanningConfigPath( - config - )}`, + ...configPath !== void 0 ? [`--sarif-codescanning-config=${configPath}`] : [], ...diagnosticDir !== void 0 ? [`--diagnostic-dir=${diagnosticDir}`] : [], ...getExtraOptionsFromEnv(["diagnostics", "export"]) ]; diff --git a/src/codeql.ts b/src/codeql.ts index 5981929c1..7595e604a 100644 --- a/src/codeql.ts +++ b/src/codeql.ts @@ -918,14 +918,27 @@ async function getCodeQLForCmd( config: ActionConfig<"tempDir">, diagnosticDir: string | undefined, ): Promise { + // We may be exporting diagnostics for a failed SARIF, in which case the configuration + // file may not have been written to disk and there may not be a database. The CLI + // will produce a SARIF for diagnostics from `diagnosticDir` without it. Therefore, + // if `diagnosticDir` is set, we check whether `configPath` exists and only provide + // it to the CLI if it does. Although not needed, the CLI will produce an error if it + // is provided with an argument to `--sarif-codescanning-config` that does not exist. + let configPath: string | undefined = + getGeneratedCodeScanningConfigPath(config); + + if (diagnosticDir !== undefined && !fs.existsSync(configPath)) { + configPath = undefined; + } + const args = [ "diagnostics", "export", "--format=sarif-latest", `--output=${sarifFile}`, - `--sarif-codescanning-config=${getGeneratedCodeScanningConfigPath( - config, - )}`, + ...(configPath !== undefined + ? [`--sarif-codescanning-config=${configPath}`] + : []), ...(diagnosticDir !== undefined ? [`--diagnostic-dir=${diagnosticDir}`] : []),