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);
            }
        }
Ejemplo n.º 2
0
        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));
            }