private static void AnalyzeSyntaxTree(SyntaxTreeAnalysisContext context) { // Получаем корневой узел синтаксического дерева var root = context.Tree.GetRoot(context.CancellationToken); // Ищем все SyntaxTrivia в документе... foreach (SyntaxTrivia trivia in root.DescendantTrivia() // ...которые являются однострочными или многострочными комментариями... .Where(t => (t.IsKind(SyntaxKind.SingleLineCommentTrivia) || t.IsKind(SyntaxKind.MultiLineCommentTrivia)) // ...содержат неприличное слово && ContainsFWord(t.ToFullString()))) { // Добавляем диагностику context.ReportDiagnosticWithSuppressionCheck( Diagnostic.Create(Descriptors.DN1000_WhatTheHeckComment, trivia.GetLocation())); } }