diff --git a/extensions/ql-vscode/CHANGELOG.md b/extensions/ql-vscode/CHANGELOG.md index f03c85c307d..4be61d7eb38 100644 --- a/extensions/ql-vscode/CHANGELOG.md +++ b/extensions/ql-vscode/CHANGELOG.md @@ -4,6 +4,7 @@ - Add support for filename pattern in history view. [#930](https://github.com/github/vscode-codeql/pull/930) - Add an option _View Results (CSV)_ to view the results of a non-alert query. The existing options for alert queries have been renamed to _View Alerts_ to avoid confusion. [#929](https://github.com/github/vscode-codeql/pull/929) +- Allow users to specify the number of paths to display for each alert. [#931](https://github.com/github/vscode-codeql/pull/931) ## 1.5.3 - 18 August 2021 diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index 80723894c61..1133eaec676 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -180,6 +180,13 @@ "default": false, "description": "Enable debug logging and tuple counting when running CodeQL queries. This information is useful for debugging query performance." }, + "codeQL.runningQueries.maxPaths": { + "type": "integer", + "default": 4, + "minimum": 1, + "maximum": 256, + "markdownDescription": "Max number of paths to display for each alert found by a path query (`@kind path-problem`)." + }, "codeQL.runningQueries.autoSave": { "type": "boolean", "default": false, diff --git a/extensions/ql-vscode/src/cli.ts b/extensions/ql-vscode/src/cli.ts index 6b0e67dc2c4..d3e44c1eb16 100644 --- a/extensions/ql-vscode/src/cli.ts +++ b/extensions/ql-vscode/src/cli.ts @@ -649,6 +649,11 @@ export class CodeQLCliServer implements Disposable { this.cliConfig.numberThreads.toString(), ); + args.push( + '--max-paths', + this.cliConfig.maxPaths.toString(), + ); + args.push(resultsPath); await this.runCodeQlCliCommand(['bqrs', 'interpret'], args, 'Interpreting query results'); } diff --git a/extensions/ql-vscode/src/config.ts b/extensions/ql-vscode/src/config.ts index eebd0687a78..bfa21409858 100644 --- a/extensions/ql-vscode/src/config.ts +++ b/extensions/ql-vscode/src/config.ts @@ -79,6 +79,7 @@ const CACHE_SIZE_SETTING = new Setting('cacheSize', RUNNING_QUERIES_SETTING); const TIMEOUT_SETTING = new Setting('timeout', RUNNING_QUERIES_SETTING); const MEMORY_SETTING = new Setting('memory', RUNNING_QUERIES_SETTING); const DEBUG_SETTING = new Setting('debug', RUNNING_QUERIES_SETTING); +const MAX_PATHS = new Setting('maxPaths', RUNNING_QUERIES_SETTING); const RUNNING_TESTS_SETTING = new Setting('runningTests', ROOT_SETTING); const RESULTS_DISPLAY_SETTING = new Setting('resultsDisplay', ROOT_SETTING); @@ -112,12 +113,13 @@ export interface QueryHistoryConfig { onDidChangeConfiguration: Event; } -const CLI_SETTINGS = [ADDITIONAL_TEST_ARGUMENTS_SETTING, NUMBER_OF_TEST_THREADS_SETTING, NUMBER_OF_THREADS_SETTING]; +const CLI_SETTINGS = [ADDITIONAL_TEST_ARGUMENTS_SETTING, NUMBER_OF_TEST_THREADS_SETTING, NUMBER_OF_THREADS_SETTING, MAX_PATHS]; export interface CliConfig { additionalTestArguments: string[]; numberTestThreads: number; numberThreads: number; + maxPaths: number; onDidChangeConfiguration?: Event; } @@ -264,6 +266,10 @@ export class CliConfigListener extends ConfigListener implements CliConfig { return NUMBER_OF_THREADS_SETTING.getValue(); } + public get maxPaths(): number { + return MAX_PATHS.getValue(); + } + protected handleDidChangeConfiguration(e: ConfigurationChangeEvent): void { this.handleDidChangeConfigurationForRelevantSettings(CLI_SETTINGS, e); } diff --git a/extensions/ql-vscode/src/vscode-tests/minimal-workspace/config.test.ts b/extensions/ql-vscode/src/vscode-tests/minimal-workspace/config.test.ts index 00659836625..03c961317a8 100644 --- a/extensions/ql-vscode/src/vscode-tests/minimal-workspace/config.test.ts +++ b/extensions/ql-vscode/src/vscode-tests/minimal-workspace/config.test.ts @@ -48,6 +48,10 @@ describe('config listeners', function() { name: 'codeQL.runningTests.numberOfThreads', property: 'numberTestThreads', values: [1, 0] + }, { + name: 'codeQL.runningQueries.maxPaths', + property: 'maxPaths', + values: [0, 1] }] }, {