次の方法で共有


チュートリアル : マネージ コードの分析によるコード障害の検出

このチュートリアルでは、コード分析ツールを使ってマネージ プロジェクトを分析し、コード障害を検出する方法について説明します。

このチュートリアルでは、コード分析を通じて、.NET マネージ コード アセンブリを分析し、これらのアセンブリが Microsoft .NET Framework デザイン ガイドラインに準拠しているかどうかを確認するプロセスを、順をおって説明します。

このチュートリアルでは、次のことを行います。

  • コード障害の警告を分析および修正する。

必須コンポーネント

  • Visual Studio Premium.

クラス ライブラリの作成

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

  1. Visual Studio の [ファイル] メニューの [新規作成] をクリックし、[プロジェクト] をクリックします。

  2. [新しいプロジェクト] ダイアログ ボックスで、[プロジェクトの種類][Visual C#] をクリックします。

  3. [テンプレート][クラス ライブラリ] を選択します。

  4. [名前] テキスト ボックスに「CodeAnalysisManagedDemo」と入力し、[OK] をクリックします。

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

  6. Class1.cs の既存のテキストを次のコードで置き換えます。

    //CodeAnalysisManagedDemo
    //Class1.cs
    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; } }
        }
    }
  7. Class1.cs ファイルを保存します。

プロジェクトの分析

マネージ プロジェクトのコード障害を分析するには

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

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

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

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

  4. 有効化ビルドのコード分析 (CODE_ANALYSIS の定数を定義します。)がオンになっていることを確認します。

  5. [この規則セットを実行] ボックスの一覧の [Microsoft のすべての規則] をクリックします。

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

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

    CodeAnalysisManagedDemo プロジェクト ビルドの警告は コード分析出力 のペインに表示されます。

    次に コード分析 のペインが 分析 のメニューで、表示されない場合は、 ウィンドウ と **コード分析を選択します。**を選択します。

コード分析の問題の修正

コード分析で指摘された規則違反を修正するには

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

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

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

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

  4. 次の表に従って警告を修正します。

警告

警告を修正するには

CA1014: アセンブリに CLSCompliantAttribute を設定します: Microsoft.Design: 'demo' は、CLSCompliantAttribute でマークされ、その値は true でなければなりません。

  1. usingSystem; というコードを AssemblyInfo.cs ファイルに追加します。

  2. 次に、[assembly: CLSCompliant(true)] というコードを AssemblyInfo.cs ファイルの最後に追加します。

  3. プロジェクトを再ビルドします。

CA1032: 標準例外コンストラクターを実装します: Microsoft.Design: 次のコンストラクターをこのクラスに追加します: public demo(String)

  • コンストラクター public demo (String s) : base(s) { } をクラス demo に追加します。

CA1032: 標準例外コンストラクターを実装します: Microsoft.Design: 次のコンストラクターをこのクラスに追加します: public demo(String, Exception)

  • コンストラクター public demo (String s, Exception e) : base(s, e) { } をクラス demo に追加します。

CA1032: 標準例外コンストラクターを実装します: Microsoft.Design: 次のコンストラクターをこのクラスに追加します: protected demo(SerializationInfo, StreamingContext)

  1. using System.Runtime.Serialization; というコードを Class1.cs ファイルの先頭に追加します。

  2. 次に、コンストラクター protected demo (SerializationInfo info, StreamingContext context) : base(info, context) { } to the class demo. を追加します。

  3. プロジェクトを再ビルドします。

CA1032: 標準例外コンストラクターを実装します: Microsoft.Design: 次のコンストラクターをこのクラスに追加します: public demo()

  1. コンストラクター public demo () : base() { } をクラス demo に追加します。

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

CA1709: 識別子では、大文字と小文字が正しく区別されなければなりません: Microsoft.Naming: 名前空間の名前 'testCode' の大文字と小文字の指定を 'TestCode' に訂正してください。

  • 名前空間 testCode の大文字と小文字の規則を TestCode のように変更します。

CA1709: 識別子では、大文字と小文字が正しく区別されなければなりません: Microsoft.Naming: 型の名前 'demo' の大文字と小文字の指定を 'Demo' に訂正してください。

  • メンバー名を Demo に変更します。

CA1709: 識別子では、大文字と小文字が正しく区別されなければなりません: Microsoft.Naming: メンバーの名前 'item' の大文字と小文字の指定を 'Item' に修正してください。

  • メンバー名を Item に変更します。

CA1710: 識別子は、正しいサフィックスを含んでいなければなりません: Microsoft.Naming: 'testCode.demo' の名前が 'Exception' で終わるように変更します。

  • クラスとそのコンストラクターの名前を DemoException に変更します。

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

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

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

  2. [署名] をクリックします。

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

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

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

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

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

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

  8. プロジェクトを再ビルドします。

CA2237: ISerializable 型を SerializableAttribute に設定します: Microsoft.Usage: [Serializable] 属性を型 'demo' に追加します。この型が ISerializable を実装するためです。

  1. クラス demo に [Serializable ()] 属性を追加します。

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

変更を完了したら、 Class1.cs ファイルは次のようになります:

//CodeAnalysisManagedDemo
//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; } }
    }
}

コード分析で生成された警告の除外

コード障害の警告を除外するには

  1. 残りの警告の場合、次を実行します:

    1. コード分析のペインで、警告を選択します。

    2. アクションを選択し、を メッセージの非表示を選択し、 プロジェクトの抑制ファイルを選択します。

    詳細については、「方法: メニュー項目を使用して警告を抑制する」を参照してください。

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

    警告やエラーを出さずにプロジェクトがビルドされます。