我有一个基于分析器默认模板的分析器。
我的问题是,当我进行完全重建时,一些(但不是全部)警告会出现在错误列表中。
当我打开文件时,由于分析器在打开文件时重新执行,警告开始消失。最终所有警告都会消失。
可能我没有正确地注册这些分析器。理想情况下,我希望它们在代码模型正确加载后才执行。
如果您有任何改进的建议,请告诉我。
public override void Initialize(AnalysisContext context)
{
context.RegisterSyntaxNodeAction(
this.HandleClassDeclaration,
SyntaxKind.ClassDeclaration);
}
这段代码分析类声明的文档(在本例中)。 当Xml文档节点不存在时,它会报告诊断。
private void HandleClassDeclaration(SyntaxNodeAnalysisContext context)
{
// THE CHECK IN MY ANSWER BELOW GOES HERE...
var declaration = (ClassDeclarationSyntax)context.Node;
{
var hasDocumentation = declaration.HasDocumentation();
if (!hasDocumentation)
{
var diagnostic = Diagnostic.Create(this.Descriptor, declaration.Identifier.GetLocation());
context.ReportDiagnostic(diagnostic);
}
}
}
我正在使用这段代码查找文档。
public static DocumentationCommentTriviaSyntax GetDocumentationCommentTriviaSyntax(this SyntaxNode node)
{
if (node == null)
{
return null;
}
foreach (var leadingTrivia in node.GetLeadingTrivia())
{
var structure = leadingTrivia.GetStructure() as DocumentationCommentTriviaSyntax;
if (structure != null)
{
return structure;
}
}
return null;
}