基本の正確性は、フレームワーク API の使用に論理エラーとよくある間違いの規則セットの焦点を当てています。基本正確性規則は推奨規則 " 規則セットに最小限の規則が含まれます。詳細については、「マネージ コードの "マネージ推奨規則" 規則セット」を参照してください。この規則セットは、最小推奨規則で報告された警告の一覧から、さらに詳しい情報へと掘り下げる必要がある場合に使用してください。
"Microsoft 基本正確性規則" 規則セット内のすべての規則について、以下の表で説明します。
規則 |
Description |
|---|---|
破棄可能なフィールドを所有する型は、破棄可能でなければなりません |
|
イベント ハンドラーを正しく宣言します |
|
アセンブリに AssemblyVersionAttribute を設定します |
|
インターフェイス メソッドは、子型によって呼び出し可能でなければなりません |
|
ネイティブ リソースを所有する型は、破棄可能でなければなりません |
|
P/Invoke を NativeMethods クラスに移動します |
|
基本クラス メソッドを非表示にしません |
|
IDisposable を正しく実装します |
|
予期しない場所に例外を発生させません |
|
重複するアクセラレータを使用しません |
|
P/Invoke エントリ ポイントは存在しなければなりません |
|
P/Invoke は参照可能であることはできません |
|
Auto 配置の型を COM 参照可能にすることはできません |
|
P/Invoke の直後に GetLastError を呼び出します |
|
COM 参照可能な型の基本型は COM 参照可能でなければなりません |
|
COM 登録メソッドは一致しなければなりません |
|
P/Invoke を正しく宣言します |
|
空のファイナライザーを削除します |
|
値型フィールドはポータブルでなければなりません |
|
P/Invoke 宣言はポータブルでなければなりません |
|
弱い ID を伴うオブジェクト上でロックしません |
|
SQL クエリのセキュリティ脆弱性を確認 |
|
P/Invoke 文字列引数に対してマーシャリングを指定します |
|
値型での宣言セキュリティを確認します |
|
ポインターは参照可能にすることはできません |
|
セキュリティで保護された型はフィールドを公開してはなりません |
|
メソッド セキュリティは型のスーパーセットでなければなりません |
|
APTCA メソッドは APTCA メソッドのみを呼び出すことができます |
|
APTCA 型は APTCA 基本型のみを拡張することができます |
|
リンク要求を含むメソッドを間接的に公開しません |
|
オーバーライドのリンク要求はベースと同一でなければなりません |
|
脆弱性のある finally 句を外側の try でラップします |
|
型のリンク要求には継承要求が必要です |
|
セキュリティ上重要な型は型等価性に参加してはならない |
|
既定のコンストラクターは、基本型の既定コンストラクターと同程度以上、重要であることが必要 |
|
デリゲートは透過性の整合がとれたメソッドにバインドする必要がある |
|
メソッドは、基本メソッドをオーバーライドしている場合、透過性の整合性を保つ必要がある |
|
透過的メソッドは、検証可能な IL のみを含まなければならない |
|
透過的メソッドは、SuppressUnmanagedCodeSecurity 属性を持つメソッドを呼び出してはならない |
|
透過的コードは、セキュリティ上重要な項目を参照してはならない |
|
透過的メソッドは、LinkDemand を満たしてはならない |
|
型は、基本型およびインターフェイスと同程度以上、重要でなければならない |
|
透過的メソッドはアサートしますセキュリティを使用しない可能性があります。 |
|
透過的メソッドは、ネイティブ コード内に呼び出しを行ってはならない |
|
スタック詳細を保持するために再度スローします。 |
|
オブジェクトを複数回破棄しない |
|
値型のスタティック フィールドのインラインを初期化します |
|
サービス コンポーネントを WebMethod に設定しません |
|
破棄可能なフィールドは破棄されなければなりません |
|
コンストラクターのオーバーライド可能なメソッドを呼び出しません |
|
破棄可能な型はファイナライザーを宣言しなければなりません |
|
ファイナライザーは基本クラスのファイナライザーを呼び出さなければなりません |
|
シリアル化コンストラクターを実装します |
|
ValueType.Equals のオーバーライドで、演算子 equals をオーバーロードします。 |
|
Windows フォームのエントリ ポイントを STAThread に設定します |
|
すべてのシリアル化不可能なフィールドを設定します |
|
ISerializable 型で基本クラス メソッドを呼び出します |
|
ISerializable 型を SerializableAttribute に設定します |
|
シリアル化メソッドを正しく実装します |
|
ISerializable を正しく実装します |
|
書式設定メソッドに正しい引数を提供 |
|
NaN に対して正しくテストします |
|
Enums は 0 値を含んでいなければなりません |
|
オーバーロードする加算および減算で、演算子 equals をオーバーロードします。 |
|
ローカライズされるパラメーターとしてリテラルを渡さない |
|
文字列を大文字に標準化します。 |
|
メソッドの結果を無視しない |
|
GC.SuppressFinalize を正しく呼び出します |
|
プロパティは、配列を返すことはできません。 |
|
文字列の長さを使用して空の文字列をテストします |
|
対象のフレームワークから API のみを使用します |
|
GC.KeepAlive への呼び出しを削除します |
|
SafeHandle を使用して、ネイティブ リソースを要約します |
|
汎用ハンドラーの CLSCompliant でない例外をキャッチします |
|
読み取り専用の変更可能な参照型を宣言しません |
|
配列フィールドを読み取り専用にすることはできません |
|
アサートをセキュリティで保護します |
|
ネイティブ リソースを使用しているときには GC.KeepAlive を呼び出します |
|
プライベート インターフェイスを満たすメソッドをシールします |
|
シリアル化コンストラクターをセキュリティで保護します |
|
静的コンストラクターはプライベートでなければなりません |
|
セキュリティ上重要な定数は透過的である必要がある |
|
Win32 API に相当するマネージ API を使用します |
|
Dispose メソッドから基本クラスの Dispose を呼び出す |
|
ファイナライザーは保護されなければなりません |
|
継承されたメンバーの参照範囲を縮小しません |
|
メンバーは、戻り値の型以外にも異なる点がなければなりません |
|
等号演算子のオーバーロードののオーバーライドの等号 () |
|
演算子は対称型オーバーロードを含まなければなりません |
|
Collection プロパティは読み取り専用でなければなりません |
|
省略可能なフィールドに、逆シリアル化メソッドを指定します |