gpt4 book ai didi

c# - roslyn 分析器发出警告,后来被删除

转载 作者:行者123 更新时间:2023-11-30 17:40:34 25 4
gpt4 key购买 nike

我有一个基于分析器默认模板的分析器。我的问题是,当执行完全重建时,一些(但不是全部)警告出现在错误列表中。

当我打开文件时,警告开始消失,因为分析器在打开的文件上重新执行。 最终所有警告都消失了

我是否错误地注册了这些分析器。理想情况下,我只希望它们在正确加载代码模型后执行。

任何关于如何改进这一点的建议都会很棒。

    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;
}

最佳答案

能否将错误列表切换为仅构建 View 并查看警告是否仍然存在?

如果警告仍然存在,则说明警告是由命令行生成的。如果打开文档后警告消失,则表示实时分析认为没有问题。由于构建和实时分析之间的差异,可能会发生此问题。

如果是这样,那将是 roslyn 中的错误。 (更具体地说,实时分析和命令行构建之间的编译选项中的错误 - VS 内部的构建也是命令行构建,但选项略有不同)

关于c# - roslyn 分析器发出警告,后来被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34203674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com