From 916edc9bb4d7365f53325fdf1f9f0d1b06631358 Mon Sep 17 00:00:00 2001 From: Ilya Siamionau Date: Thu, 18 Jan 2024 12:12:28 +0100 Subject: [PATCH 1/3] CM-31339 - Display progress bar only for on-demand scans --- src/extension.ts | 1 + src/services/secretsScanner.ts | 21 ++++++++++++++------- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 6898ae6..dec2521 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -237,6 +237,7 @@ function initCommands( documentToScan: vscode.window.activeTextEditor.document, workspaceFolderPath: vscode.workspace.workspaceFolders?.[0]?.uri.fsPath, diagnosticCollection, + onDemand: true, }, treeView ); diff --git a/src/services/secretsScanner.ts b/src/services/secretsScanner.ts index 94145ab..68c0d60 100644 --- a/src/services/secretsScanner.ts +++ b/src/services/secretsScanner.ts @@ -18,19 +18,26 @@ interface SecretsScanParams { workspaceFolderPath?: string; diagnosticCollection: vscode.DiagnosticCollection; config: IConfig; + onDemand?: boolean; } export const secretScan = ( params: SecretsScanParams, treeView?: TreeView, ) => { + // we are showing progress bar only for on-demand scans + if (!params.onDemand) { + _secretScan(params, undefined, undefined, treeView); + return; + } + vscode.window.withProgress( { location: vscode.ProgressLocation.Notification, cancellable: true, }, async (progress, token) => { - await _secretScanWithProgress(params, progress, token, treeView); + await _secretScan(params, progress, token, treeView); }, ); }; @@ -45,22 +52,22 @@ const _getRunnableCliSecretsScan = (params: SecretsScanParams): RunCliResult => return cliWrapper.getRunnableSecretsScanCommand(cliParams); }; -const _initScanState = (params: SecretsScanParams, progress: ProgressBar) => { +const _initScanState = (params: SecretsScanParams, progress?: ProgressBar) => { extensionOutput.info(StatusBarTexts.ScanWait); extensionOutput.info('Initiating scan for file: ' + params.documentToScan.fileName); statusBar.showScanningInProgress(); updateWorkspaceState(VscodeStates.SecretsScanInProgress, true); - progress.report({ + progress?.report({ message: `Secrets scanning ${params.documentToScan.fileName}...`, }); }; -export async function _secretScanWithProgress( +export async function _secretScan( params: SecretsScanParams, - progress: ProgressBar, - cancellationToken: vscode.CancellationToken, + progress?: ProgressBar, + cancellationToken?: vscode.CancellationToken, treeView?: TreeView, ) { try { @@ -77,7 +84,7 @@ export async function _secretScanWithProgress( const runnableSecretsScan = _getRunnableCliSecretsScan(params); - cancellationToken.onCancellationRequested(async () => { + cancellationToken?.onCancellationRequested(async () => { await runnableSecretsScan.getCancelPromise(); finalizeScanState(VscodeStates.SecretsScanInProgress, true, progress); }); From e3db7f0612b7abccecfa4dbff63288c948166c9d Mon Sep 17 00:00:00 2001 From: Ilya Siamionau Date: Thu, 18 Jan 2024 12:25:59 +0100 Subject: [PATCH 2/3] add SCA --- src/extension.ts | 1 + src/services/scaScanner.ts | 24 +++++++++++++++--------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index dec2521..3192ab8 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -402,6 +402,7 @@ function initCommands( pathToScan: workspaceFolder.uri.fsPath, workspaceFolderPath: workspaceFolder.uri.fsPath, diagnosticCollection, + onDemand: true, }, treeView ); diff --git a/src/services/scaScanner.ts b/src/services/scaScanner.ts index db941e0..8ae085c 100644 --- a/src/services/scaScanner.ts +++ b/src/services/scaScanner.ts @@ -22,6 +22,7 @@ interface ScaScanParams { workspaceFolderPath?: string; diagnosticCollection: vscode.DiagnosticCollection; config: IConfig; + onDemand?: boolean; } export function scaScan( @@ -32,18 +33,23 @@ export function scaScan( return; } + if (!params.onDemand) { + _scaScan(params, undefined, undefined, treeView); + return; + } + vscode.window.withProgress( { location: vscode.ProgressLocation.Notification, cancellable: true, }, async (progress, token) => { - await _scaScanWithProgress(params, progress, token, treeView); + await _scaScan(params, progress, token, treeView); }, ); } -const _initScanState = (params: ScaScanParams, progress: ProgressBar) => { +const _initScanState = (params: ScaScanParams, progress?: ProgressBar) => { extensionOutput.info(StatusBarTexts.ScanWait); statusBar.showScanningInProgress(); @@ -52,7 +58,7 @@ const _initScanState = (params: ScaScanParams, progress: ProgressBar) => { ); updateWorkspaceState(VscodeStates.ScaScanInProgress, true); - progress.report({ + progress?.report({ message: `SCA scanning ${params.workspaceFolderPath}...`, }); }; @@ -67,18 +73,18 @@ const _getRunnableCliScaScan = (params: ScaScanParams): RunCliResult => { return cliWrapper.getRunnableScaScanCommand(cliParams); }; -const _scaScanWithProgress = async ( +const _scaScan = async ( params: ScaScanParams, - progress: ProgressBar, - cancellationToken: vscode.CancellationToken, - treeView: TreeView + progress?: ProgressBar, + cancellationToken?: vscode.CancellationToken, + treeView?: TreeView ) => { try { _initScanState(params, progress); const runnableScaScan = _getRunnableCliScaScan(params); - cancellationToken.onCancellationRequested(async () => { + cancellationToken?.onCancellationRequested(async () => { await runnableScaScan.getCancelPromise(); finalizeScanState(VscodeStates.ScaScanInProgress, true, progress); }); @@ -144,7 +150,7 @@ export const detectionsToDiagnostics = async ( const handleScanDetections = async ( result: any, diagnosticCollection: vscode.DiagnosticCollection, - treeView: TreeView + treeView?: TreeView ) => { const {detections} = result; From 3af9ed22039db9518e900611421ef26bd5ef1e36 Mon Sep 17 00:00:00 2001 From: Ilya Siamionau Date: Thu, 18 Jan 2024 12:27:35 +0100 Subject: [PATCH 3/3] update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 44c32c5..6f204b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## [v1.2.1] +- Disable progress bar for scans on save - Fix communication with CLI - Fix quick fix ignore functionality for SCA