Получить комментарий из текстовой строки

#c# #roslyn #roslyn-code-analysis

#c# #рослин #roslyn-анализ кода

Вопрос:

У меня есть

 var sourceText = SourceText.From(filestream);
var firstLine = sourceText.Lines.FirstOrDefault();
  

которые дают мне первую строку исходного кода в виде текстовой строки. Мне нужно разобрать комментарий как строку, но я хотел бы использовать Roslyn для этого. Как я могу извлечь однострочный комментарий из текстовой строки с помощью Roslyn?

Ответ №1:

Вам нужно преобразовать текст в синтаксическое дерево, затем выполнить поиск нужных элементов. У вас есть несколько видов синтаксиса, в том числе SingleLineCommentTrivia, MultiLineCommentTrivia, ... :

 var tree = CSharpSyntaxTree.ParseText(sourceText, path: filename);
var root = tree.GetCompilationUnitRoot();

var comment = root.DescendantTrivia()
    .OfType<SyntaxTrivia>()
    .FirstOrDefault(s=> s.IsKind(SyntaxKind.SingleLineCommentTrivia)) // Here you decide what you want to filter on
    .ToFullString();
  

Смотрите https://learn.microsoft.com/en-us/dotnet/api/microsoft.codeanalysis.csharp.syntaxkind?view=roslyn-dotnet для получения более подробной информации