19

私がFxCopで作業しているプロジェクトでは、Windowsフォームデザイナーによって生成されたInitializeComponent()メソッドで多くの(そして私は400以上の)エラーが表示されています。これらのエラーのほとんどは、ラベルのTextプロパティの割り当てに過ぎません。ソースのコード解析ルールを除外

これらのメソッドをソースで抑制したいので、FxCopで生成された抑制コードをAssemblyInfo.csにコピーしましたが、機能しません。

これは、FxCopがクリップボードにコピーした属性です。

[module: SuppressMessage("Microsoft.Globalization", 
    "CA1303:DoNotPassLiteralsAsLocalizedParameters", 
    Scope = "member", 
    Target = "WindowsClient.MainForm.InitializeComponent():System.Void", 
    MessageId = "System.Windows.Forms.Control.set_Text(System.String)")] 

誰でもこのメッセージを抑制する正しい属性を知っていますか?

PS:Visual Studio 2005、C#、FxCop 1.36ベータ版を使用しています。

答えて

18

おそらく適切なコードがありますが、プロジェクトプロパティでプリコンパイラ定義シンボルとしてCODE_ANALYSISも追加する必要があります。私はそれらのSuppressMessage属性は、CODE_ANALYSISが定義されている場合にのみ、コンパイルされたバイナリに残っていると思います。

+2

私は複数のプロジェクトを持つソリューションを持っていました。プロジェクトごとにCODE_ANALYSISを追加する必要があります。 – Diizzy

2

モジュールレベルの抑制メッセージは、名前空間宣言またはassemblyinfo.csの前にFxCopエラーを発生させているコードと同じファイルに貼り付ける必要があります。さらに、CODE_ANALYSISを条件付きコンパイラシンボルとして定義する必要があります(Project> Properties> Build)。それが完了したら、プロジェクトの完全な再構築を行い、次回FxCopを実行するときにエラーが「ソースで除外」タブに移動される必要があります。

また、小さなヒントもありますが、多くのFxCop除外項目を扱っている場合は、周囲の領域をラップして、途中で取り除くことができます。

4

FxCop 1.36には、実際には "Spelling & Analysis"タブのプロジェクトオプションがあり、生成されたコードの解析は不要です。

生成されたすべてのコードについて解析をオフにしない場合は、条件付きコンパイルシンボルのリスト(プロジェクトプロパティの[ビルド]タブ)にCODE_ANALYSISシンボルを追加する必要があります。このシンボルが定義されていないと、SupressMessage属性はコンパイルされたコードから削除され、FxCopはそれらを見ることができません。

SuppressMessage属性のもう1つの問題は、特定のメソッド名(この場合はWindowsClient.MainForm.InitializeComponent():System.Void)の "Target"をリストし、特定の "Scope"をリストすることです。これらを削除してみてください。それ以外の場合は、このSuppressMessageをメソッドの各インスタンスに追加する必要があります。

また、FxCop 1.36のRTM versionにアップグレードする必要があります。ベータ版では新しいバージョンが自動的に検出されません。

関連する問題