我有一個基於默認分析儀模板的分析儀。 我的問題是,當做一個全重建,一些(但不是全部)警告出現在錯誤列表。roslyn分析儀提高後來被刪除的警告
當我打開這些文件時,隨着分析儀在打開的文件上重新執行,警告開始消失。 最終所有的警告消失。
我是否註冊了這些分析儀不正確。理想情況下,我只希望它們在代碼模型正確加載後執行。
有關如何改善這一點的任何建議將是偉大的。
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;
}
這反映了項目文件中的「生成XML文檔註釋」選項。保持傳統行爲,就是這樣的情況,如果你不生成一個我們不解析它們,因爲以前我們讓你擺脫那裏糟糕的語法。 –
我注意到,儘管檢查這個選項後誤報的數量有所減少,但這種行爲仍然不是很正確。 我仍然有方案,如果我做了一個完整的重建,顯示虛假的警告。只要我打開文件,它們就會消失。 – Jim