我得到一个SyntaxTreeAnalysisContext context
但我需要的是一个SyntaxNodeAnalysisContext
及其SemanticModel
属性,然后提升到父节点,这是一个类声明然后检查属性已被放置在类型上。
SyntaxTreeAnalysisContext givenTreeContext
/// how to get to:
SyntaxNodeAnalysisContext context;
var n = context.Node;
ISymbol symbol = null;
bool hasAttributes = false;
while (n != null)
{
if (n.IsKind(SyntaxKind.ClassDeclaration))
{
symbol = context.SemanticModel.GetDeclaredSymbol(n);
hasAttributes = symbol.GetAttributes().Any();
break;
}
else
{
n = n.Parent;
}
}
有没有办法从SyntaxTreeAnalysisContext
到SyntaxNodeAnalysisContext
?
(编辑)举个例子:我希望增强一些规则(所有规则都使用ReportDiagnostics
的{{1}}方法;类似于StyleCop Analyzers的SA1027 Use tabs correctly)我可以在封闭类型上放置一个属性并检测其存在,然后省略报告诊断,如
SyntaxTreeAnalysisContext
答案 0 :(得分:0)
在SemanticModelAnalysis
方法中注册Initialize
。语法1仅用于语法而不会产生语义影响。