protected override void AnalyzeTargets()
        {
            ThreadHelper.ThrowIfNotOnUIThread();

            Solution solution = this.dte.Solution;

            if (solution == null)
            {
                return;
            }

            Projects projects = solution.Projects;

            if (projects == null)
            {
                return;
            }

            var targetFiles = new List <string>();

            foreach (Project project in projects)
            {
                targetFiles.AddRange(SariferPackageCommand.GetFiles(project));
            }

            // Disable the menu click when we are analysing.
            SariferPackageCommand.DisableAnalyzeCommands(this.menuCommandService);
            this.backgroundAnalysisService.AnalyzeAsync(solution.FullName, targetFiles, this.cancellationTokenSource.Token)
            .FileAndForget(FileAndForgetEventName.BackgroundAnalysisFailure);
        }
        protected override void AnalyzeTargets()
        {
            ThreadHelper.ThrowIfNotOnUIThread();

            IEnumerable <Project> selectedProjects = (this.dte.ActiveSolutionProjects as object[]).OfType <Project>();

            if (selectedProjects != null)
            {
                foreach (Project project in selectedProjects)
                {
                    // Disable the menu click when we are analysing.
                    SariferPackageCommand.DisableAnalyzeCommands(this.menuCommandService);

                    List <string> targetFiles = SariferPackageCommand.GetFiles(project);

                    this.backgroundAnalysisService.AnalyzeAsync(project.FullName, targetFiles, this.cancellationTokenSource.Token)
                    .FileAndForget(FileAndForgetEventName.BackgroundAnalysisFailure);
                }
            }
        }
        protected override void AnalyzeTargets()
        {
            ThreadHelper.ThrowIfNotOnUIThread();

            var targetFiles = new List <string>();

            if (this.dte.SelectedItems != null && this.dte.SelectedItems.Count > 0)
            {
                foreach (SelectedItem selectedItem in this.dte.SelectedItems)
                {
                    targetFiles.AddRange(SariferPackageCommand.GetFiles(selectedItem));
                }

                if (targetFiles.Any())
                {
                    // Disable the menu click when we are analysing.
                    SariferPackageCommand.DisableAnalyzeCommands(this.menuCommandService);
                    string logId = targetFiles.First() + (targetFiles.Count > 1 ? $"~{targetFiles.Count}" : string.Empty);
                    this.backgroundAnalysisService.AnalyzeAsync(logId, targetFiles, this.cancellationTokenSource.Token)
                    .FileAndForget(FileAndForgetEventName.BackgroundAnalysisFailure);
                }
            }
        }
 protected void BackgroundAnalysisService_AnalysisCompleted(object sender, EventArgs e)
 {
     SariferPackageCommand.EnableAnalyzeCommands(this.menuCommandService);
 }