我有一台基于分析仪默认模板的分析仪。 我的问题是,当执行完全重建时,某些(但不是所有)警告会出现在错误列表中。
当我打开文件时,在打开文件上重新执行分析器时,警告开始消失。 最终所有警告消失。
我是否错误地注册了这些分析仪。理想情况下,我只希望在正确加载代码模型后执行它们。
关于如何改善这一点的任何建议都会很棒。
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;
}
答案 0 :(得分:1)
是否可以将错误列表切换为仅构建视图并查看警告是否仍然存在?
如果警告仍然存在,则表示警告是由命令行构建生成的。如果打开文档后警告消失,这意味着实时分析认为没有问题。由于构建和实时分析之间的这种差异,问题可能会发生。
如果是这样的话,那将是roslyn中的一个错误。 (更具体地说,实时分析和命令行构建之间的编译选项中的错误 - VS内部的构建也是命令行构建,具有稍微不同的选项)
答案 1 :(得分:0)
对于其他任何试图分析Roslyn中的文档的人,需要进行检查。
File