/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/LanguageServer/Protocol/Handler/Diagnostics/DiagnosticSourceProviders/WorkspaceDiagnosticSourceHelpers.cs
71 строка
3 KB
David Barbet
Fix information logs getting logged as debug in VSCode
09 май 2025, 02:56
09 май 2025, 02:56
6304674
Код
Авторство
О чём код?
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using System.Collections.Generic; using System.Collections.Immutable; using System.Linq; using Microsoft.CodeAnalysis.Host; using Roslyn.Utilities; namespace Microsoft.CodeAnalysis.LanguageServer.Handler.Diagnostics; internal static class WorkspaceDiagnosticSourceHelpers { public static IEnumerable<Project> GetProjectsInPriorityOrder(Solution solution, ImmutableArray<string> supportedLanguages) { return GetProjectsInPriorityOrderWorker(solution) .WhereNotNull() .Distinct() .Where(p => supportedLanguages.Contains(p.Language)); static IEnumerable<Project?> GetProjectsInPriorityOrderWorker(Solution solution) { var documentTrackingService = solution.Services.GetRequiredService<IDocumentTrackingService>(); // Collect all the documents from the solution in the order we'd like to get diagnostics for. This will // prioritize the files from currently active projects, but then also include all other docs in all projects // (depending on current FSA settings). var activeDocument = documentTrackingService.GetActiveDocument(solution); var visibleDocuments = documentTrackingService.GetVisibleDocuments(solution); yield return activeDocument?.Project; foreach (var doc in visibleDocuments) yield return doc.Project; foreach (var project in solution.Projects) yield return project; } } public static bool ShouldSkipDocument(RequestContext context, TextDocument document) { // Only consider closed documents here (and only open ones in the DocumentPullDiagnosticHandler). // Each handler treats those as separate worlds that they are responsible for. if (context.IsTracking(document.GetURI())) { context.TraceDebug($"Skipping tracked document: {document.GetURI()}"); return true; } // Do not attempt to get workspace diagnostics for Razor files, Razor will directly ask us for document diagnostics // for any razor file they are interested in. if (document.IsRazorDocument()) { return true; } // Temporary workaround for https://devdiv.visualstudio.com/DevDiv/_workitems/edit/2021832 // LSP workspace diagnostics are incorrectly returning diagnostics for the backing generated JS file. // Razor is responsible for handling diagnostics for the virtual JS file and should not be returned here. // This workaround should be removed in 17.11 as JS diagnostics are no longer returned via Roslyn in 17.11 if (context.ServerKind == WellKnownLspServerKinds.RoslynTypeScriptLspServer && (document.FilePath?.EndsWith("__virtual.js") == true || document.FilePath?.EndsWith(".razor") == true || document.FilePath?.EndsWith(".cshtml") == true)) { return true; } return false; } }