0
私はSyntaxTreeAnalysisContext context
を与えられましたが、クラス宣言である親ノードに上がり、その型に配置されている属性を確認するために、のSemanticModel
プロパティが必要です。SyntaxTreeAnalysisContextでセマンティックモデルを取得
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
に取得する方法はありますか?あなたの例を与えることを
(編集):私は(すべてがSyntaxTreeAnalysisContext
のReportDiagnostics
メソッドを使用します。StyleCopアナライザからSA1027 Use tabs correctlyのような)いくつかのルールを強化したい私は、囲むタイプに属性を配置して検出することができますようにその後、その存在とは、診断のような
if (!hasAttributes) // simplified
{
context.ReportDiagnostic(...);
}
間違った種類の行動を登録しているようです。 – SLaks
私はあなたが実際にやろうとしていることと、なぜあなたが持っている唯一のものが「SyntaxTreeAnalysisContext」なのか分かりません。それを拡大できますか? – svick
@svick:私の編集を参照してください。 – David