From 8dfcf8b1d06ee9e40da04798c808ec32eb146f14 Mon Sep 17 00:00:00 2001 From: Jami Cogswell Date: Fri, 27 Jun 2025 19:12:17 +0000 Subject: [PATCH 01/38] Add 'View Autofixes' button to variant analysis view --- .../ql-vscode/src/common/interface-types.ts | 6 ++++++ .../variant-analysis-manager.ts | 4 ++++ .../variant-analysis-view-manager.ts | 4 ++++ .../variant-analysis/variant-analysis-view.ts | 6 ++++++ .../view/variant-analysis/VariantAnalysis.tsx | 12 ++++++++++++ .../variant-analysis/VariantAnalysisActions.tsx | 17 +++++++++++++++++ .../variant-analysis/VariantAnalysisHeader.tsx | 4 ++++ .../__tests__/VariantAnalysisActions.spec.tsx | 3 +++ 8 files changed, 56 insertions(+) diff --git a/extensions/ql-vscode/src/common/interface-types.ts b/extensions/ql-vscode/src/common/interface-types.ts index 2a0fb24c811..3d23df070ef 100644 --- a/extensions/ql-vscode/src/common/interface-types.ts +++ b/extensions/ql-vscode/src/common/interface-types.ts @@ -527,6 +527,11 @@ interface OpenQueryTextMessage { t: "openQueryText"; } +interface ViewAutofixesMessage { + t: "viewAutofixes"; + filterSort?: RepositoriesFilterSortStateWithIds; +} + interface CopyRepositoryListMessage { t: "copyRepositoryList"; filterSort?: RepositoriesFilterSortStateWithIds; @@ -561,6 +566,7 @@ export type FromVariantAnalysisMessage = | RequestRepositoryResultsMessage | OpenQueryFileMessage | OpenQueryTextMessage + | ViewAutofixesMessage | CopyRepositoryListMessage | ExportResultsMessage | OpenLogsMessage diff --git a/extensions/ql-vscode/src/variant-analysis/variant-analysis-manager.ts b/extensions/ql-vscode/src/variant-analysis/variant-analysis-manager.ts index 4e56c3cea7f..de7d1980629 100644 --- a/extensions/ql-vscode/src/variant-analysis/variant-analysis-manager.ts +++ b/extensions/ql-vscode/src/variant-analysis/variant-analysis-manager.ts @@ -967,6 +967,10 @@ export class VariantAnalysisManager ); } + public async viewAutofixes() { + // TODO + } + public async copyRepoListToClipboard( variantAnalysisId: number, filterSort: RepositoriesFilterSortStateWithIds = defaultFilterSortState, diff --git a/extensions/ql-vscode/src/variant-analysis/variant-analysis-view-manager.ts b/extensions/ql-vscode/src/variant-analysis/variant-analysis-view-manager.ts index cc531c558e7..db591ac3d95 100644 --- a/extensions/ql-vscode/src/variant-analysis/variant-analysis-view-manager.ts +++ b/extensions/ql-vscode/src/variant-analysis/variant-analysis-view-manager.ts @@ -34,4 +34,8 @@ export interface VariantAnalysisViewManager< variantAnalysisId: number, filterSort?: RepositoriesFilterSortStateWithIds, ): Promise; + viewAutofixes( + variantAnalysisId: number, + filterSort?: RepositoriesFilterSortStateWithIds, + ): Promise; } diff --git a/extensions/ql-vscode/src/variant-analysis/variant-analysis-view.ts b/extensions/ql-vscode/src/variant-analysis/variant-analysis-view.ts index f8a87e47b87..0656a0e3a0e 100644 --- a/extensions/ql-vscode/src/variant-analysis/variant-analysis-view.ts +++ b/extensions/ql-vscode/src/variant-analysis/variant-analysis-view.ts @@ -135,6 +135,12 @@ export class VariantAnalysisView case "openQueryText": await this.manager.openQueryText(this.variantAnalysisId); break; + case "viewAutofixes": + await this.manager.viewAutofixes( + this.variantAnalysisId, + msg.filterSort, + ); + break; case "copyRepositoryList": await this.manager.copyRepoListToClipboard( this.variantAnalysisId, diff --git a/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysis.tsx b/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysis.tsx index 5b68d114d6f..524dbd57fed 100644 --- a/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysis.tsx +++ b/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysis.tsx @@ -105,6 +105,17 @@ export function VariantAnalysis({ } }, []); + const viewAutofixes = useCallback(() => { + vscode.postMessage({ + t: "viewAutofixes", + filterSort: { + ...filterSortState, + repositoryIds: selectedRepositoryIds, + }, + }); + sendTelemetry("variant-analysis-view-autofixes"); + }, [filterSortState, selectedRepositoryIds]); + const copyRepositoryList = useCallback(() => { vscode.postMessage({ t: "copyRepositoryList", @@ -148,6 +159,7 @@ export function VariantAnalysis({ onOpenQueryFileClick={openQueryFile} onViewQueryTextClick={openQueryText} onStopQueryClick={stopQuery} + onViewAutofixesClick={viewAutofixes} onCopyRepositoryListClick={copyRepositoryList} onExportResultsClick={exportResults} onViewLogsClick={onViewLogsClick} diff --git a/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisActions.tsx b/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisActions.tsx index 8a573761ef0..d0e467b14eb 100644 --- a/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisActions.tsx +++ b/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisActions.tsx @@ -9,8 +9,10 @@ export type VariantAnalysisActionsProps = { stopQueryDisabled?: boolean; showResultActions?: boolean; + onViewAutofixesClick: () => void; onCopyRepositoryListClick: () => void; onExportResultsClick: () => void; + viewAutofixesDisabled?: boolean; copyRepositoryListDisabled?: boolean; exportResultsDisabled?: boolean; @@ -55,8 +57,10 @@ export const VariantAnalysisActions = ({ onStopQueryClick, stopQueryDisabled, showResultActions, + onViewAutofixesClick, onCopyRepositoryListClick, onExportResultsClick, + viewAutofixesDisabled, copyRepositoryListDisabled, exportResultsDisabled, hasSelectedRepositories, @@ -66,6 +70,19 @@ export const VariantAnalysisActions = ({ {showResultActions && ( <> + + {userSettings.shouldShowViewAutofixesBtn && ( + + )}