質問

c#/。net/fxcop!

...クラス内で、FXCOPに不平を言ってもらいたい

Warning CA1062 : Microsoft.Design : 
In externally visible method 'xyz', validate parameter 'a' before using it. 

基本的に、このルールは、私がaを置くことを示唆しています if (a == null) throw new ArgumentNullException("a"); 私のコード内のほぼすべてのメソッドの開始時。これにより、例外処理ロジックが吸い込まれ、変更されます。

それで、私はこれをどこかにクラスの体に入れました:

[SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods",
     Scope = "Type", 
     MessageId = "0", 
     Justification = "We love danger... so far.")]

とにかく、これは単一のメッセージさえ抑制しません - 私はまだこれらすべての警告を受け取ります。誤りのあるメソッド定義の1つのすぐ上にある場合にのみ警告が抑制されます(つまり、このタイプのすべてではなく、1つの警告を1つだけ抑制します)。奇妙なことは、同じ構文が私のクラスで複数回発生する他の問題に対して機能するということです。

私は自分が何を間違っているのか分かりません、そして、私は率直に言って、属性パラメーターの使用方法を本当に理解していません。 http://msdn.microsoft.com/de-de/library/ms244717.aspx 詳細にあまり行きません。 :T ...とにかく、何が正しくないのか?

役に立ちましたか?

解決

すべてのクラスまたは単一のクラスのみのメッセージを抑制しますか?前者の場合、ルールを無効にすることができます。 (そうするための正確なメカニズムは、FXCOPの実行方法によって異なりますので、これについてサポートが必要な場合は詳細を提供してください。)

後者の場合、少なくとも問題が検出された各方法に抑制属性を追加する必要があります。この理由は、FXCOPが違反のターゲットの抑制のみを探しているからです。 「親」要素(例:メソッドが属するクラス)に追加された抑制は、違反が抑制されているかどうかを判断しようとするときにFXCOPによって検討されません。

ターゲット属性を使用した場合、コードに抑制を配置する場所に関してある程度の柔軟性がありますが、これは違反目標ごとに1つの抑制属性の必要性を変更しません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top