#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 для получения более подробной информации