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