2016-05-03 4 views
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に取得する方法はありますか?あなたの例を与えることを

(編集):私は(すべてがSyntaxTreeAnalysisContextReportDiagnosticsメソッドを使用します。StyleCopアナライザからSA1027 Use tabs correctlyのような)いくつかのルールを強化したい私は、囲むタイプに属性を配置して検出することができますようにその後、その存在とは、診断のような

if (!hasAttributes) // simplified 
{ 
    context.ReportDiagnostic(...); 
} 
+2

間違った種類の行動を登録しているようです。 – SLaks

+0

私はあなたが実際にやろうとしていることと、なぜあなたが持っている唯一のものが「SyntaxTreeAnalysisContext」なのか分かりません。それを拡大できますか? – svick

+0

@svick:私の編集を参照してください。 – David

答えて

0

ではなく、あなたのInitialize方法でSemanticModelAnalysisを登録し報告省略します。構文1は、意味的な影響を持たない構文のみです。

関連する問題