Visual Studio 2008 では、 コード分析のオプション 「生成されたコードから結果を表示しない」 にチェックを入れても、 フォームやテンプレートでは、 コード分析のエラーや警告は抑制されません。 これは Visual Studio の不具合ではなく、 MSDN の翻訳ミスであることを以前に書きました。 → 「[VS2008] オプション 「生成されたコードから結果を表示しない」 の挙動不審」
Visual Studio 2010 では、 どうなったでしょうか?
MSDN フォーラム で翻訳を修正しておきますよ~、 と回答していただいた通り、 MSDN のドキュメントは訂正されています。
方法: マネージ コード プロジェクトのコード分析を構成する
Visual Studio 2010
メモ
コード分析のエラーおよび警告がフォームやテンプレートで表示される場合、このオプションを使用しても、生成されたコードからこのエラーおよび警告の出力は抑制されません。 フォームまたはテンプレートのソース コードは表示することも保持することもできます。
※ あ、 「保持する」 は maintain の誤訳だけど、 分かるよね。そう思って、フォーラムで突っ込まなかった。まぁ、 「メンテする」 って日本語になってるし f(^^;
…これで終わりかというと。 WPF では Visual Studio の挙動が変わっていました。
Visual Studio 2010 で WPF のプロジェクトを作ると、 自動生成された MainWindow.g.cs には GeneratedCode 属性が付くようになりました。
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
public partial class MainWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector {
これにより、 WPF 4 のフォーム (System.Windows.Window を継承したクラス) では、 「生成されたコードから結果を表示しない」 オプションを使うと、 エラーと警告の出力が抑制されることになります。
※ Connect で 「WPF:コード分析で余計なソースファイルが分析対象となる」 (2009/09/02) というレポートが上がっており、 それに対応した結果のようです。
またしても、 ドキュメントと実際がズレてしまいました。
しかしそれよりも、 自動生成されたコードのメソッド単位に属性を付けてくれれば良かったのですが、 クラスに付けてくれたのがマズいです。 これでは WPF 4 のフォーム内にゴリゴリ書かれてしまったコードが、 分析の対象にならないと思われます。
なお、 Visual Studio 2010 でも、 WPF 3.5 を選ぶと、 従来通り GeneratedCode 属性は付かないようです。 WinForm も同様に、 付きません。