Skip to content

Commit 377f796

Browse files
elenatanasoiuchariskshati-patel
committed
Add result count to remote queries in Query History
When you run a remote query, we'd like to display more information about it in the Query History panel. At the moment we've improved this [1] by adding the language and number of repositories. In this commit we're also adding the number of results for a remote query. So the final format of the query history item will change from: `<query_name> - <query_status>` to `<query_name> (<language>) on x repositories (y results) - <query_status>` [1]: #1427 Co-authored-by: Charis Kyriakou <charisk@github.com> Co-authored-by: Shati Patel <shati-patel@github.com>
1 parent 651a6fb commit 377f796

File tree

6 files changed

+11
-6
lines changed

6 files changed

+11
-6
lines changed

extensions/ql-vscode/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@
224224
},
225225
"codeQL.queryHistory.format": {
226226
"type": "string",
227-
"default": "%q on %d - %s, %r [%t]",
227+
"default": "%q on %d - %s %r [%t]",
228228
"markdownDescription": "Default string for how to label query history items.\n* %t is the time of the query\n* %q is the human-readable query name\n* %f is the query file name\n* %d is the database name\n* %r is the number of results\n* %s is a status string"
229229
},
230230
"codeQL.queryHistory.ttl": {

extensions/ql-vscode/src/history-item-label-provider.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,7 @@ export class HistoryItemLabelProvider {
7474
// Return the number of repositories queried if available. Otherwise, use the controller repository name.
7575
d: numRepositoriesQueried ? numRepositoriesLabel : `${item.remoteQuery.controllerRepository.owner}/${item.remoteQuery.controllerRepository.name}`,
7676

77-
// There is no synchronous way to get the results count.
78-
r: '',
77+
r: item.resultCount === undefined ? '' : `(${item.resultCount} results)`,
7978
s: item.status,
8079
f: path.basename(item.remoteQuery.queryFilePath),
8180
'%': '%'

extensions/ql-vscode/src/query-history.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -574,6 +574,7 @@ export class QueryHistoryManager extends DisposableObject {
574574
const remoteQueryHistoryItem = item as RemoteQueryHistoryItem;
575575
remoteQueryHistoryItem.status = event.status;
576576
remoteQueryHistoryItem.failureReason = event.failureReason;
577+
remoteQueryHistoryItem.resultCount = event.resultCount;
577578
if (event.status === QueryStatus.Completed) {
578579
remoteQueryHistoryItem.completed = true;
579580
}

extensions/ql-vscode/src/remote-queries/remote-queries-manager.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ export interface UpdatedQueryStatusEvent {
4242
status: QueryStatus;
4343
failureReason?: string;
4444
numRepositoriesQueried?: number;
45+
resultCount?: number;
4546
}
4647

4748
export class RemoteQueriesManager extends DisposableObject {
@@ -317,10 +318,12 @@ export class RemoteQueriesManager extends DisposableObject {
317318
if (resultIndex) {
318319
const metadata = await this.getRepositoriesMetadata(resultIndex, credentials);
319320
const queryResult = this.mapQueryResult(executionEndTime, resultIndex, queryId, metadata);
321+
const resultCount = queryResult.analysisSummaries.reduce((acc, cur) => acc + cur.resultCount, 0);
320322
this.remoteQueryStatusUpdateEventEmitter.fire({
321323
queryId,
322324
status: QueryStatus.Completed,
323325
numRepositoriesQueried: queryResult.analysisSummaries.length,
326+
resultCount
324327
});
325328

326329
await this.storeJsonFile(queryId, 'query-result.json', queryResult);

extensions/ql-vscode/src/remote-queries/remote-query-history-item.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { RemoteQuery } from './remote-query';
77
export interface RemoteQueryHistoryItem {
88
readonly t: 'remote';
99
failureReason?: string;
10+
resultCount?: number;
1011
status: QueryStatus;
1112
completed: boolean;
1213
readonly queryId: string,

extensions/ql-vscode/src/vscode-tests/no-workspace/history-item-label-provider.test.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,17 +102,17 @@ describe('HistoryItemLabelProvider', () => {
102102

103103

104104
config.format = '%t %q %d %s %f %r %%';
105-
expect(labelProvider.getLabel(fqi)).to.eq(`${dateStr} query-name (javascript) github/vscode-codeql-integration-tests in progress query-file.ql %`);
105+
expect(labelProvider.getLabel(fqi)).to.eq(`${dateStr} query-name (javascript) github/vscode-codeql-integration-tests in progress query-file.ql (16 results) %`);
106106

107107
config.format = '%t %q %d %s %f %r %%::%t %q %d %s %f %r %%';
108-
expect(labelProvider.getLabel(fqi)).to.eq(`${dateStr} query-name (javascript) github/vscode-codeql-integration-tests in progress query-file.ql %::${dateStr} query-name (javascript) github/vscode-codeql-integration-tests in progress query-file.ql %`);
108+
expect(labelProvider.getLabel(fqi)).to.eq(`${dateStr} query-name (javascript) github/vscode-codeql-integration-tests in progress query-file.ql (16 results) %::${dateStr} query-name (javascript) github/vscode-codeql-integration-tests in progress query-file.ql (16 results) %`);
109109
});
110110

111111
it('should use number of repositories instead of controller repo if available', () => {
112112
const fqi = createMockRemoteQueryInfo(undefined, 2);
113113

114114
config.format = '%t %q %d %s %f %r %%';
115-
expect(labelProvider.getLabel(fqi)).to.eq(`${dateStr} query-name (javascript) 2 repositories in progress query-file.ql %`);
115+
expect(labelProvider.getLabel(fqi)).to.eq(`${dateStr} query-name (javascript) 2 repositories in progress query-file.ql (16 results) %`);
116116
});
117117

118118
it('should get query short label', () => {
@@ -142,6 +142,7 @@ describe('HistoryItemLabelProvider', () => {
142142
numRepositoriesQueried,
143143
},
144144
status: 'in progress',
145+
resultCount: 16,
145146
} as unknown as RemoteQueryHistoryItem;
146147
}
147148
});

0 commit comments

Comments
 (0)