private async Task CollectCodeFixesActions(Document document, TextSpan span, List <CodeAction> codeActions) { var diagnosticsWithProjects = await diagnostics.GetDiagnostics(ImmutableArray.Create(document.FilePath)); var groupedBySpan = diagnosticsWithProjects .SelectMany(x => x.Diagnostics) .Where(diagnostic => span.IntersectsWith(diagnostic.Location.SourceSpan)) .GroupBy(diagnostic => diagnostic.Location.SourceSpan); foreach (var diagnosticGroupedBySpan in groupedBySpan) { var diagnosticSpan = diagnosticGroupedBySpan.Key; var diagnosticsWithSameSpan = diagnosticGroupedBySpan.OrderByDescending(d => d.Severity); await AppendFixesAsync(document, diagnosticSpan, diagnosticsWithSameSpan, codeActions); } }
public async Task <QuickFixResponse> Handle(CodeCheckRequest request) { if (string.IsNullOrEmpty(request.FileName)) { var allDiagnostics = await _diagWorker.GetAllDiagnosticsAsync(); return(GetResponseFromDiagnostics(allDiagnostics, fileName: null)); } var diagnostics = await _diagWorker.GetDiagnostics(ImmutableArray.Create(request.FileName)); return(GetResponseFromDiagnostics(diagnostics, request.FileName)); }
public Task <ImmutableArray <DocumentDiagnostics> > GetDiagnostics(ImmutableArray <string> documentPaths) { return(_implementation.GetDiagnostics(documentPaths)); }
public Task <ImmutableArray <(string projectName, Diagnostic diagnostic)> > GetDiagnostics(ImmutableArray <string> documentPaths) { return(_implementation.GetDiagnostics(documentPaths)); }
public override async Task <IEnumerable <Diagnostic> > GetAllDiagnosticsAsync(Project project, CancellationToken cancellationToken) { var diagnostics = await _diagnosticWorker.GetDiagnostics(project.Documents.Select(x => x.FilePath).ToImmutableArray()); return(diagnostics.SelectMany(x => x.Diagnostics)); }