internal override IEnumerable<Tuple<Diagnostic, CodeFixCollection>> GetDiagnosticAndFixes(TestWorkspace workspace, string fixAllActionId) { var providerAndFixer = CreateDiagnosticProviderAndFixer(workspace); var provider = providerAndFixer.Item1; Document document; TextSpan span; string annotation = null; if (!TryGetDocumentAndSelectSpan(workspace, out document, out span)) { document = GetDocumentAndAnnotatedSpan(workspace, out annotation, out span); } using (var testDriver = new TestDiagnosticAnalyzerDriver(document.Project, provider, includeSuppressedDiagnostics: IncludeSuppressedDiagnostics)) { var fixer = providerAndFixer.Item2; var diagnostics = testDriver.GetAllDiagnostics(provider, document, span) .Where(d => fixer.CanBeSuppressedOrUnsuppressed(d)) .ToImmutableArray(); if (!IncludeUnsuppressedDiagnostics) { diagnostics = diagnostics.WhereAsArray(d => d.IsSuppressed); } var wrapperCodeFixer = new WrapperCodeFixProvider(fixer, diagnostics); return GetDiagnosticAndFixes(diagnostics, provider, wrapperCodeFixer, testDriver, document, span, annotation, fixAllActionId); } }
internal override async Task<IEnumerable<Tuple<Diagnostic, CodeFixCollection>>> GetDiagnosticAndFixesAsync( TestWorkspace workspace, string fixAllActionId, object fixProviderData) { var providerAndFixer = CreateDiagnosticProviderAndFixer(workspace); var provider = providerAndFixer.Item1; Document document; TextSpan span; string annotation = null; if (!TryGetDocumentAndSelectSpan(workspace, out document, out span)) { document = GetDocumentAndAnnotatedSpan(workspace, out annotation, out span); } using (var testDriver = new TestDiagnosticAnalyzerDriver(document.Project, provider, includeSuppressedDiagnostics: IncludeSuppressedDiagnostics)) { var fixer = providerAndFixer.Item2; var diagnostics = (await testDriver.GetAllDiagnosticsAsync(provider, document, span)) .Where(d => fixer.CanBeSuppressedOrUnsuppressed(d)); var filteredDiagnostics = FilterDiagnostics(diagnostics); var wrapperCodeFixer = new WrapperCodeFixProvider(fixer, filteredDiagnostics.Select(d => d.Id)); return await GetDiagnosticAndFixesAsync(filteredDiagnostics, provider, wrapperCodeFixer, testDriver, document, span, annotation, fixAllActionId); } }