Skip to content

Commit 94edb9b

Browse files
authored
Merge pull request #2749 from github/shati-patel/implement-dropdown
Make "result format" dropdown determine result display
2 parents 4a87a6f + 0ccd39a commit 94edb9b

7 files changed

Lines changed: 42 additions & 2 deletions

File tree

extensions/ql-vscode/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
## [UNRELEASED]
44

5+
- Update how variant analysis results are displayed. For queries with ["path-problem" or "problem" `@kind`](https://codeql.github.com/docs/writing-codeql-queries/metadata-for-codeql-queries/#metadata-properties), you can choose to display the results as rendered alerts or as a table of raw results. For queries with any other `@kind`, the results are displayed as a table. [#2745](https://github.com/github/vscode-codeql/pull/2745) & [#2749](https://github.com/github/vscode-codeql/pull/2749)
56
- When running variant analyses, don't download artifacts for repositories with no results. [#2736](https://github.com/github/vscode-codeql/pull/2736)
67
- Group the extension settings, so that they're easier to find in the Settings UI. [#2706](https://github.com/github/vscode-codeql/pull/2706)
78

extensions/ql-vscode/src/view/variant-analysis/AnalyzedRepoItemContent.tsx

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
VariantAnalysisScannedRepositoryDownloadStatus,
1212
} from "../../variant-analysis/shared/variant-analysis";
1313
import { Alert } from "../common";
14+
import { ResultFormat } from "../../variant-analysis/shared/variant-analysis-result-format";
1415

1516
const ContentContainer = styled.div`
1617
display: flex;
@@ -37,20 +38,42 @@ const RawResultsContainer = styled.div`
3738
margin-top: 0.5em;
3839
`;
3940

41+
function chooseResultFormat(
42+
interpretedResults: AnalysisAlert[] | undefined,
43+
rawResults: AnalysisRawResults | undefined,
44+
resultFormat: ResultFormat,
45+
): ResultFormat | undefined {
46+
if (interpretedResults && resultFormat === ResultFormat.Alerts) {
47+
return ResultFormat.Alerts;
48+
} else if (rawResults) {
49+
return ResultFormat.RawResults;
50+
} else {
51+
return undefined;
52+
}
53+
}
54+
4055
export type AnalyzedRepoItemContentProps = {
4156
status?: VariantAnalysisRepoStatus;
4257
downloadStatus?: VariantAnalysisScannedRepositoryDownloadStatus;
4358

4459
interpretedResults?: AnalysisAlert[];
4560
rawResults?: AnalysisRawResults;
61+
62+
resultFormat: ResultFormat;
4663
};
4764

4865
export const AnalyzedRepoItemContent = ({
4966
status,
5067
downloadStatus,
5168
interpretedResults,
5269
rawResults,
70+
resultFormat,
5371
}: AnalyzedRepoItemContentProps) => {
72+
const chosenResultFormat = chooseResultFormat(
73+
interpretedResults,
74+
rawResults,
75+
resultFormat,
76+
);
5477
return (
5578
<ContentContainer>
5679
{status === VariantAnalysisRepoStatus.Failed && (
@@ -90,7 +113,7 @@ export const AnalyzedRepoItemContent = ({
90113
/>
91114
</AlertContainer>
92115
)}
93-
{interpretedResults && (
116+
{interpretedResults && chosenResultFormat === ResultFormat.Alerts && (
94117
<InterpretedResultsContainer>
95118
{interpretedResults.map((r, i) => (
96119
<InterpretedResultItem key={i}>
@@ -99,7 +122,7 @@ export const AnalyzedRepoItemContent = ({
99122
))}
100123
</InterpretedResultsContainer>
101124
)}
102-
{rawResults && (
125+
{rawResults && chosenResultFormat === ResultFormat.RawResults && (
103126
<RawResultsContainer>
104127
<RawResultsTable
105128
schema={rawResults.schema}

extensions/ql-vscode/src/view/variant-analysis/RepoRow.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import { AnalyzedRepoItemContent } from "./AnalyzedRepoItemContent";
2626
import StarCount from "../common/StarCount";
2727
import { useTelemetryOnChange } from "../common/telemetry";
2828
import { DeterminateProgressRing } from "../common/DeterminateProgressRing";
29+
import { ResultFormat } from "../../variant-analysis/shared/variant-analysis-result-format";
2930

3031
// This will ensure that these icons have a className which we can use in the TitleContainer
3132
const ExpandCollapseCodicon = styled(Codicon)``;
@@ -98,6 +99,8 @@ export type RepoRowProps = {
9899
interpretedResults?: AnalysisAlert[];
99100
rawResults?: AnalysisRawResults;
100101

102+
resultFormat?: ResultFormat;
103+
101104
selected?: boolean;
102105
onSelectedChange?: (repositoryId: number, selected: boolean) => void;
103106
};
@@ -168,6 +171,7 @@ export const RepoRow = ({
168171
resultCount,
169172
interpretedResults,
170173
rawResults,
174+
resultFormat = ResultFormat.Alerts,
171175
selected,
172176
onSelectedChange,
173177
}: RepoRowProps) => {
@@ -304,6 +308,7 @@ export const RepoRow = ({
304308
downloadStatus={downloadState?.downloadStatus}
305309
interpretedResults={interpretedResults}
306310
rawResults={rawResults}
311+
resultFormat={resultFormat}
307312
/>
308313
)}
309314
</div>

extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisAnalyzedRepos.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
filterAndSortRepositoriesWithResultsByName,
1212
RepositoriesFilterSortState,
1313
} from "../../variant-analysis/shared/variant-analysis-filter-sort";
14+
import { ResultFormat } from "../../variant-analysis/shared/variant-analysis-result-format";
1415

1516
const Container = styled.div`
1617
display: flex;
@@ -26,6 +27,8 @@ export type VariantAnalysisAnalyzedReposProps = {
2627

2728
filterSortState?: RepositoriesFilterSortState;
2829

30+
resultFormat: ResultFormat;
31+
2932
selectedRepositoryIds?: number[];
3033
setSelectedRepositoryIds?: Dispatch<SetStateAction<number[]>>;
3134
};
@@ -35,6 +38,7 @@ export const VariantAnalysisAnalyzedRepos = ({
3538
repositoryStates,
3639
repositoryResults,
3740
filterSortState,
41+
resultFormat,
3842
selectedRepositoryIds,
3943
setSelectedRepositoryIds,
4044
}: VariantAnalysisAnalyzedReposProps) => {
@@ -93,6 +97,7 @@ export const VariantAnalysisAnalyzedRepos = ({
9397
resultCount={repository.resultCount}
9498
interpretedResults={results?.interpretedResults}
9599
rawResults={results?.rawResults}
100+
resultFormat={resultFormat}
96101
selected={selectedRepositoryIds?.includes(repository.repository.id)}
97102
onSelectedChange={onSelectedChange}
98103
/>

extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisOutcomePanels.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ export const VariantAnalysisOutcomePanels = ({
136136
repositoryStates={repositoryStates}
137137
repositoryResults={repositoryResults}
138138
filterSortState={filterSortState}
139+
resultFormat={resultFormat}
139140
selectedRepositoryIds={selectedRepositoryIds}
140141
setSelectedRepositoryIds={setSelectedRepositoryIds}
141142
/>
@@ -185,6 +186,7 @@ export const VariantAnalysisOutcomePanels = ({
185186
repositoryStates={repositoryStates}
186187
repositoryResults={repositoryResults}
187188
filterSortState={filterSortState}
189+
resultFormat={resultFormat}
188190
selectedRepositoryIds={selectedRepositoryIds}
189191
setSelectedRepositoryIds={setSelectedRepositoryIds}
190192
/>

extensions/ql-vscode/src/view/variant-analysis/__tests__/AnalyzedRepoItemContent.spec.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,14 @@ import {
88
AnalyzedRepoItemContent,
99
AnalyzedRepoItemContentProps,
1010
} from "../AnalyzedRepoItemContent";
11+
import { ResultFormat } from "../../../variant-analysis/shared/variant-analysis-result-format";
1112

1213
describe(AnalyzedRepoItemContent.name, () => {
1314
const render = (props: Partial<AnalyzedRepoItemContentProps> = {}) => {
1415
return reactRender(
1516
<AnalyzedRepoItemContent
1617
status={VariantAnalysisRepoStatus.Succeeded}
18+
resultFormat={ResultFormat.Alerts}
1719
{...props}
1820
/>,
1921
);

extensions/ql-vscode/src/view/variant-analysis/__tests__/VariantAnalysisAnalyzedRepos.spec.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import { createMockRepositoryWithMetadata } from "../../../../test/factories/var
1515
import { createMockScannedRepo } from "../../../../test/factories/variant-analysis/shared/scanned-repositories";
1616
import { SortKey } from "../../../variant-analysis/shared/variant-analysis-filter-sort";
1717
import { permissiveFilterSortState } from "../../../../test/unit-tests/variant-analysis-filter-sort.test";
18+
import { ResultFormat } from "../../../variant-analysis/shared/variant-analysis-result-format";
1819

1920
describe(VariantAnalysisAnalyzedRepos.name, () => {
2021
const defaultVariantAnalysis = createMockVariantAnalysis({
@@ -99,6 +100,7 @@ describe(VariantAnalysisAnalyzedRepos.name, () => {
99100
return reactRender(
100101
<VariantAnalysisAnalyzedRepos
101102
variantAnalysis={defaultVariantAnalysis}
103+
resultFormat={ResultFormat.Alerts}
102104
{...props}
103105
/>,
104106
);

0 commit comments

Comments
 (0)