"混合推奨規則" 規則セット
混合 Microsoft は共通のフォーカスをお勧めします。共通言語ランタイムは、セキュリティ ホール、アプリケーション クラッシュ、そのほかの重要な論理エラーやデザイン エラー サポートする C++ の重要な問題はプロジェクト。共通言語ランタイムをサポートする C++ プロジェクトにカスタムの規則セットを作成する場合は、必ずこの規則セットを含める必要があります。この規則セットは、Visual Studio Professional Edition 以上で構成するように設計されています。
規則 |
説明 |
---|---|
初期化されていないメモリの使用 |
|
Null ポインターの逆参照 |
|
未確認の値の使用 |
|
戻り値の無視 |
|
呼び出しの 0 での終了 |
|
0 での終了がない |
|
不適切な連結 |
|
Format 関数への文字列引数がない |
|
Format 関数への整数引数がない |
|
Format 関数へのポインター引数がない |
|
Format 関数への文字列ポインター引数がない |
|
初期化されていないメモリを返します |
|
インデックスがバッファーの最大値を超過 |
|
インデックスがスタック バッファーの最大値を超過 |
|
HRESULT から BOOL への無効なキャスト |
|
BOOL から HRESULT への無効なキャスト |
|
BOOL から HRESULT へのコンパイラ挿入された無効なキャスト |
|
NOT での無効な HRESULT テスト |
|
無効な HRESULT は -1 と比較します。 |
|
-1 への無効な HRESULT の割り当て |
|
ブール値としての無効な HRESULT 使用 |
|
以外の定数と論理 OR |
|
論理 OR 以外の定数と |
|
ゼロと論理 AND 副作用が失われます。 |
|
ローカル アンワインドの強制 |
|
Null DACL の作成 |
|
解放されていないアドレス記述子 |
|
Alloca の保護されていない使用 |
|
を使用してスレッドを終了します。 |
|
実行されないコード ビットごとの OR 限られたスイッチ |
|
バイト算術の使用 |
|
過剰なスタック使用 |
|
ループでの Alloca の使用 |
|
キャストでのかっこの不足 |
|
ポインターの逆参照の無視 |
|
Format 関数への Float 引数がない |
|
Format 関数への余分な引数 |
|
Format 関数への Float でない引数 |
|
関数の書式を指定する整数以外 Argumen |
|
Format 関数への文字でない引数 |
|
無効な文字列のキャスト |
|
無効な CreateProcess 呼び出し |
|
配列の New とスカラーの Delete の不一致 |
|
スカラーの New と配列の Delete の不一致 |
|
メモリの割り当てと解放の不一致 |
|
ビットごとと関係の優先順位 |
|
代入をテストに置き換え |
|
プリミティブな配列の New とスカラーの Delete の不一致 |
|
Format 関数への無効なオブジェクト引数 |
|
論理 OR の定数 |
|
ゼロ以外の論理 OR や副作用 |
|
冗長テスト |
|
相互包含は論理的および false |
|
相互排他が論理 OR 当てはまります。 |
|
論理否定演算子ビットごとの and 優先順位 |
|
論理否定演算子ビットごとの OR の優先順位 |
|
ループ カウントの最大値超過 |
|
ループ カウントの最小値未満 |
|
ループ本体が実行されない |
|
無限ループ |
|
ループが 1 度だけ実行される |
|
シフトの結果がより大きいサイズにキャストされる |
|
ビット フィールドとブール値の比較 |
|
Format 関数への無効な文字列引数 |
|
Format 関数への無効なワイド文字列引数 |
|
サイズと数の使用の不一致 |
|
不適切な変数引数の関数呼び出し |
|
Realloc のリーク |
|
無効な例外フィルター定数 |
|
Exception Continue Execution ループ |
|
ビットごとの OR の優先順位 |
|
存在しない補完 |
|
Exception Continue Search |
|
コンマによる無視 |
|
文字列比較でない文字列コピー |
|
引数の型の不一致の可能性 |
|
VirtualFree の無効なフラグ |
|
VirtualFree の無効なパラメーター |
|
VirtualFree の無効なサイズ |
|
プロセス ハンドルのリーク |
|
シャットダウン情報がない |
|
要素数とバイト数のバッファー オーバーラン |
|
ポインターのサイズの除算 |
|
読み取りのオーバーラン |
|
書き込みのオーバーラン |
|
無効なパラメーター値 |
|
無効なパラメーター値 |
|
無効な属性プロパティ |
|
属性プロパティ値の競合 |
|
参照は Null にはできない |
|
非ポインターでの Null |
|
Void での MustCheck |
|
非ポインターまたは配列でのバッファー サイズ |
|
逆参照ゼロの空白の不一致 |
|
定数での書き込みアクセス |
|
前提条件で使用される Return |
|
非ポインターでの Null 終了 |
|
MustCheck は Yes または No でなければならない |
|
バッファー サイズのない要素サイズ |
|
バッファー サイズが配列サイズを超過 |
|
非ポインターでのバッファー サイズ |
|
属性にプロパティがない |
|
読み取り可能でないバッファーでの有効なサイズ |
|
書き込み可能でないバッファーでの書き込み可能サイズ |
|
無効な注釈です: 「NeedsRelease」プロパティの値がはいといいえの指定 |
|
無効なサイズの文字列参照解除 |
|
無効なサイズの文字列型 |
|
無効なサイズを文字列パラメーター |
|
無効なサイズの到達不能な場所の文字列 |
|
無効なサイズの文字列バッファーの型 |
|
無効な注釈です: 'NeedsRelease' プロパティは、void 型の値では使用できません |
|
認識されない書式指定文字列スタイル |
|
この関数の属性の注釈を使用すると、既存の__declspec 注釈がすべて無効になります。 |
|
無効なサイズ指定です: 解析できる式 |
|
無効な Deref= または Notref=: 解析できる式 |
|
値が有効な Yes/No/Maybe 値ではありません。 |
|
値は、文字列値ではありません。 |
|
value が数ではありません。 |
|
予期しない注釈の式のエラー |
|
注釈の引数の予期された数は、注釈の引数の実際の数は一致しません |
|
注釈の予期しないエラーの注釈 |
|
XML ログ ファイルを保存できませんでした |
|
競合状態 |
|
適切なインタロック操作の使用の失敗 |
|
呼び出し元でのロックの保持の失敗 |
|
呼び出し元でのロックの解放の失敗 |
|
呼び出し元がロックを保持できない |
|
ロックの解放の失敗 |
|
ロックの取得または保持の失敗 |
|
保持されていないロックの解放 |
|
同時実行 SAL 注釈のエラーです。 |
|
式はこの呼び出しで true ではありません |
|
注釈が付けられているパラメーターはポインターである必要があります |
|
この関数のクラスを定義するために使用される関数の typedef クラスと一致しません。 |
|
割り当てられた場合や、渡された関数はクラスの 1 個以上の_Function_class_の注釈が必要です。 |
|
に割り当てられた関数ポインターは、関数のクラス リストに含まれていない関数クラスが指定されます。 |
|
実パラメーターの型は、型と完全に一致する必要があります |
|
インタロックされた関数でアクセスされる変数は、インタロック関数によって常にアクセスする必要があります。 |
|
Interlocked 関数経由でローカル変数にアクセスしています |
|
関数は try/except ブロック内から呼び出される必要があります |
|
可変個の引数が a (リテラル定数) 必要があります。 |
|
定数の引数は、変数である必要があります |
|
代わりに、別の関数を使用して検討。 |
|
Error 注釈 |
|
関数は try/except ブロック内から呼び出さないでください |
|
引数はオブジェクト (ポインターへのポインターではなく) へのポインターを受け取る関数に渡します。 |
|
NULL ポインターを逆参照しています。ポインターは別のポインターと同じ null 値が含まれます。 |
|
引数は 1 つの値である可能性があり、ポインターで見つかった値のコピーです |
|
変数が確認される値を保持します。 |
|
要件が満たされていません。(式は true に評価されません) |
|
静的でないメンバーへの参照が正しくありません |
|
クラス メンバーへのあいまいな参照です。 |
|
_Success_ または _On_failure_ が無効なコンテキスト内で使用されています |
|
左のオペランドは構造体、使用"ポイント> |
|
左のオペランドは構造体、使用「」。 |
|
シンボルの宣言に競合する宣言が含まれています |
|
__on_failure のコンテキストの注釈はコンテキストに明示前にある必要があります。 |
|
SAL_context には静的コンテキスト名が必要です |
|
注釈にはポインター式が必要です |
|
_Use_decl_annotations_ 注釈は、変更、先行する宣言なしで、参照に使用される必要があります。 |
|
属性パラメーター名は、p1...p9 である必要があります |
|
typefix は、既に typefix のあるパラメーターには適用できません |
|
checkReturn の注釈は、関数のパラメーターの事後条件にのみ適用されます。 |
|
関数では、注釈に渡すパラメーターの個数はファイルにある一致しません。 |
|
関数の paramteer では、注釈のパラメーターはファイルにある一致しません。 |
|
注釈 (注釈のパラメーター) には列挙型のメンバーが必要です |
|
整数式は、注釈で注釈のパラメーターが必要です。 |
|
注釈のパラメーターには文字列式が必要です |
|
注釈には __yes、__no、または __maybe が必要です |
|
注釈、パラメーターの予期されるトークンまたは識別子が見つかりませんでした |
|
注釈にはパラメーターが必要です |
|
注釈の必須パラメーターの正しい数が見つかりませんでした |
|
注釈は、PrimOp (現在の宣言内) になることもできません |
|
注釈は、PrimOp (前の宣言を参照) になることもできません |
|
注釈パラメーター: 型の注釈は使用できません |
|
注釈はパラメーターをサポートしません |
|
パラメーターの型とメンバーはありません。 |
|
注釈は配列でのみ有効です |
|
前に、注釈に適用されないポスト、または deref |
|
前に、POST、または deref はブロックに適用します。 |
|
__at の式は、現在の関数には適用されません。 |
|
関数は、注釈としてスタンドアロンのできません |
|
注釈は式では使用できません |
|
パラメーターの注釈はサポートされていません。 |
|
注釈は、パラメーターの値 stringValue と longValue 1 を超える場合があります。paramn=xxx を使用してください |
|
パラメーターの注釈の値、stringValue、または longValue;があります。と paramn=xxx。paramn=xxx のみを使用してください |
|
パラメーターに注釈を付けることに param2 param1 はありません |
|
パラメーターを使用する関数の注釈が認識されない |
|
パラメーターを使用する関数の注釈を実際の型で注釈が付けられた割り当てよりも多くの逆参照が必要です。 |
|
関数の注釈に unparseable パラメーターまたは外部注釈があります。 |
|
関数の注釈は非メンバー関数の" this "注釈を |
|
関数のパラメーター注釈は、パラメーターの型と一致しません。 |
|
関数の競合する注釈: 前のインスタンスにエラーがあります。 |
|
関数の競合する注釈: このインスタンスにエラーがあります。 |
|
関数の競合する注釈: パラメーターにこのインスタンスの別の注釈があります。 |
|
関数の競合する注釈: パラメーターにこのインスタンスの別の注釈があります。 |
|
dynamic_cast が<>注釈 () でサポートされていません |
|
注釈の構文エラーは、注釈の関数で、見つかりました |
|
条件で構文エラーは、基本的な注釈に見つかりました |
|
結果リストの値は定数である必要があります。 |
|
注釈の構文エラーは、関数で見つかった注釈です。 |
|
確認が関数宣言と矛盾しているときに、関数パラメーターの注釈 |
|
関数の場合、手掛かりが関数宣言と一致しません。 |
|
_Macro_value_ へのパラメーターが null です |
|
シンボルについては、「 () 」が見つかりました。一致の末尾「なし" |
|
シンボルについては、「終了」が一致しない中「で始まり」 |
|
書式指定文字列は、前提条件の中に存在する必要があります |
|
関数の場合、パラメーターの構文エラー |
|
関数の場合、最後の近くに構文エラーがあります。 |
|
関数の場合、_At_() の注釈 (認識されないパラメーター名) の構文エラー |
|
関数の場合、_At_() の注釈 (無効なパラメーターの名前) の構文エラー |
|
関数の場合: ReadableTo または WritableTo にパラメーターとして制限仕様はありませんでした。 |
|
関数の注釈は、パラメーターの実際の数よりも多くの外部が含まれます。 |
|
deref レベル 0 の投稿の空白と notnull は関数ごとに無意味です。 |
|
演算子に対する互換性のない型の、式のオペランドです |
|
関数の最初の宣言の注釈はありません。 |
|
追加_Deref_の演算子は、注釈で見つかりました。 |
|
あいまいな_Deref_の演算子は、注釈で見つかりました。 |
|
不適切に配置_Notref_の演算子はトークンに適用見つかりました。 |
|
トークンを解析することが検出されると、エラーが発生します。 |
|
パラメーターの注釈はたれかかっています。 |
|
パラメーターの注釈はたれかかっています。 |
|
注釈は、条件付きで適用できない状況を示します。 |
|
注釈は、動的な値 (変数) が条件のどこに使用できないことを示します。 |
|
破棄可能なフィールドを所有する型は、破棄可能でなければなりません |
|
イベント ハンドラーを正しく宣言します |
|
アセンブリに 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 属性のメソッドを呼び出すことはできません |
|
透過的なコードではセキュリティが重要な重要項目を参照することはできません。 |
|
透過的メソッドは LinkDemands を満たすことはできません |
|
型は、基本型およびインターフェイスと同程度以上、重要でなければならない |
|
透過的メソッドにはセキュリティ アサートを使用できない場合もあります。 |
|
透過的メソッドは、ネイティブ コードを呼び出す必要があります |
|
スタック詳細を保持するために再度スローします。 |
|
オブジェクトを複数回破棄しない |
|
値型のスタティック フィールドのインラインを初期化します |
|
サービス コンポーネントを WebMethod に設定しません |
|
破棄可能なフィールドは破棄されなければなりません |
|
コンストラクターのオーバーライド可能なメソッドを呼び出しません |
|
破棄可能な型はファイナライザーを宣言しなければなりません |
|
ファイナライザーは基底クラスのファイナライザーを呼び出さなければなりません |
|
シリアル化コンストラクターを実装します |
|
ValueType.Equals のオーバーライドで、演算子 equals をオーバーロードします。 |
|
Windows フォームのエントリ ポイントを STAThread に設定します |
|
すべてのシリアル化不可能なフィールドを設定します |
|
ISerializable 型で基底クラス メソッドを呼び出します |
|
ISerializable 型を SerializableAttribute に設定します |
|
シリアル化メソッドを正しく実装します |
|
ISerializable を正しく実装します |
|
書式設定メソッドに正しい引数を提供 |
|
NaN に対して正しくテストします |