Skip to content

Commit 1377969

Browse files
committed
Add suggestive message to alerts view when 0 alerts, >0 raw results.
Fixes https://github.com/github/codeql-coreql-team/issues/383.
1 parent 41f1aae commit 1377969

File tree

4 files changed

+34
-5
lines changed

4 files changed

+34
-5
lines changed

extensions/ql-vscode/CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# CodeQL for Visual Studio Code: Changelog
22

3+
## 1.1.3
4+
5+
- Add a suggestion in alerts view to view raw results, when there are
6+
raw results but no alerts.
7+
38
## 1.1.2 - 28 April 2020
49

510
- Implement syntax highlighting for the new `unique` aggregate.

extensions/ql-vscode/src/view/alert-table.tsx

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,14 @@ export class PathTable extends React.Component<PathTableProps, PathTableState> {
6969
});
7070
}
7171

72+
renderNoResults(): JSX.Element {
73+
if (this.props.nonemptyRawResults) {
74+
return <span>No Alerts. See <a href='#' onClick={this.props.showRawResults}>raw results</a>.</span>;
75+
} else {
76+
return <span>No Alerts</span>;
77+
}
78+
}
79+
7280
render(): JSX.Element {
7381
const { databaseUri, resultSet } = this.props;
7482

@@ -156,13 +164,14 @@ export class PathTable extends React.Component<PathTableProps, PathTableState> {
156164
return (e) => this.toggle(e, indices);
157165
};
158166

159-
const noResults = <span>No Results</span>; // TODO: Maybe make this look nicer
167+
if (resultSet.sarif.runs.length === 0 ||
168+
resultSet.sarif.runs[0].results === undefined ||
169+
resultSet.sarif.runs[0].results.length === 0) {
170+
return this.renderNoResults();
171+
}
160172

161173
let expansionIndex = 0;
162174

163-
if (resultSet.sarif.runs.length === 0) return noResults;
164-
if (resultSet.sarif.runs[0].results === undefined) return noResults;
165-
166175
resultSet.sarif.runs[0].results.forEach((result, resultIndex) => {
167176
const text = result.message.text || '[no text]';
168177
const msg: JSX.Element[] =

extensions/ql-vscode/src/view/result-table-utils.tsx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,18 @@ export interface ResultTableProps {
1010
metadata?: QueryMetadata;
1111
resultsPath: string | undefined;
1212
sortState?: RawResultsSortState;
13+
14+
/**
15+
* Holds if there are any raw results. When that is the case, we
16+
* want to direct users to pay attention to raw results if
17+
* interpreted results are empty.
18+
*/
19+
nonemptyRawResults: boolean;
20+
21+
/**
22+
* Callback to show raw results.
23+
*/
24+
showRawResults: () => void;
1325
}
1426

1527
export const className = 'vscode-codeql__result-table';

extensions/ql-vscode/src/view/result-tables.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ export class ResultTables
123123
const resultSets = this.getResultSets();
124124

125125
const resultSet = resultSets.find(resultSet => resultSet.schema.name == selectedTable);
126+
const nonemptyRawResults = resultSets.some(resultSet => resultSet.t == 'RawResultSet' && resultSet.rows.length > 0);
126127
const numberOfResults = resultSet && renderResultCountString(resultSet);
127128

128129
return <div>
@@ -149,7 +150,9 @@ export class ResultTables
149150
<ResultTable key={resultSet.schema.name} resultSet={resultSet}
150151
databaseUri={this.props.database.databaseUri}
151152
resultsPath={this.props.resultsPath}
152-
sortState={this.props.sortStates.get(resultSet.schema.name)} />
153+
sortState={this.props.sortStates.get(resultSet.schema.name)}
154+
nonemptyRawResults={nonemptyRawResults}
155+
showRawResults={() => { this.setState({ selectedTable: SELECT_TABLE_NAME }) }} />
153156
}
154157
</div>;
155158
}

0 commit comments

Comments
 (0)