|
8 | 8 | using Microsoft.VisualStudio.Shell; |
9 | 9 | using Serilog; |
10 | 10 | using Snyk.Code.Library.Domain.Analysis; |
11 | | - using Snyk.Code.Library.Service; |
12 | 11 | using Snyk.Common; |
13 | 12 | using Snyk.VisualStudio.Extension.Shared.CLI; |
14 | 13 | using Snyk.VisualStudio.Extension.Shared.CLI.Download; |
@@ -213,10 +212,12 @@ public async Task ScanAsync() |
213 | 212 |
|
214 | 213 | this.serviceProvider.AnalyticsService.LogAnalysisIsTriggeredEvent(this.GetSelectedFeatures(selectedFeatures)); |
215 | 214 |
|
216 | | - await this.ScanOssAsync(selectedFeatures); |
| 215 | + var ossScanTask = this.ScanOssAsync(selectedFeatures); |
| 216 | + var snykCodeScanTask = this.ScanSnykCodeAsync(selectedFeatures); |
217 | 217 |
|
218 | | - this.ScanSnykCode(selectedFeatures); |
219 | | - } catch (Exception ex) |
| 218 | + await Task.WhenAll(ossScanTask, snykCodeScanTask); |
| 219 | + } |
| 220 | + catch (Exception ex) |
220 | 221 | { |
221 | 222 | Logger.Error(ex, "Error on scan"); |
222 | 223 | } |
@@ -446,7 +447,7 @@ private async Task RunOssScanAsync(FeaturesSettings featuresSettings) |
446 | 447 | } |
447 | 448 | } |
448 | 449 |
|
449 | | - private void ScanSnykCode(FeaturesSettings featuresSettings) |
| 450 | + private async Task ScanSnykCodeAsync(FeaturesSettings featuresSettings) |
450 | 451 | { |
451 | 452 | try |
452 | 453 | { |
@@ -479,57 +480,52 @@ private void ScanSnykCode(FeaturesSettings featuresSettings) |
479 | 480 |
|
480 | 481 | Logger.Information("Start scan task"); |
481 | 482 |
|
482 | | - _ = Task.Run(async () => |
483 | | - { |
484 | | - try |
485 | | - { |
486 | | - try |
487 | | - { |
488 | | - this.isSnykCodeScanning = true; |
489 | | - |
490 | | - this.FireSnykCodeScanningStartedEvent(); |
| 483 | + await Task.Run(() => this.RunSnykCodeScanAsync(progressWorker.TokenSource.Token)); |
| 484 | + } |
| 485 | + catch (Exception ex) |
| 486 | + { |
| 487 | + Logger.Error(ex, "Error on SnykCode scan"); |
| 488 | + } |
| 489 | + } |
491 | 490 |
|
492 | | - var fileProvider = this.serviceProvider.SolutionService.FileProvider; |
| 491 | + private async Task RunSnykCodeScanAsync(CancellationToken cancellationToken) |
| 492 | + { |
| 493 | + try |
| 494 | + { |
| 495 | + this.isSnykCodeScanning = true; |
493 | 496 |
|
494 | | - var analysisResult = await this.serviceProvider.SnykCodeService.ScanAsync(fileProvider, progressWorker.TokenSource.Token); |
| 497 | + this.FireSnykCodeScanningStartedEvent(); |
495 | 498 |
|
496 | | - this.FireScanningUpdateEvent(analysisResult); |
| 499 | + var fileProvider = this.serviceProvider.SolutionService.FileProvider; |
497 | 500 |
|
498 | | - this.FireSnykCodeScanningFinishedEvent(); |
499 | | - } |
500 | | - catch (Exception e) |
501 | | - { |
502 | | - if (this.IsTaskCancelled(e)) |
503 | | - { |
504 | | - this.FireScanningCancelledEvent(); |
| 501 | + var analysisResult = await this.serviceProvider.SnykCodeService.ScanAsync(fileProvider, cancellationToken); |
505 | 502 |
|
506 | | - return; |
507 | | - } |
| 503 | + this.FireScanningUpdateEvent(analysisResult); |
508 | 504 |
|
509 | | - string errorMessage = this.serviceProvider.SnykCodeService.GetSnykCodeErrorMessage(e); |
| 505 | + this.FireSnykCodeScanningFinishedEvent(); |
| 506 | + } |
| 507 | + catch (Exception e) |
| 508 | + { |
| 509 | + if (this.IsTaskCancelled(e)) |
| 510 | + { |
| 511 | + this.FireScanningCancelledEvent(); |
510 | 512 |
|
511 | | - this.OnSnykCodeError(errorMessage); |
512 | | - } |
513 | | - } |
514 | | - catch (Exception exception) |
515 | | - { |
516 | | - Logger.Error(exception, string.Empty); |
| 513 | + return; |
| 514 | + } |
517 | 515 |
|
518 | | - this.FireScanningCancelledEvent(); |
519 | | - } |
520 | | - finally |
521 | | - { |
522 | | - this.DisposeCancellationTokenSource(this.snykCodeScanTokenSource); |
| 516 | + Logger.Error(e, "Error on Run Snyk Code scan"); |
523 | 517 |
|
524 | | - this.isSnykCodeScanning = false; |
| 518 | + string errorMessage = this.serviceProvider.SnykCodeService.GetSnykCodeErrorMessage(e); |
525 | 519 |
|
526 | | - this.FireTaskFinished(); |
527 | | - } |
528 | | - }); |
| 520 | + this.OnSnykCodeError(errorMessage); |
529 | 521 | } |
530 | | - catch (Exception ex) |
| 522 | + finally |
531 | 523 | { |
532 | | - Logger.Error(ex, "Error on SnykCode scan"); |
| 524 | + this.DisposeCancellationTokenSource(this.snykCodeScanTokenSource); |
| 525 | + |
| 526 | + this.isSnykCodeScanning = false; |
| 527 | + |
| 528 | + this.FireTaskFinished(); |
533 | 529 | } |
534 | 530 | } |
535 | 531 |
|
|
0 commit comments