I私のアナライザ私は、次の登録があります。私はかどうかを確認するために、アナライザが現在処理しているタイプにアクセスしたいHandleTypeDeclaration
でHandleTypeDeclaration(...)にSyntaxNodeAnalysisContextからタイプを囲むゲット
public override void Initialize(AnalysisContext context)
{
context.RegisterCompilationStartAction(HandleCompilationStart);
}
private static void HandleCompilationStart(CompilationStartAnalysisContext context)
{
context.RegisterSyntaxNodeAction(
HandleTypeDeclaration,
ImmutableArray.Create(SyntaxKind.ClassDeclaration, SyntaxKind.StructDeclaration, SyntaxKind.InterfaceDeclaration));
}
private static void HandleTypeDeclaration(SyntaxNodeAnalysisContext context)
{
var x = context.SemanticModel.GetDeclaredSymbol(context.Node);
...
}
をタイプは、(this questionのように)分析すべきでないタイプをマークするために使用したいいくつかの属性に起因していました。
私の地元の窓で私はにはContainingSymbol
という名前のプロパティがありますが、このメンバーはIntellisenseには表示されません。私は推測を思い付いたvar x = ...
しかし、それは常に同等ですか? context
のContainingSymbol
にアクセスするにはどうすればよいですか?囲むタイプを得るのは正しい方法ですか?バージョン1.0.0では
あなたの参照CodeAnalysisナゲットパッケージのバージョンは?あなたのVSがアップデート2を持っている間は、おそらく最新の1.2バージョンではないでしょう。 – Tamas
@ Tamas-SonarSourceTeam:Microsoft.CodeAnalysis.Commonおよび.CSharpは1.0.0(最新は1.2.1)で、microsoft.CodeAnalysis.Analyzersは1.0.0です(最新は1.1.0) – David
を参照してください。バージョン1.0.0では、 'SyntaxNodeAnalysisContext'はプロパティ' ContainingSymbol'を含んでいませんでした。 VSには、すでにそれが含まれている更新プログラムがあるために表示されます。下位互換性の要件がない場合は、1.2.1にアップグレードしてそのプロパティを使用できます。 – Tamas