public async void CheckForConflictsAsync() { AnalyzerDependencyResults results = null; try { results = await GetConflictsAsync().ConfigureAwait(continueOnCapturedContext: true); } catch { return; } if (results == null) { return; } var builder = ImmutableArray.CreateBuilder <DiagnosticData>(); var conflicts = results.Conflicts; var missingDependencies = results.MissingDependencies; foreach (var project in _workspace.ProjectTracker.Projects) { builder.Clear(); foreach (var conflict in conflicts) { if (project.CurrentProjectAnalyzersContains(conflict.AnalyzerFilePath1) || project.CurrentProjectAnalyzersContains(conflict.AnalyzerFilePath2)) { builder.Add(CreateDiagnostic(project.Id, conflict)); } } foreach (var missingDependency in missingDependencies) { if (project.CurrentProjectAnalyzersContains(missingDependency.AnalyzerPath)) { builder.Add(CreateDiagnostic(project.Id, missingDependency)); } } _updateSource.UpdateDiagnosticsForProject(project.Id, s_dependencyConflictErrorId, builder.ToImmutable()); } foreach (var conflict in conflicts) { LogConflict(conflict); } foreach (var missingDependency in missingDependencies) { LogMissingDependency(missingDependency); } }
public async void CheckForConflictsAsync() { AnalyzerDependencyResults results = null; try { results = await GetConflictsAsync().ConfigureAwait(continueOnCapturedContext: true); } catch { return; } if (results == null) { return; } var builder = ImmutableArray.CreateBuilder <DiagnosticData>(); var conflicts = results.Conflicts; var missingDependencies = results.MissingDependencies; foreach (var project in _workspace.ProjectTracker.Projects) { builder.Clear(); foreach (var conflict in conflicts) { if (project.CurrentProjectAnalyzersContains(conflict.AnalyzerFilePath1) || project.CurrentProjectAnalyzersContains(conflict.AnalyzerFilePath2)) { var messageArguments = new string[] { conflict.AnalyzerFilePath1, conflict.AnalyzerFilePath2, conflict.Identity.ToString() }; DiagnosticData diagnostic; if (DiagnosticData.TryCreate(_analyzerDependencyConflictRule, messageArguments, project.Id, _workspace, out diagnostic)) { builder.Add(diagnostic); } } } foreach (var missingDependency in missingDependencies) { if (project.CurrentProjectAnalyzersContains(missingDependency.AnalyzerPath)) { var messageArguments = new string[] { missingDependency.AnalyzerPath, missingDependency.DependencyIdentity.ToString() }; DiagnosticData diagnostic; if (DiagnosticData.TryCreate(_missingAnalyzerReferenceRule, messageArguments, project.Id, _workspace, out diagnostic)) { builder.Add(diagnostic); } } } _updateSource.UpdateDiagnosticsForProject(project.Id, s_dependencyConflictErrorId, builder.ToImmutable()); } foreach (var conflict in conflicts) { LogConflict(conflict); } foreach (var missingDependency in missingDependencies) { LogMissingDependency(missingDependency); } }