マネージド コードの "拡張デザイン ガイドライン規則" 規則セット
Microsoft "拡張デザイン ガイドライン規則" 規則セットは、基本デザイン ガイドライン規則を拡張して、使いやすさと保守容易性に関して報告される問題の検出範囲を最大化します。 特に、命名に関するガイドラインに重点が置かれています。 プロジェクトにライブラリ コードが含まれる場合や、最高レベルの基準を適用して、保守が容易なコードを記述する場合は、この規則セットの使用を検討してください。
拡張デザイン ガイドライン規則には、"基本デザイン ガイドライン規則" 規則セットのすべての規則が含まれます。この規則セットには、"推奨されるマネージド規則" 規則セットの規則が含まれます。
次の表では、Microsoft "拡張デザイン ガイドライン規則" 規則セットのすべての規則について説明します。
ルール | 説明 |
---|---|
CA1001 | 破棄可能なフィールドを所有する型は、破棄可能でなければなりません |
CA1009 | イベント ハンドラーを正しく宣言します |
CA1016 | アセンブリに AssemblyVersionAttribute を設定します |
CA1033 | インターフェイス メソッドは、子型によって呼び出し可能でなければなりません |
CA1049 | ネイティブ リソースを所有する型は、破棄可能でなければなりません |
CA1060 | P/Invoke を NativeMethods クラスに移動します |
CA1061 | 基底クラス メソッドを非表示にしません |
CA1063 | IDisposable を正しく実装します |
CA1065 | 予期しない場所に例外を発生させません |
CA1301 | 重複するアクセラレータを使用しません |
CA1400 | P/Invoke エントリ ポイントは存在しなければなりません |
CA1401 | P/Invoke は参照可能であることはできません |
CA1403 | Auto 配置の型を COM 参照可能にすることはできません |
CA1404 | P/Invoke の直後に GetLastError を呼び出します |
CA1405 | COM 参照可能な型の基本型は COM 参照可能でなければなりません |
CA1410 | COM 登録メソッドは一致しなければなりません |
CA1415 | P/Invoke を正しく宣言します |
CA1821 | 空のファイナライザーを削除します |
CA1900 | 値型フィールドはポータブルでなければなりません |
CA1901 | P/Invoke 宣言はポータブルでなければなりません |
CA2002 | 弱い ID を伴うオブジェクト上でロックしません |
CA2100 | SQL クエリのセキュリティ脆弱性を確認 |
CA2101 | P/Invoke 文字列引数に対してマーシャリングを指定します |
CA2108 | 値型での宣言セキュリティを確認します |
CA2111 | ポインターは参照可能にすることはできません |
CA2112 | セキュリティで保護された型はフィールドを公開してはなりません |
CA2114 | メソッド セキュリティは型のスーパーセットでなければなりません |
CA2116 | APTCA メソッドは APTCA メソッドのみを呼び出すことができます |
CA2117 | APTCA 型は APTCA 基本型のみを拡張することができます |
CA2122 | リンク要求を含むメソッドを間接的に公開しません |
CA2123 | オーバーライドのリンク要求はベースと同一でなければなりません |
CA2124 | 脆弱性のある finally 句を外側の try でラップします |
CA2126 | 型のリンク要求には継承要求が必要です |
CA2131 | セキュリティ上重要な型は型等価性に参加してはならない |
CA2132 | 既定のコンストラクターは、基本型の既定コンストラクターと同程度以上、重要であることが必要 |
CA2133 | デリゲートは透過性の整合がとれたメソッドにバインドする必要がある |
CA2134 | メソッドは、基本メソッドをオーバーライドしている場合、透過性の整合性を保つ必要がある |
CA2137 | 透過的メソッドは、検証可能な IL のみを含まなければならない |
CA2138 | 透過的メソッドは、SuppressUnmanagedCodeSecurity 属性を持つメソッドを呼び出してはならない |
CA2140 | 透過的コードは、セキュリティ上重要な項目を参照してはならない |
CA2141 | 透過的メソッドは LinkDemand を満たしてはならない |
CA2146 | 型は、基本型およびインターフェイスと同程度以上、重要でなければならない |
CA2147 | 透過コードは、セキュリティ アサートを使用してはならない |
CA2149 | 透過的メソッドは、ネイティブ コード内に呼び出しを行ってはならない |
CA2200 | スタック詳細を保持するために再度スローします |
CA2202 | オブジェクトを複数回破棄しない |
CA2207 | 値型のスタティック フィールドのインラインを初期化します |
CA2212 | サービス コンポーネントを WebMethod に設定しません |
CA2213 | 破棄可能なフィールドは破棄されなければなりません |
CA2214 | コンストラクターのオーバーライド可能なメソッドを呼び出しません |
CA2216 | 破棄可能な型はファイナライザーを宣言しなければなりません |
CA2220 | ファイナライザーは基底クラスのファイナライザーを呼び出さなければなりません |
CA2229 | シリアル化コンストラクターを実装します |
CA2231 | ValueType.Equals のオーバーライドで、演算子 equals をオーバーロードします |
CA2232 | Windows フォームのエントリ ポイントを STAThread に設定します |
CA2235 | すべてのシリアル化不可能なフィールドを設定します |
CA2236 | ISerializable 型で基底クラス メソッドを呼び出します |
CA2237 | ISerializable 型を SerializableAttribute に設定します |
CA2238 | シリアル化メソッドを正しく実装します |
CA2240 | ISerializable を正しく実装します |
CA2241 | 書式設定メソッドに正しい引数を提供 |
CA2242 | NaN に対して正しくテストします |
CA1000 | ジェネリック型の静的メンバーを宣言しません |
CA1002 | ジェネリック リストを公開しません |
CA1003 | 汎用イベント ハンドラーのインスタンスを使用します |
CA1004 | ジェネリック メソッドは型パラメーターを指定しなければなりません |
CA1005 | ジェネリック型でパラメーターを使用しすぎないでください |
CA1006 | ジェネリック型をメンバー シグネチャ内で入れ子にしません |
CA1007 | 適切な場所にジェネリックを使用します |
CA1008 | Enums は 0 値を含んでいなければなりません |
CA1010 | コレクションは、ジェネリック インターフェイスを実装しなければなりません |
CA1011 | 基本型をパラメーターとして渡すことを考慮します |
CA1012 | 抽象型にはコンストラクターを含めません |
CA1013 | オーバーロードする加算および減算で、演算子 equals をオーバーロードします |
CA1014 | アセンブリに CLSCompliantAttribute を設定します |
CA1017 | アセンブリに ComVisibleAttribute を設定します |
CA1018 | 属性を AttributeUsageAttribute に設定します |
CA1019 | 属性引数にアクセサーを定義します |
CA1023 | インデクサーを多次元にすることはできません |
CA1024 | 適切な場所にプロパティを使用します |
CA1025 | 反復する引数を params 配列で置き換えます |
CA1026 | 既定パラメーターを使用することはできません |
CA1027 | 列挙型を FlagsAttribute に設定します |
CA1028 | 列挙ストレージは Int32 でなければなりません |
CA1030 | 適切な場所にイベントを使用します |
CA1031 | 一般的な例外の種類はキャッチしません |
CA1032 | 標準例外コンストラクターを実装します |
CA1034 | 入れ子にされた型を参照可能にすることはできません |
CA1035 | ICollection の実装は、厳密に型指定されたメンバーを含んでいます |
CA1036 | 比較可能な型でメソッドをオーバーライドします |
CA1038 | 列挙子は厳密に型指定されていなければなりません |
CA1039 | リストは厳密に型指定されています |
CA1041 | ObsoleteAttribute メッセージを指定します |
CA1043 | インデクサーには整数または文字列引数を使用します |
CA1044 | プロパティを書き込み専用にすることはできません |
CA1046 | 参照型で、演算子 equals をオーバーロードしないでください |
CA1047 | シールド型の保護されたメンバーを宣言しません |
CA1048 | シールド型の仮想メンバーを宣言しません |
CA1050 | 名前空間で型を宣言します |
CA1051 | 参照可能なインスタンス フィールドを宣言しません |
CA1052 | スタティック ホルダー型はシールドされていなければなりません |
CA1053 | スタティック ホルダー型はコンストラクターを含むことはできません |
CA1054 | URI パラメーターを文字列にすることはできません |
CA1055 | URI 戻り値を文字列にすることはできません |
CA1056 | URI プロパティを文字列にすることはできません |
CA1057 | 文字列 URI オーバーロードが、System.Uri オーバーロードを呼び出します |
CA1058 | 型は、一定の基本型を拡張することはできません |
CA1059 | メンバーは特定の具象型を公開できません |
CA1064 | 例外は public として設定する必要があります |
CA1500 | 変数名はフィールド名と同一にすることはできません |
CA1502 | メソッドの実装を複雑にしすぎないでください |
CA1708 | 識別子は、大文字と小文字の区別以外にも相違していなければなりません |
CA1716 | 識別子はキーワードと同一にすることはできません |
CA1801 | 使用されていないパラメーターの確認 |
CA1804 | 使用されていないローカルを削除します |
CA1809 | ローカルを使用しすぎないでください |
CA1810 | 参照型の静的フィールドをインラインで初期化します |
CA1811 | 呼び出されていないプライベート コードを使用しません |
CA1812 | インスタンス化されていない内部クラスを使用しません |
CA1813 | アンシールド属性を使用しません |
CA1814 | 複数次元の配列ではなくジャグ配列を使用します |
CA1815 | equals および operator equals を値型でオーバーライドします」を参照してください。 |
CA1819 | プロパティは、配列を返すことはできません |
CA1820 | 文字列の長さを使用して空の文字列をテストします |
CA1822 | メンバーを static に設定します |
CA1823 | 使用されていないプライベート フィールドを使用しません |
CA2201 | 予約された例外の種類を発生させません |
CA2205 | Win32 API に相当するマネージド API を使用します |
CA2208 | 引数の例外を正しくインスタンス化します |
CA2211 | 非定数フィールドは表示されません |
CA2217 | 列挙型を FlagsAttribute に設定しません |
CA2219 | exception 句に例外を発生させないでください |
CA2221 | ファイナライザーは保護されなければなりません |
CA2222 | 継承されたメンバーの参照範囲を縮小しません |
CA2223 | メンバーは、戻り値の型以外にも異なる点がなければなりません |
CA2224 | オーバーロードする演算子 equals で Equals をオーバーライドします |
CA2225 | 演算子オーバーロードには名前付けされた代替が存在します |
CA2226 | 演算子は対称型オーバーロードを含まなければなりません |
CA2227 | Collection プロパティは読み取り専用でなければなりません |
CA2230 | 可変引数に対して param を使用します |
CA2234 | 文字列の代わりに System.Uri オブジェクトを渡します |
CA2239 | 省略可能なフィールドに、逆シリアル化メソッドを指定します |
CA1020 | 型をほとんど含まない名前空間を使用しません |
CA1021 | out パラメーターを使用しません |
CA1040 | 空のインターフェイスは使用しません |
CA1045 | 型を参照によって渡しません |
CA1062 | パブリック メソッドの引数の検証 |
CA1501 | 継承を使用しすぎないでください |
CA1504 | 紛らわしいフィールド名を確認します |
CA1505 | メンテナンスできないコードを使用しないでください |
CA1506 | クラス結合度を大きくしすぎないでください |
CA1700 | 列挙型値に 'Reserved' という名前を指定しません |
CA1701 | リソース文字列の複合語は、大文字と小文字を正しく区別しなければなりません |
CA1702 | 複合語では、大文字と小文字が正しく区別されなければなりません |
CA1703 | リソース文字列は正しく入力されなければなりません |
CA1704 | 識別子は正しく入力されなければなりません |
CA1707 | 識別子はアンダースコアを含むことはできません |
CA1709 | 識別子では、大文字と小文字が正しく区別されなければなりません |
CA1710 | 識別子は、正しいサフィックスを含んでいなければなりません |
CA1711 | 識別子は、不適切なサフィックスを含むことはできません |
CA1712 | 列挙型値を型名のプレフィックスにしません |
CA1713 | イベントは、before または after プレフィックスを含むことはできません |
CA1714 | フラグ列挙型は、複数形の名前を含んでいなければなりません |
CA1715 | 識別子は正しいプレフィックスを含んでいなければなりません |
CA1717 | FlagsAttribute 列挙型のみが複数形の名前を含んでいなければなりません |
CA1719 | パラメーター名はメンバー名と同一にすることはできません |
CA1720 | 識別子には型名を含めないでください |
CA1721 | プロパティ名は get メソッドと同一にすることはできません |
CA1722 | 識別子は不適切なプレフィックスを含むことはできません |
CA1724 | 型名は名前空間と同一にすることはできません |
CA1725 | パラメーター名は基本宣言と同一でなければなりません |
CA1726 | 適切な用語を使用します |
CA2204 | リテラルに正しいスペルを要求 |
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示