チュートリアル: 静的コード分析を使用したコード障害の検出

このチュートリアルでは、レガシ コード分析を使用して、マネージド プロジェクトのコード障害を分析します。

この記事では、.NET のデザイン ガイドラインに準拠するために、レガシ 分析を使用して .NET マネージド コード アセンブリを分析するプロセスを説明します。

クラス ライブラリを作成する

  1. Visual Studio を開き、クラス ライブラリ (.NET Framework) テンプレートから新しいプロジェクトを作成します。

  2. プロジェクトに CodeAnalysisManagedDemo という名前を付けます。

  3. プロジェクトが作成されたら、Class1.cs ファイルを開きます。

  4. Class1 内の既存のテキストを、次のコードに置き換えます。

    using System;
    
    namespace testCode
    {
        public class demo : Exception
        {
            public static void Initialize(int size) { }
            protected static readonly int _item;
            public static int item { get { return _item; } }
        }
    }
    
  5. Class1.cs ファイルを保存します。

プロジェクトを分析してコード障害を分析する

  1. ソリューション エクスプローラーで CodeAnalysisManagedDemo プロジェクトを選択します。

  2. [プロジェクト] メニューの [プロパティ] をクリックします。

    CodeAnalysisManagedDemo のプロパティ ページが表示されます。

  3. [コード分析] タブをクリックします。

  4. [バイナリ アナライザー] セクションで[ビルド時に実行] がオンになっていることを確認します。

  5. [アクティブな規則] ドロップダウン リストで [Microsoft のすべての規則] を選択します。

  6. [ファイル] メニューの [選択された項目を保存します] をクリックし、プロパティ ページを閉じます。

  7. [ビルド] メニューの [CodeAnalysisManagedDemo のビルド] をクリックします。

    CodeAnalysisManagedDemo プロジェクトのビルドの警告が、[エラー一覧] ウィンドウと [出力] ウィンドウに表示されます。

コード分析の問題を修正する

  1. [表示] メニューの [エラー一覧] を選択します。

    選択した開発者プロファイルによっては、[表示] メニューの [その他のウィンドウ] をポイントし、[エラー一覧] を選択しなければならない場合があります。

  2. ソリューション エクスプローラーで、[すべてのファイルを表示] をクリックします。

  3. [プロパティ] ノードを展開し、AssemblyInfo.cs ファイルを開きます。

  4. 次のヒントを使用して警告を修正します。

    CA1014: アセンブリに CLSCompliantAttribute のマークを付ける: AssemblyInfo.cs ファイルの末尾にコード [assembly: CLSCompliant(true)] を追加します。

    CA1032: 標準の例外コンストラクターを実装する: コンストラクター public demo (String s) : base(s) { } をクラス demo に追加します。

    CA1032: 標準の例外コンストラクターを実装する: コンストラクター public demo (String s, Exception e) : base(s, e) { } をクラス demo に追加します。

    CA1032: 標準の例外コンストラクターを実装する: クラスのデモにコンストラクター protected demo (SerializationInfo info, StreamingContext context) : base(info, context) { } を追加します。 System.Runtime.Serialization 用の using ステートメントも追加する必要があります。

    CA1032: 標準の例外コンストラクターを実装する: コンストラクター public demo () : base() { } をクラス demo に追加します。

    CA1709: 識別子の大文字と小文字の表記を修正する: 名前空間 testCode の表記を TestCode に変更します。

    CA1709: 識別子の大文字と小文字の表記を修正する: メンバーの名前を Demo に変更します。

    CA1709: 識別子の大文字と小文字の表記を修正する: メンバーの名前を Item に変更します。

    CA1710: 識別子のサフィックスを修正する: クラスの名前とそのコンストラクターを DemoException に変更します。

    CA2237: ISerializable 型に SerializableAttribute のマークを付ける: [Serializable ()] 属性をクラス demo に追加します。

    CA2210: 有効で厳密な名前がアセンブリには必要: 'CodeAnalysisManagedDemo' の署名に、厳密な名前のキーを使用します。

    1. [プロジェクト] メニューで [CodeAnalysisManagedDemo プロパティ] を選択します。

      プロジェクトのプロパティが表示されます。

    2. [署名] タブを選択します。

    3. [アセンブリの署名] チェックボックスをオンにします。

    4. [厳密な名前のキー ファイルを選択してください] の一覧で <[新規]> を選びます。

      [厳密な名前キーの作成] ダイアログ ボックスが表示されます。

    5. [キー ファイル名] に「TestKey」と入力します。

    6. パスワードを入力し、[OK] をクリックします。

    7. [ファイル] メニューの [選択された項目を保存します] を選択し、プロパティ ページを閉じます。

    すべての変更を完了すると、Class1.cs ファイルは、次のようになります。

    using System;
    using System.Runtime.Serialization;
    
    namespace TestCode
    {
        [Serializable()]
        public class DemoException : Exception
        {
            public DemoException () : base() { }
            public DemoException(String s) : base(s) { }
            public DemoException(String s, Exception e) : base(s, e) { }
            protected DemoException(SerializationInfo info, StreamingContext context) : base(info, context) { }
    
            public static void Initialize(int size) { }
            protected static readonly int _item;
            public static int Item { get { return _item; } }
        }
    }
    
  5. プロジェクトをリビルドします。

コード分析の警告を除外する

  1. 残りの各警告について、次の操作を行います。

    1. [エラー一覧] で警告を選択します。

    2. 右クリック メニュー (コンテキスト メニュー) で [抑制]>[抑制ファイル内] を選択します。

  2. プロジェクトをリビルドします。

    プロジェクトが、警告やエラーが発生することなくビルドされます。

マネージド コードのコード分析