チュートリアル: 静的コード分析を使用したコード障害の検出
このチュートリアルでは、レガシ コード分析を使用して、マネージド プロジェクトのコード障害を分析します。
この記事では、.NET のデザイン ガイドラインに準拠するために、レガシ 分析を使用して .NET マネージド コード アセンブリを分析するプロセスを説明します。
クラス ライブラリを作成する
Visual Studio を開き、クラス ライブラリ (.NET Framework) テンプレートから新しいプロジェクトを作成します。
プロジェクトに CodeAnalysisManagedDemo という名前を付けます。
プロジェクトが作成されたら、Class1.cs ファイルを開きます。
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; } } } }
Class1.cs ファイルを保存します。
プロジェクトを分析してコード障害を分析する
ソリューション エクスプローラーで CodeAnalysisManagedDemo プロジェクトを選択します。
[プロジェクト] メニューの [プロパティ] をクリックします。
CodeAnalysisManagedDemo のプロパティ ページが表示されます。
[コード分析] タブをクリックします。
[バイナリ アナライザー] セクションで[ビルド時に実行] がオンになっていることを確認します。
[アクティブな規則] ドロップダウン リストで [Microsoft のすべての規則] を選択します。
[ファイル] メニューの [選択された項目を保存します] をクリックし、プロパティ ページを閉じます。
[ビルド] メニューの [CodeAnalysisManagedDemo のビルド] をクリックします。
CodeAnalysisManagedDemo プロジェクトのビルドの警告が、[エラー一覧] ウィンドウと [出力] ウィンドウに表示されます。
コード分析の問題を修正する
[表示] メニューの [エラー一覧] を選択します。
選択した開発者プロファイルによっては、[表示] メニューの [その他のウィンドウ] をポイントし、[エラー一覧] を選択しなければならない場合があります。
ソリューション エクスプローラーで、[すべてのファイルを表示] をクリックします。
[プロパティ] ノードを展開し、AssemblyInfo.cs ファイルを開きます。
次のヒントを使用して警告を修正します。
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' の署名に、厳密な名前のキーを使用します。
[プロジェクト] メニューで [CodeAnalysisManagedDemo プロパティ] を選択します。
プロジェクトのプロパティが表示されます。
[署名] タブを選択します。
[アセンブリの署名] チェックボックスをオンにします。
[厳密な名前のキー ファイルを選択してください] の一覧で <[新規]> を選びます。
[厳密な名前キーの作成] ダイアログ ボックスが表示されます。
[キー ファイル名] に「TestKey」と入力します。
パスワードを入力し、[OK] をクリックします。
[ファイル] メニューの [選択された項目を保存します] を選択し、プロパティ ページを閉じます。
すべての変更を完了すると、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; } } } }
プロジェクトをリビルドします。
コード分析の警告を除外する
残りの各警告について、次の操作を行います。
[エラー一覧] で警告を選択します。
右クリック メニュー (コンテキスト メニュー) で [抑制]>[抑制ファイル内] を選択します。
プロジェクトをリビルドします。
プロジェクトが、警告やエラーが発生することなくビルドされます。
関連するコンテンツ
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示