CERT C++ ガイドライン
以下の表は、CERT C ガイドラインと Klocwork C++ チェッカーの対応関係を示しています。
| ガイドライン | チェッカー名および説明 |
|---|---|
| CERT ARR30-C (L2): 範囲外のポインターまたは配列添え字を形成または使用しない |
ABV.ANY_SIZE_ARRAY バッファオーバーフロー - 配列インデックスが範囲外 ABV.GENERAL バッファオーバーフロー - 配列インデックスが範囲外 ABV.GENERAL.MULTIDIMENSION バッファオーバーフロー - 配列インデックスが範囲外 ABV.NON_ARRAY 非配列オブジェクトが配列として使用される ABV.STACK バッファオーバーフロー - ローカル配列インデックスが範囲外 ABV.TAINTED 未検証の入力によるバッファオーバーフロー ABV.UNICODE.BOUND_MAP 文字関数のマッピング時のバッファオーバーフロー ABV.UNICODE.FAILED_MAP 関数のマッピングに失敗します ABV.UNICODE.NNTS_MAP 文字関数のマッピング時のバッファオーバーフロー ABV.UNICODE.SELF_MAP 関数のマッピングに失敗します ABV.UNKNOWN_SIZE バッファオーバーフロー - 配列インデックスが範囲外 NNTS.MIGHT バッファオーバーフロー - 非 NULL 終了文字列 NNTS.MUST バッファオーバーフロー - 非 NULL 終了文字列 NNTS.TAINTED 未検証のユーザー入力が原因のバッファオーバーフロー - 非 NULL 終了文字列 NPD.FUNC.CALL.MIGHT NULL を返す関数の戻り値が、これを逆参照する可能性のある別の関数に渡される可能性があります SV.TAINTED.INDEX_ACCESS 配列インデックスとしての未検証の整数の使用 SV.TAINTED.LOOP_BOUND ループ条件での未検証の整数の使用 |
| CERT ARR37-C (L2): 配列以外のオブジェクトを指すポインターに対して整数の加算や減算を行わない |
CERT.ARR.PTR.ARITH 演算式にポインターが使用されています |
| CERT ARR38-C (L2): ライブラリ関数が無効なポインターを形成しないことを保証する |
ABV.GENERAL バッファオーバーフロー - 配列インデックスが範囲外 ABV.GENERAL.MULTIDIMENSION バッファオーバーフロー - 配列インデックスが範囲外 |
| CERT ARR39-C (L2): ポインターに対してスケーリングされた整数の加算や減算を行わない |
CERT.ARR.PTR.ARITH 演算式にポインターが使用されています |
| CERT CON33-C (L3): ライブラリ関数の使用時には競合状態を避ける |
CERT.CONC.LIB_FUNC_USE ライブラリ関数の使用時には競合状態を避けてください |
| CERT CON37-C (L3): マルチスレッドプログラムで signal() を呼び出さない |
MISRA.STDLIB.SIGNAL signal.h の信号処理装置の使用 |
| CERT CON40-C (L2): 1 つの式でアトミック変数を 2 回参照しない |
CERT.CONC.ATOMIC_TWICE_EXPR 1 つの式でアトミック変数を 2 回参照しないでください |
| CERT CON41-C (L3): 疑似的にループで失敗する可能性のある関数はラップする |
CERT.CONC.ATOMIC_COMP_FAIL_IN_LOOP ループで疑似的に失敗する可能性のある関数はラップしてください |
| CERT CON43-C (L3): マルチスレッドコードでデータ競合を許可しない | |
| CERT CON50-CPP (L3): ロックされている間はミューテックスを破棄しないでください |
CERT.CONC.MUTEX.DESTROY_WHILE_LOCKED ロックされている間はミューテックスを破棄しないでください |
| CERT CON51-CPP (L2): アクティブに保持されているロックが例外条件で解放されるようにする |
CERT.CONC.LOCK.NO_RELEASE_ON_EXCEPTION アクティブに保持されているロックが例外条件で解放されるようにする |
| CERT CON52-CPP (L2): 複数のスレッドからビットフィールドにアクセスする場合はデータ競合を防止する | |
| CERT CON53-CPP (L3): 事前定義された順序でロックすることによってデッドロックを回避する | |
| CERT CON54-CPP (L3): 擬似的にループを起動する可能性のあるラップ関数 |
CERT.CONC.WAKE_IN_LOOP 擬似的にループを起動する可能性のあるラップ関数 |
| CERT CON55-CPP (L3): 条件変数の使用時に、スレッドセーフと活性を維持します |
CERT.CONC.UNSAFE_COND_VAR 条件変数の使用時に、スレッドセーフと活性を維持します |
| CERT CON56-CPP (L3): 呼び出し元スレッドが既に所有している非再帰ミューテックスを推論に基づいてロックしない | |
| CERT CTR50-CPP (L2): コンテナーインデックスと反復子が有効な範囲内にあることを保証する |
ABV.ANY_SIZE_ARRAY バッファオーバーフロー - 配列インデックスが範囲外 ABV.GENERAL バッファオーバーフロー - 配列インデックスが範囲外 ABV.GENERAL.MULTIDIMENSION バッファオーバーフロー - 配列インデックスが範囲外 ABV.NON_ARRAY 非配列オブジェクトが配列として使用される ABV.STACK バッファオーバーフロー - ローカル配列インデックスが範囲外 ABV.TAINTED 未検証の入力によるバッファオーバーフロー SV.TAINTED.ALLOC_SIZE メモリ割り当て時の未検証の整数の使用 SV.TAINTED.CALL.INDEX_ACCESS 関数呼び出し時の配列インデックスとしての未検証の整数の使用 SV.TAINTED.CALL.LOOP_BOUND 関数呼び出しのループ条件での未検証の整数の使用 SV.TAINTED.INDEX_ACCESS 配列インデックスとしての未検証の整数の使用 |
| CERT CTR51-CPP (L2): コンテナーの参照要素への有効な参照、ポインター、および反復子を使用する |
ITER.CONTAINER.MODIFIED 無効な反復子の使用 |
| CERT CTR52-CPP (L1): ライブラリ関数でオーバーフローが発生しないようにする |
ITER.END.OUTPARAM.MIGHT 出力反復子としての 'end' の使用 ITER.END.OUTPARAM.MUST 出力反復子としての 'end' の使用 |
| CERT CTR53-CPP (L2): 有効な反復子範囲を使用する |
ITER.RANGE.INVALID 無効な反復子範囲の使用 |
| CERT CTR54-CPP (L3): 同じコンテナを参照しない反復子を減算しない | |
| CERT CTR55-CPP (L2): 結果がオーバーフローする場合は、反復子で加法演算子を使用しない |
ITER.ADVANCE.NONADJACENT 反復子間の距離は 1 より大きい値にする |
| CERT CTR56-CPP (L2): 多相オブジェクトでポインター演算を使用しない |
CERT.CTR.PTR_ARITH_POLYMORPHIC ポリモーフィックなオブジェクトに対してポインタ演算を行わないでください。 |
| CERT CTR57-CPP (L3): 有効な順序述語を提供する | |
| CERT CTR58-CPP (L2): 述語関数オブジェクトが可変であってはならない |
CERT.CTR.MUTABLE_PREDICATE STL アルゴリズムに渡される述語関数オブジェクトまたはラムダは変更不可 |
| CERT DCL30-C (L2): 適切なストレージ期間のオブジェクトを宣言する |
LOCRET.ARG 関数がローカル変数のアドレスを返しています LOCRET.GLOB 関数がローカル変数のアドレスを返しています LOCRET.RET 関数がローカル変数のアドレスを返しています |
| CERT DCL39-C (L3): 信頼境界を越えて構造を渡すときに情報のリークを避ける |
PORTING.STORAGE.STRUCT 構造の要素のバイト位置が配置属性およびパッケージ属性に依存している可能性があります。 |
| CERT DCL40-C (L3): 同一の関数やオブジェクトに対して互換性のない宣言を行わない |
MISRA.FUNC.PARAMS.IDENT 関数の宣言と定義で使用される識別子が一致していません |
| CERT DCL50-CPP (L1): C スタイルの variadic 関数を定義しないでください |
MISRA.FUNC.VARARG 関数が可変数の引数を持っています |
| CERT DCL51-CPP (L3): 予約済みの識別子を宣言または定義しないでください |
MISRA.DEFINE.WRONGNAME 標準ライブラリからの名前がマクロ名に使用されています MISRA.DEFINE.WRONGNAME.UNDERSCORE 予約名がマクロ名に使用されています MISRA.STDLIB.WRONGNAME 標準ライブラリのマクロ、オブジェクトまたは関数の名前が再使用されています MISRA.STDLIB.WRONGNAME.UNDERSCORE 予約名が言語エンティティの名前に使用されています MISRA.UNDEF.WRONGNAME 標準ライブラリからの名前が定義されていません MISRA.UNDEF.WRONGNAME.UNDERSCORE 予約名が定義されていません |
| CERT DCL52-CPP (L3): 参照型を const または volatile で修飾しないでください |
CERT.DCL.REF_TYPE.CONST_OR_VOLATILE 参照型を const または volatile で修飾しないでください |
| CERT DCL53-CPP (L3): 構文的に曖昧な宣言を作成しないでください |
CERT.DCL.AMBIGUOUS_DECL 構文的に曖昧な宣言を作成しないでください |
| CERT DCL54-CPP (L3): 同一のスコープ内のペアとしての割り当ておよび割り当て解除関数をオーバーロードします |
CERT.DCL.SAME_SCOPE_ALLOC_DEALLOC 同一のスコープ内のペアとしての割り当ておよび割り当て解除関数をオーバーロードします |
| CERT DCL55-CPP (L3): 信頼境界を越えてクラスオブジェクトを渡す場合は情報リークを回避する | |
| CERT DCL56-CPP (L3): 静的オブジェクトの初期化中のサイクルを回避する | |
| CERT DCL57-CPP (L2): デストラクターまたは割り当て解除関数から例外をエスケープさせないでください |
MISRA.DTOR.THROW デストラクタにスローします |
| CERT DCL58-CPP (L2): 標準名前空間を変更しないでください |
CERT.DCL.STD_NS_MODIFIED 標準名前空間を変更しないでください |
| CERT DCL59-CPP (L3): 名前が付いていない名前空間をヘッダーファイルで定義しないでください |
MISRA.NAMESPACE.UNMD ヘッダーファイルに名前のない名前空間があります |
| CERT DCL60-CPP (L2): 単一定義規則に従う |
CERT.DCL.ODR.CLASS_REDEFINITION クラスと構造体については、単一定義規則(ODR)に従ってください。 MISRA.ONEDEFRULE.FUNC ヘッダーファイルでグローバル関数が定義されています MISRA.ONEDEFRULE.VAR ヘッダーファイルでグローバル変数が定義されています |
| CERT ENV30-C (L3): 特定の関数の戻り値で参照されるオブジェクトを変更しない |
CXX.STDLIB.ILLEGAL_WRITE 標準ライブラリ関数 localeconv、getenv、setlocale、または strerror が返すポインターは、必ずそれらが const-qualified 型を指すポインターを持つかのように使用する必要があります。 |
| CERT ENV31-C (L3): 環境ポインターを無効にする可能性のある操作の後に環境ポインターに依存しない | |
| CERT ENV32-C (L1): すべての exit ハンドラーは正常に戻る必要がある |
CERT.EXIT.HANDLER_TERMINATE すべての exit ハンドラーは正常に戻る必要があります |
| CERT ENV33-C (L1): system() を呼び出さない |
SV.CODE_INJECTION.SHELL_EXEC シェル実行へのコマンドインジェクション |
| CERT ENV34-C (L3): 特定の関数が返すポインターを格納しない |
CXX.STDLIB.ILLEGAL_REUSE 標準ライブラリ関数 asctime または同様の関数によって返されるポインタは、同じ関数の後続の呼び出しに続いては使用しません |
| CERT ERR30-C (L1): errno を設定することがわかっているライブラリ関数を呼び出す前に errno をゼロに設定し、その関数が失敗を示す値を返した後でのみ errno をチェックする |
CXX.ERRNO.INCORRECTLY_CHECKED ライブラリ関数を呼び出した後に、errno の条件チェックは必要ない CXX.ERRNO.NOT_CHECKED ライブラリ関数を呼び出した後に、errno の条件チェックが欠落している CXX.ERRNO.NOT_SET ライブラリ関数を呼び出す前に、errno はゼロにリセットされていない |
| CERT ERR32-C (L3): errno の不定値に依存しない |
MISRA.INCL.SIGNAL.2012 標準ヘッダーファイル signal.h は使用しない MISRA.STDLIB.SIGNAL signal.h の信号処理装置の使用 |
| CERT ERR33-C (L1): 標準ライブラリのエラーを検出し、処理する |
NPD.CHECK.MUST ポインタを明示的に NULL チェックした後に逆参照します NPD.FUNC.MUST NULL を返す可能性がある関数の戻り値が逆参照されます SV.RVT.RETVAL_NOTTESTED 戻り値の無視 |
| CERT ERR34-C (L2): 文字列を数値に変換する際にエラーを検出する |
CERT.ERR.CONV.STR_TO_NUM 文字列を数値に変換する際にエラーを検出する MISRA.STDLIB.ATOI ライブラリ stdlib.h から 'atof'、'atoi' または 'atol' が使用されています SV.BANNED.RECOMMENDED.SCANF 禁止が推奨されているAPI: 安全でない scanf 型関数 |
| CERT ERR50-CPP (L3): 突然プログラムを終了しない |
CERT.ERR.ABRUPT_TERM 突然プログラムを終了しないでください MISRA.TERMINATE terminate() 関数が明示的に呼び出されています |
| CERT ERR51-CPP (L2): すべての例外を処理する |
MISRA.CATCH.ALL try-catch ブロックに省略記号例外ハンドラーがありません |
| CERT ERR52-CPP (L3): setjmp() または longjmp() は使用しない |
MISRA.STDLIB.LONGJMP setjmp マクロまたは longjmp 関数の使用 |
| CERT ERR53-CPP (L3): コンストラクタまたはデストラクタの function-try-block ハンドラーで基本クラスまたはクラスデータメンバーを参照しない |
MISRA.CTOR.TRY.NON_STATIC コンストラクタまたはデストラクタの関数 try-catch ブロックが非スタティックなメンバーを参照しています |
| CERT ERR54-CPP (L1): キャッチハンドラーは、最大派生から最小派生へとパラメータータイプを順位付けする必要がある |
MISRA.CATCH.NOALL 省略記号例外ハンドラーが try-catch ブロックの最後に置かれていません MISRA.CATCH.WRONGORD try-catch ブロックで基本例外クラスのハンドラーが派生例外クラスのハンドラーよりも先に置かれています |
| CERT ERR55-CPP (L2): 例外仕様を遵守する | |
| CERT ERR56-CPP (L2): 例外の安全性を確保する |
CERT.EXCEPTION.SAFETY.ASSIGN_ORDER 代入演算子の例外安全性を確保する |
| CERT ERR57-CPP (L3): 例外の処理中にリソースをリークしない |
CL.MLK メモリリーク - デストラクタで発生 MLK.MIGHT メモリリークの可能性 MLK.MUST メモリリーク MLK.RET.MIGHT メモリリークの可能性 MLK.RET.MUST メモリリーク RH.LEAK リソースリーク |
| CERT ERR58-CPP (L2): スローされたすべての例外を main() の実行開始前に処理する |
CERT.ERR.UNCAUGHT_STATIC_INIT main() の実行が開始される前にスローされるすべての例外を処理する |
| CERT ERR59-CPP (L2): 実行境界を越えて例外をスローしない |
CERT.EXCEPTION.OVER.BOUNDARY 実行境界を越えてスローされた例外 |
| CERT ERR60-CPP (L3): 例外オブジェクトは nothrow でコピー作成可能でなければならない | |
| CERT ERR61-CPP (L3): lvalue 参照によって例外をキャッチする |
MISRA.CATCH.BY_VALUE クラス タイプの例外オブジェクトが値によってキャッチされています |
| CERT ERR62-CPP (L3): 文字列を数値に変換する際にエラーを検出する |
CERT.ERR.CONV.STR_TO_NUM 文字列を数値に変換する際にエラーを検出する |
| CERT EXP34-C (L1): null ポインターを逆参照しない |
NPD.CHECK.CALL.MIGHT ポインタを明示的に NULL チェックした後に逆参照する可能性のある関数に渡す可能性があります NPD.CHECK.CALL.MUST ポインタを明示的に NULL チェックした後に逆参照する可能性がある関数に渡します NPD.CHECK.MIGHT ポインタを明示的に NULL チェックした後に逆参照する可能性があります NPD.CHECK.MUST ポインタを明示的に NULL チェックした後に逆参照します NPD.CONST.CALL 逆参照する可能性のある関数に NULL を渡しています NPD.CONST.DEREF NULL は逆参照されます NPD.FUNC.CALL.MIGHT NULL を返す関数の戻り値が、これを逆参照する可能性のある別の関数に渡される可能性があります NPD.FUNC.CALL.MUST NULL を返す関数の戻り値が、これを逆参照する可能性がある別の関数に渡されます NPD.FUNC.MIGHT NULL を返す可能性のある関数の戻り値が逆参照される場合があります NPD.FUNC.MUST NULL を返す可能性がある関数の戻り値が逆参照されます NPD.GEN.CALL.MIGHT NULLポインタを逆参照する可能性がある関数に渡す場合があります NPD.GEN.CALL.MUST NULLポインタを逆参照する関数に渡します NPD.GEN.MIGHT NULLポインタを逆参照する可能性があります NPD.GEN.MUST null ポインターが逆参照されます RNPD.CALL NULL チェック前のポインタの、関数呼び出しにおける逆参照は問題となる可能性があります RNPD.DEREF NULL チェック前のポインタの逆参照は問題となる可能性があります |
| CERT EXP39-C (L3): 互換性のない型のポインターを使用して変数にアクセスしない |
CXX.CAST.OBJ_PTR_TO_OBJ_PTR オブジェクト タイプを指すポインタと、異なるオブジェクト タイプを指す別のポインタとの間のキャスト |
| CERT EXP42-C (L1): パディングデータを比較しない |
CERT.MEMCMP.PADDED_DATA パディングデータを比較しないでください |
| CERT EXP45-C (L2): 条件式で代入を実行しない |
ASSIGCOND.CALL 割り当て条件 (呼び出し) ASSIGCOND.GEN 割り当て条件 MISRA.ASSIGN.COND 条件内で代入演算子が使用されています |
| CERT EXP46-C (L2): ブール型のオペランドでビット演算子を使用しない |
MISRA.LOGIC.OPERATOR.NOT_BOOL 論理演算ではない演算子のオペランドが実質的にはブール値です |
| CERT EXP47-C (L2): 正しくない型の引数で va_arg を呼び出さない |
CERT.VA_ARG.TYPE 正しくない型の引数で va_arg を呼び出さない |
| CERT EXP50-CPP (L2): 副作用の評価の順序に依存しない |
CERT.EXPR.PARENS 式内の演算子の優先度は明示的にする必要があります。 MISRA.EXPR.PARENS.INSUFFICIENT 式の演算子優先規則に制限された依存性が必要です MISRA.INCR_DECR.OTHER 増分または減分の演算子がその他の演算子と混合して式で使用されています PORTING.VAR.EFFECTS ある使用法が副次的な影響を受ける式で変数が 2 回使用されています |
| CERT EXP51-CPP (L3): 不正な型のポインターを使用して配列を削除しないでください |
CERT.EXPR.DELETE_ARR.BASE_PTR 不正な型のポインターを使用して配列を削除しないでください |
| CERT EXP52-CPP (L3): 未評価のオペランドの副作用に頼らない |
MISRA.SIZEOF.SIDE_EFFECT sizeof のオペランドに副作用があります |
| CERT EXP53-CPP (L1): 初期化されていないメモリの読み込みを行わない |
UNINIT.CTOR.MIGHT コンストラクタにおける未初期化の変数の可能性 UNINIT.CTOR.MUST コンストラクタにおける未初期化の変数 UNINIT.HEAP.MIGHT 未初期化のヒープの使用の可能性 UNINIT.HEAP.MUST 未初期化のヒープの使用 UNINIT.STACK.ARRAY.MIGHT 未初期化の配列の可能性 UNINIT.STACK.ARRAY.MUST 未初期化の配列 UNINIT.STACK.ARRAY.PARTIAL.MUST 一部が未初期化の配列 UNINIT.STACK.MIGHT 未初期化の変数の可能性 UNINIT.STACK.MUST 未初期化の変数 |
| CERT EXP54-CPP (L2): 存続期間外のオブジェクトにアクセスしない |
CL.FFM.ASSIGN 解放済みメモリの使用 (二重解放) - operator= が無いため CL.FFM.COPY 解放済みメモリの使用 (二重解放) - コピーコンストラクタが無いため LOCRET.ARG 関数がローカル変数のアドレスを返しています LOCRET.GLOB 関数がローカル変数のアドレスを返しています LOCRET.RET 関数がローカル変数のアドレスを返しています UFM.DEREF.MIGHT 解放済みメモリの逆参照の可能性 UFM.DEREF.MUST 解放済みメモリの逆参照 UFM.FFM.MIGHT 解放済みメモリの使用 (二重解放)の可能性 UFM.FFM.MUST 解放済みメモリの解放 UFM.RETURN.MIGHT 解放済みメモリの戻り値への使用の可能性 UFM.RETURN.MUST 解放済みメモリの戻り値への使用 UFM.USE.MIGHT 解放済みメモリの使用の可能性 UFM.USE.MUST 解放済みメモリの使用 UNINIT.HEAP.MIGHT 未初期化のヒープの使用の可能性 UNINIT.HEAP.MUST 未初期化のヒープの使用 UNINIT.STACK.ARRAY.MIGHT 未初期化の配列の可能性 UNINIT.STACK.ARRAY.MUST 未初期化の配列 UNINIT.STACK.ARRAY.PARTIAL.MUST 一部が未初期化の配列 UNINIT.STACK.MIGHT 未初期化の変数の可能性 UNINIT.STACK.MUST 未初期化の変数 |
| CERT EXP55-CPP (L3): cv 修飾されていない型を通じて cv 修飾されたオブジェクトにアクセスしない |
MISRA.CAST.CONST キャスト演算により const または volatile がポインターまたは参照から除外されます。 |
| CERT EXP56-CPP (L3): 不一致の言語リンクで関数を呼び出さない |
MISRA.CAST.PTR.UNRELATED ポインタ型のオブジェクトを関連のない型にキャストしています MISRA.CAST.PTR_TO_INT ポインタと整数型間のキャスト PORTING.CAST.PTR 両方ともポインタでない型といずれかがポインタでない型間のキャスト PORTING.CAST.PTR.FLTPNT 非浮動小数点型のポインタへの浮動小数点式のポインタのキャスト PORTING.CAST.PTR.SIZE サイズに互換性がない可能性がある型への式のキャストの可能性 |
| CERT EXP57-CPP (L3): 不完全なクラスにポインターをキャストしたり、削除しないでください |
CERT.EXPR.DELETE_PTR.INCOMPLETE_TYPE 不完全な型へのポインターを削除しないでください |
| CERT EXP58-CPP (L3): 正しい型のオブジェクトを va_start に渡す |
CERT.VA_START.TYPE 正しい型のオブジェクトを va_start に渡す |
| CERT EXP59-CPP (L3): offsetof() は有効な型とメンバーに対して使用する | |
| CERT EXP60-CPP (L2): 実行境界を超えて標準ではないレイアウトタイプオブジェクトを渡さないでください |
CERT.EXPR.PASS_NON_STD_LAYOUT 実行境界を超えて標準ではないレイアウトタイプオブジェクトを渡さないでください |
| CERT EXP61-CPP (L2): ラムダオブジェクトは、その参照キャプチャされたオブジェクトよりも長く存続してはなりません |
LOCRET.RET 関数がローカル変数のアドレスを返しています |
| CERT EXP62-CPP (L1): オブジェクトの値表現の一部ではないオブジェクト表現のビットにアクセスしないでください |
CERT.MEMCMP.PADDED_DATA パディングデータを比較しないでください CWARN.MEM.NONPOD 非 POD オブジェクトに適用されるメモリ操作ルーチン |
| CERT EXP63-CPP (L2): 移動元オブジェクトの値に依存しない |
CERT.EXPR.MOVED_FROM.RANGE 移動元のイテレータオブジェクトを使用しないでください。 CERT.EXPR.MOVED_FROM.USE 移動元のオブジェクトを使用しない |
| CERT FIO30-C (L1): ユーザーからの入力を使って書式文字列を組み立てない |
SV.FMTSTR.GENERIC 書式文字列の脆弱性 SV.TAINTED.FMTSTR 書式文字列での未検証データの使用 |
| CERT FIO32-C (L3): ファイルのみに適した操作をデバイスに対して実行しない | |
| CERT FIO34-C (L1): ファイルから読み込んだ文字と EOF または WEOF を区別する |
CWARN.CMPCHR.EOF 'char' 式と EOF 定数との比較 |
| CERT FIO37-C (L1): fgets() または fgetws() が正常に実行された場合に空でない文字列が返されることを想定していない |
CERT.FIO.FGETS fgets() または fgetws() が正常に実行された場合に空でない文字列が返されることを想定していない |
| CERT FIO38-C (L3): FILE オブジェクトをコピーしない |
CERT.FILE_PTR.DEREF FILE オブジェクトへのポインターは逆参照してはなりません CERT.FILE_PTR.DEREF.CAST オブジェクトは FILE ポインターにキャストされており、これを逆参照してはなりません。 CERT.FILE_PTR.DEREF.INDIRECT FILE オブジェクトへのポインターは、システム関数で間接的に逆参照してはなりません CERT.FILE_PTR.DEREF.RETURN FILE オブジェクト(関数の戻り値)へのポインターは逆参照してはなりません MISRA.FILE_PTR.DEREF.2012 FILE オブジェクトへのポインターは逆参照してはなりません MISRA.FILE_PTR.DEREF.CAST.2012 オブジェクトは FILE ポインターにキャストされており、これを逆参照してはなりません。 MISRA.FILE_PTR.DEREF.INDIRECT.2012 FILE オブジェクトへのポインターは、システム関数で間接的に逆参照してはなりません MISRA.FILE_PTR.DEREF.RETURN.2012 FILE オブジェクト(関数の戻り値)へのポインターは逆参照してはなりません |
| CERT FIO39-C (L2): 中間のフラッシュまたは位置調整の関数呼び出しをせずに、ストリームから交互に入力と出力を行わない |
CERT.FIO.NO_FLUSH フラッシュまたは位置調整の関数呼び出しの欠如 |
| CERT FIO40-C (L2): fgets() または fgetws() の失敗時には文字列をリセットする |
CERT.FIO.RESET fgets() または fgetws() の失敗時には文字列をリセットする |
| CERT FIO41-C (L3): 副作用のあるストリーム引数を使用して getc()、putc()、getwc()、または putwc() を呼び出さない | |
| CERT FIO42-C (L3): 不要になったファイルを閉じる |
RH.LEAK リソースリーク |
| CERT FIO44-C (L3): fsetpos() に、fgetpos() から返される値のみを使用する |
CERT.FSETPOS.VALUE fsetpos() に、fgetpos() から返される値のみを使用します |
| CERT FIO45-C (L2): ファイルへのアクセス中に TOCTOU の競合状態を回避する |
SV.TOCTOU.FILE_ACCESS ファイル アクセス時の作成日時/使用日時の競合状態 |
| CERT FIO46-C (L3): 閉じたファイルにアクセスしない |
SV.INCORRECT_RESOURCE_HANDLING.URH 安全でないリソース処理 |
| CERT FIO47-C (L2): 有効な書式文字列を使用する |
SV.FMT_STR.PRINT_FORMAT_MISMATCH.BAD 互換性がない print 関数パラメーターの型 SV.FMT_STR.PRINT_FORMAT_MISMATCH.UNDESIRED 予期しない print 関数パラメーターの型 SV.FMT_STR.PRINT_IMPROP_LENGTH print 関数呼び出しの長さ修飾子の不適切な使用 SV.FMT_STR.PRINT_PARAMS_WRONGNUM.FEW print 関数呼び出しの引数が少なすぎます SV.FMT_STR.PRINT_PARAMS_WRONGNUM.MANY print 関数呼び出しの引数が多すぎます SV.FMT_STR.SCAN_FORMAT_MISMATCH.BAD 互換性がない scan 関数パラメーターの型 SV.FMT_STR.SCAN_FORMAT_MISMATCH.UNDESIRED 予期しない scan 関数パラメーターの型 SV.FMT_STR.SCAN_IMPROP_LENGTH scan 関数呼び出しの長さ修飾子の不適切な使用 SV.FMT_STR.SCAN_PARAMS_WRONGNUM.FEW scan 関数呼び出しの引数が少なすぎます SV.FMT_STR.SCAN_PARAMS_WRONGNUM.MANY scan 関数呼び出しの引数が多すぎます SV.FMT_STR.UNKWN_FORMAT print 関数呼び出しの書式指定子が不明です |
| CERT FIO50-CPP (L2): 中間の位置調整の関数呼び出しをせずにファイルストリームから入力と出力を交互に行わない |
CERT.FIO.NO_POSITIONING 位置指定の関数呼び出しをせずに、ファイルストリーム上で読み取りと書き込みを交互に行います。 |
| CERT FIO51-CPP (L3): 不要になったファイルを閉じる |
RH.LEAK リソースリーク |
| CERT FLP30-C (L2): 浮動小数点変数をループカウンターとして使用しない |
MISRA.FOR.COUNTER.FLT for ループのカウンターが浮動小数点タイプです |
| CERT FLP32-C (L1): 数学関数のドメインエラーと範囲エラーを防止または検出する |
CERT.MATH.DOMAIN.CHECK 標準ライブラリ数学関数に渡される 1 つ以上の引数が有効なドメイン外にあります CERT.MATH.RANGE.CHECK 範囲エラーを発生させる可能性のあるライブラリ数学関数の呼び出し後にエラー条件をチェックする必要です |
| CERT FLP34-C (L3): 浮動小数点変換は新しい型の範囲に収まるようにする |
MISRA.CAST.FLOAT.WIDER より広い浮動小数点タイプへの浮動小数点式のキャスト MISRA.CAST.FLOAT_INT 整数型への浮動小数点式のキャスト MISRA.CAST.INT_FLOAT 浮動小数点タイプへの複合式のキャスト MISRA.CONV.FLOAT 暗黙的な浮動小数点変換です |
| CERT FLP36-C (L3): 整数値を浮動小数点型に変換する場合は精度を保持する |
PORTING.CAST.FLTPNT 非浮動小数点タイプへの浮動小数点式のキャスト |
| CERT FLP37-C (L3): 浮動小数点値の比較にオブジェクト表現を使用しない |
CERT.MEMCMP.FLOAT_MEMBER メンバーが浮動小数点の場合、比較しないでください |
| CERT INT30-C (L2): 符号なし整数演算がラップしないことを確認する |
CWARN.NOEFFECT.OUTOFRANGE 範囲外の値 NUM.OVERFLOW オーバーフローの可能性 NUM.OVERFLOW.DF 起こり得る数値のオーバーフローまたはラップアラウンド |
| CERT INT31-C (L1): 整数変換により、喪失データや誤解釈データにならないことを確認する |
PORTING.CAST.SIZE サイズが異なる可能性がある型に式がキャストされています |
| CERT INT32-C (L1): 符号付き整数に対する演算がオーバーフローを起こさないようにする |
CWARN.NOEFFECT.OUTOFRANGE 範囲外の値 NUM.OVERFLOW オーバーフローの可能性 NUM.OVERFLOW.DF 起こり得る数値のオーバーフローまたはラップアラウンド |
| CERT INT33-C (L2): 除算および剰余演算により、ゼロ除算エラーが発生しないことを確認する |
DBZ.CONST ゼロ定数による除算が発生しました DBZ.CONST.CALL 値 '0' が除数としてこの値を使用できる関数に渡されます DBZ.GENERAL ゼロ除算が発生した可能性があります DBZ.GENERAL.FLOAT 浮動小数点数のゼロ除算が発生した可能性があります DBZ.ITERATOR ループ反復子でゼロ除算が発生した可能性があります DBZ.ITERATOR.CALL 関数呼出しでゼロ除算が発生した可能性があります DBZ.ITERATOR.FLOAT ループ反復子でゼロ除算が発生した可能性があります |
| CERT INT34-C (L3): 式を負のビット数分シフトさせたり、オペランドに存在するビット数以上にシフトさせたりしない |
MISRA.SHIFT.RANGE.2012 シフト演算子の右側のオペランドは範囲外です - 左側のオペランドの基本タイプのサイズ以上か、または負 |
| CERT INT35-C (L3): 正しい整数精度を使用する | |
| CERT INT36-C (L3): ポインターから整数、または整数からポインターに変換する | |
| CERT INT50-CPP (L3): 範囲外の列挙値にキャストしない | |
| CERT MEM30-C (L2): 解放されたメモリにアクセスしない |
UFM.DEREF.MIGHT 解放済みメモリの逆参照の可能性 UFM.DEREF.MUST 解放済みメモリの逆参照 UFM.FFM.MIGHT 解放済みメモリの使用 (二重解放)の可能性 UFM.FFM.MUST 解放済みメモリの解放 UFM.RETURN.MIGHT 解放済みメモリの戻り値への使用の可能性 UFM.RETURN.MUST 解放済みメモリの戻り値への使用 UFM.USE.MIGHT 解放済みメモリの使用の可能性 UFM.USE.MUST 解放済みメモリの使用 |
| CERT MEM31-C (L3): 動的に割り当てられたメモリが不要になったら解放する |
CL.FFM.ASSIGN 解放済みメモリの使用 (二重解放) - operator= が無いため CL.FFM.COPY 解放済みメモリの使用 (二重解放) - コピーコンストラクタが無いため CL.SHALLOW.ASSIGN 解放済みメモリの使用 (二重解放) - 演算子 = での浅いコピー CL.SHALLOW.COPY 解放済みメモリの使用 (二重解放) - コピーコンストラクタでの浅いコピー FMM.MIGHT メモリの解放の不一致の可能性 FMM.MUST メモリの解放の不一致 |
| CERT MEM34-C (L2): 動的に割り当てられたメモリのみを解放する |
FNH.MIGHT 非ヒープメモリの解放の可能性 FNH.MUST 非ヒープメモリの解放 |
| CERT MEM35-C (L2): オブジェクトに十分なメモリを割り当てる |
INCORRECT.ALLOC_SIZE 不適切な割り当てサイズ SV.TAINTED.ALLOC_SIZE メモリ割り当て時の未検証の整数の使用 |
| CERT MEM36-C (L3): realloc() を呼び出してオブジェクトのアライメントを変更しない |
AUTOSAR.STDLIB.MEMORY 関数 malloc、calloc、realloc、および free は使用してはなりません |
| CERT MEM50-CPP (L2): 解放されたメモリにアクセスしない |
UFM.DEREF.MIGHT 解放済みメモリの逆参照の可能性 UFM.DEREF.MUST 解放済みメモリの逆参照 UFM.FFM.MIGHT 解放済みメモリの使用 (二重解放)の可能性 UFM.FFM.MUST 解放済みメモリの解放 UFM.RETURN.MIGHT 解放済みメモリの戻り値への使用の可能性 UFM.RETURN.MUST 解放済みメモリの戻り値への使用 UFM.USE.MIGHT 解放済みメモリの使用の可能性 UFM.USE.MUST 解放済みメモリの使用 |
| CERT MEM51-CPP (L2): 動的に割り当てられたリソースを適切に割り当て解除します |
CL.FFM.ASSIGN 解放済みメモリの使用 (二重解放) - operator= が無いため CL.FFM.COPY 解放済みメモリの使用 (二重解放) - コピーコンストラクタが無いため CL.FMM メモリの解放の不一致 - デストラクタで発生 CL.SHALLOW.ASSIGN 解放済みメモリの使用 (二重解放) - 演算子 = での浅いコピー CL.SHALLOW.COPY 解放済みメモリの使用 (二重解放) - コピーコンストラクタでの浅いコピー FMM.MIGHT メモリの解放の不一致の可能性 FMM.MUST メモリの解放の不一致 FNH.MIGHT 非ヒープメモリの解放の可能性 FNH.MUST 非ヒープメモリの解放 FUM.GEN.MIGHT 未割り当てメモリの解放の可能性 FUM.GEN.MUST 未割り当てメモリの解放 UNINIT.CTOR.MIGHT コンストラクタにおける未初期化の変数の可能性 UNINIT.CTOR.MUST コンストラクタにおける未初期化の変数 UNINIT.HEAP.MIGHT 未初期化のヒープの使用の可能性 UNINIT.HEAP.MUST 未初期化のヒープの使用 |
| CERT MEM52-CPP (L1): メモリ割り当てエラーの検出と処理 |
NPD.CHECK.CALL.MIGHT ポインタを明示的に NULL チェックした後に逆参照する可能性のある関数に渡す可能性があります NPD.CHECK.CALL.MUST ポインタを明示的に NULL チェックした後に逆参照する可能性がある関数に渡します NPD.CHECK.MIGHT ポインタを明示的に NULL チェックした後に逆参照する可能性があります NPD.CHECK.MUST ポインタを明示的に NULL チェックした後に逆参照します NPD.CONST.CALL 逆参照する可能性のある関数に NULL を渡しています NPD.CONST.DEREF NULL は逆参照されます NPD.FUNC.CALL.MIGHT NULL を返す関数の戻り値が、これを逆参照する可能性のある別の関数に渡される可能性があります NPD.FUNC.CALL.MUST NULL を返す関数の戻り値が、これを逆参照する可能性がある別の関数に渡されます NPD.FUNC.MIGHT NULL を返す可能性のある関数の戻り値が逆参照される場合があります NPD.FUNC.MUST NULL を返す可能性がある関数の戻り値が逆参照されます NPD.GEN.CALL.MIGHT NULLポインタを逆参照する可能性がある関数に渡す場合があります NPD.GEN.CALL.MUST NULLポインタを逆参照する関数に渡します NPD.GEN.MIGHT NULLポインタを逆参照する可能性があります NPD.GEN.MUST null ポインターが逆参照されます RNPD.CALL NULL チェック前のポインタの、関数呼び出しにおける逆参照は問題となる可能性があります RNPD.DEREF NULL チェック前のポインタの逆参照は問題となる可能性があります |
| CERT MEM53-CPP (L1): オブジェクトの有効期間を手動で管理する場合はオブジェクトを明示的に構築および破棄する |
CERT.MEM.OBJ_LIFETIME_CTOR 初期化されていない heap メンバー関数の呼び出し CERT.MEM.OBJ_LIFETIME_DTOR 手動で割り当てられたメモリを持つオブジェクトは明示的に破棄されない |
| CERT MEM53-CPP (L2): Explicitly construct and destruct objects when manually managing object lifetime |
CERT.MEM.OBJ_LIFETIME_CTOR 初期化されていない heap メンバー関数の呼び出し CERT.MEM.OBJ_LIFETIME_DTOR 手動で割り当てられたメモリを持つオブジェクトは明示的に破棄されない |
| CERT MEM54-CPP (L1): 十分なストレージ容量に対して適切に整列されたポインターを placement new に提供する |
CERT.MEM.PLACEMENTNEW.MISALIGNED アライメントが適切なストレージを placement new に提供します CERT.MEM.PLACEMENTNEW.TOOSMALL 十分なストレージを placement new に提供します。 |
| CERT MEM54-CPP (L2): Provide placement new with properly aligned pointers to sufficient storage capacity |
CERT.MEM.PLACEMENTNEW.MISALIGNED アライメントが適切なストレージを placement new に提供します CERT.MEM.PLACEMENTNEW.TOOSMALL 十分なストレージを placement new に提供します。 |
| CERT MEM55-CPP (L1): 置換動的記憶域管理要件を遵守します |
CERT.MEM.OVERRIDE.DELETE 'delete' の動的メモリ管理要件を変更してください CERT.MEM.OVERRIDE.NEW 'new' の動的メモリ管理要件を変更してください |
| CERT MEM55-CPP (L2): Honor replacement dynamic storage management requirements |
CERT.MEM.OVERRIDE.DELETE 'delete' の動的メモリ管理要件を変更してください CERT.MEM.OVERRIDE.NEW 'new' の動的メモリ管理要件を変更してください |
| CERT MEM56-CPP (L1): 既に所有されているポインター値を無関係なスマートポインターに格納しない |
CERT.MEM.SMART_PTR.OWNED 複数のスマートポインターでのポインター所有権の共有 CERT.MEM.SMART_PTR.OWNED.THIS 基礎となるリソースが無関係なスマートポインターによって既に所有されている可能性がある |
| CERT MEM56-CPP (L2): Do not store an already-owned pointer value in an unrelated smart pointer |
CERT.MEM.SMART_PTR.OWNED 複数のスマートポインターでのポインター所有権の共有 CERT.MEM.SMART_PTR.OWNED.THIS 基礎となるリソースが無関係なスマートポインターによって既に所有されている可能性がある |
| CERT MEM57-CPP (L3): デフォルト演算子 new がオーバーアラインメントされた型に使用されないようにする | |
| CERT MSC30-C (L3): 疑似乱数の生成に rand() 関数を使用しない |
CERT.MSC.STD_RAND_CALL 疑似乱数の生成に std::rand() を使用しないでください |
| CERT MSC32-C (L1): 疑似乱数ジェネレータを適切にシードする |
CERT.MSC.SEED_RANDOM 疑似乱数ジェネレータを適切にシードする |
| CERT MSC33-C (L2): asctime() 関数に無効なデータを渡さない |
CERT.MSC.ASCTIME asctime() 関数に無効なデータを渡さないでください |
| CERT MSC37-C (L2): 制御が非 void 関数の終わりに到達しないことを確認する |
FUNCRET.GEN 非 void 関数に戻り値がありません FUNCRET.IMPLICIT 暗黙的に int を返す非 void 関数に戻り値がありません |
| CERT MSC38-C (L3): 定義済み識別子は、マクロとしてのみ実装されている可能性がある場合は、オブジェクトとして扱わない | |
| CERT MSC39-C (L3): 不定値を持つ va_list に対して va_arg() を呼び出さない |
VA.LIST.INDETERMINATE 不定値を持つ va_list に対する va_arg() の呼び出し |
| CERT MSC40-C (L3): 制約に違反しない |
MISRA.FUNC.STATIC.REDECL 関数またはオブジェクトの再宣言に 'static' 修飾子がありません |
| CERT MSC41-C (L2): 機密情報をハードコード化しない |
CXX.SV.PWD.PLAIN プレーンな文字列を使用してパスワードを設定しようとしています CXX.SV.PWD.PLAIN.LENGTH 15 文字未満の長さでパスワードを設定しようとしています CXX.SV.PWD.PLAIN.LENGTH.ZERO ゼロ文字の長さでパスワードを設定しようとしています HCC ハードコードされた資格情報の使用 HCC.PWD ハードコードされたパスワードの使用 HCC.USER ハードコードされたユーザー名の使用 |
| CERT MSC50-CPP (L3): 疑似乱数の生成に std::rand() を使用しないでください |
CERT.MSC.STD_RAND_CALL 疑似乱数の生成に std::rand() を使用しないでください |
| CERT MSC51-CPP (L1): 乱数ジェネレーターが適切にシードされていることを確認する |
AUTOSAR.STDLIB.RANDOM.NBR_GEN_DEFAULT_INIT 乱数エンジンをデフォルトで初期化してはなりません |
| CERT MSC52-CPP (L2): 値を戻す関数はすべての終了パスから値を戻す必要があります |
FUNCRET.GEN 非 void 関数に戻り値がありません FUNCRET.IMPLICIT 暗黙的に int を返す非 void 関数に戻り値がありません |
| CERT MSC53-CPP (L3): [[noreturn]] と宣言された関数から返さないでください |
CERT.MSC.NORETURN_FUNC_RETURNS [[noreturn]] と宣言された関数から返さないでください |
| CERT MSC54-CPP (L2): シグナルハンドラーは古いプレーン関数である必要があります |
CERT.MSC.SIG_HANDLER.POF シグナルハンドラーは古いプレーン関数である必要があります |
| CERT OOP50-CPP (L3): コンストラクタまたは、デストラクタから仮想関数を呼出してはならない |
CERT.OOP.CTOR.VIRTUAL_FUNC コンストラクタまたは、デストラクタから仮想関数を呼出してはならない |
| CERT OOP51-CPP (L3): 派生オブジェクトをスライスしない | |
| CERT OOP52-CPP (L3): 仮想デストラクタなしで多相オブジェクトを削除しない |
CL.MLK.VIRTUAL メモリリーク - デストラクタで発生している可能性 CWARN.DTOR.NONVIRT.DELETE 仮想メソッドを持ち、仮想デストラクタを持たないクラスのオブジェクトの式を削除しています |
| CERT OOP53-CPP (L2): コンストラクターメンバー初期化子を正規の順序で作成します |
CERT.OOP.CTOR.INIT_ORDER コンストラクターメンバー初期化子を正規の順序で作成します |
| CERT OOP54-CPP (L3): セルフコピー割り当てを適切に処理する |
CL.SELF-ASSIGN 解放済みメモリの使用 (二重解放) - operator= |
| CERT OOP55-CPP (L2): メンバー演算子へのポインターを使用して、存在しないメンバーにアクセスしないでください |
CERT.OOP.PTR_MEMBER.NO_MEMBER メンバー演算子へのポインターを使用して、存在しないメンバーにアクセスしないでください |
| CERT OOP56-CPP (L3): 置換ハンドラー要件を遵守する | |
| CERT OOP57-CPP (L1): 標準ライブラリ関数よりも特殊メンバー関数とオーバーロードされた演算子を優先します |
CERT.OOP.CSTD_FUNC_USE C 標準ライブラリ関数よりも特殊メンバー関数とオーバーロードされた演算子を優先します |
| CERT OOP58-CPP (L2): コピー操作でソースオブジェクトを変更してはいけません |
CERT.OOP.COPY_MUTATES コピー操作でソースオブジェクトを変更してはいけません |
| CERT POS30-C (L1): readlink() 関数を適切に使用する |
ABV.GENERAL バッファオーバーフロー - 配列インデックスが範囲外 ABV.GENERAL.MULTIDIMENSION バッファオーバーフロー - 配列インデックスが範囲外 |
| CERT POS34-C (L2): 自動変数へのポインターを引数として putenv() を呼び出さないでください |
CERT.PUTENV.AUTO_VARIABLE 自動変数へのポインターを引数として putenv() を呼び出さないでください |
| CERT POS35-C (L2): シンボリックリンクの有無を確認しながら競合状態を回避する |
CERT.STR.ASSIGN.CONST_TO_NONCONST const char ポインターを非 const char ポインターに割り当てないでください SV.TOCTOU.FILE_ACCESS ファイル アクセス時の作成日時/使用日時の競合状態 |
| CERT POS36-C (L1): 権限放棄時に正しい廃止順序を守る |
SV.USAGERULES.PERMISSIONS 特権の昇給の使用 |
| CERT POS37-C (L1): 権限が正常に放棄されたことを確認する |
SV.USAGERULES.PERMISSIONS 特権の昇給の使用 |
| CERT POS39-C (L1): システム間でのデータ転送時は正しいバイトオーダーを使用する |
BYTEORDER.HTON.SEND ホストバイトオーダーからネットワークバイトオーダーの変換が欠落しています BYTEORDER.HTON.WRITE ホストバイトオーダーからネットワークバイトオーダーの変換が欠落しています BYTEORDER.NTOH.READ ネットワークバイトオーダーからホストバイトオーダーの変換が欠落しています BYTEORDER.NTOH.RECV ネットワークバイトオーダーからホストバイトオーダーの変換が欠落しています |
| CERT POS44-C (L3): シグナルを使用してスレッドを終了しない |
MISRA.INCL.SIGNAL.2012 標準ヘッダーファイル signal.h は使用しない |
| CERT POS47-C (L3): 非同期キャンセルが可能なスレッドを使用してはいけません |
CERT.POS.THREAD.ASYNC_CANCEL 非同期キャンセルが可能なスレッドを使用してはいけません |
| CERT POS51-C (L3): 事前定義された順序でロックすることにより、POSIX スレッドのデッドロックを回避する |
CONC.DL デッドロック CONC.NO_UNLOCK 変数のロック解除の欠落 |
| CERT POS52-C (L3): POSIX ロックの保持中にブロックする可能性のある操作を実行しない |
CONC.SLEEP クリティカルセクションで関数がブロックされる可能性があります |
| CERT POS53-C (L2): 条件変数に対する並行待機操作に複数のミューテックスを使用しない |
CERT.CONC.COND_MULTIPLE_MUTEX 条件変数に対する並行待機操作に複数のミューテックスを使用しない |
| CERT POS54-C (L1): POSIX ライブラリエラーを検出して処理する |
SV.RVT.RETVAL_NOTTESTED 戻り値の無視 |
| CERT PRE30-C (L3): 連結によってユニバーサル文字名を作成しない |
MISRA.DEFINE.SHARP マクロ定義に # 演算子または ## 演算子が使用されています |
| CERT PRE31-C (L2): 安全でないマクロへの引数で副作用を避ける |
PORTING.VAR.EFFECTS ある使用法が副次的な影響を受ける式で変数が 2 回使用されています |
| CERT PRE32-C (L3): 関数のようなマクロの呼び出しでプリプロセッサディレクティブを使用しない |
MISRA.EXPANSION.DIRECTIVE マクロの引数内にディレクティブのようなトークンがあります |
| CERT SIG31-C (L1): シグナルハンドラー内で共有オブジェクトにアクセスしない |
CERT.SIG.SIG_HANDLER.SHARED_OBJ シグナルハンドラー内で共有オブジェクトにアクセスしないでください CERT.SIG.SIG_HANDLER.SHARED_OBJ.HEAP シグナルハンドラー内で共有オブジェクトにアクセスしないでください CERT.SIG.SIG_HANDLER.SHARED_OBJ.MIGHT シグナルハンドラー内で共有オブジェクトにアクセスしないでください |
| CERT SIG34-C (L3): 割り込みが可能なシグナルハンドラ内から signal() を呼び出さない |
MISRA.STDLIB.SIGNAL signal.h の信号処理装置の使用 |
| CERT SIG35-C (L3): 計算例外シグナルハンドラーから復帰しない |
CERT.STDLIB.SIGNAL 計算例外シグナルハンドラーから戻らない |
| CERT STR30-C (L2): 文字列リテラルを変更しない |
CERT.STR.ARG.CONST_TO_NONCONST const char ポインターを非 const char ポインター引数に渡さないでください CERT.STR.ASSIGN.CONST_TO_NONCONST const char ポインターを非 const char ポインターに割り当てないでください |
| CERT STR31-C (L2): 文字列のストレージに文字データと null 終了文字を格納するためのスペースが十分にあることを保証する |
SV.FMT_STR.BAD_SCAN_FORMAT 入力書式指定子エラー SV.UNBOUND_STRING_INPUT.FUNC バインドされていない文字列入力の使用法 |
| CERT STR32-C (L1): 文字列を期待するライブラリ関数には null 以外で終了する文字のシーケンスは渡さない |
NNTS.MIGHT バッファオーバーフロー - 非 NULL 終了文字列 NNTS.MUST バッファオーバーフロー - 非 NULL 終了文字列 SV.STRBO.BOUND_COPY.UNTERM 次の文字列演算でバッファオーバーフローの可能性があります |
| CERT STR34-C (L2): 文字をより大きなサイズの整数に変換する前に、unsigned char 型にキャストする |
CXX.CAST.SIGNED_CHAR_TO_INTEGER より大きな整数サイズに変換する前に char を unsigned char にキャストします |
| CERT STR37-C (L3): 文字処理関数への引数は、unsigned char として表現できなければならない |
AUTOSAR.STDLIB.CCTYPE.UCHAR <cctype> で定義される文字処理関数の引数は、unsigned char として表現できなければなりません |
| CERT STR38-C (L1): ナロー文字の文字列/関数とワイド文字の文字列/関数を混同しない |
CXX.DIFF.WIDTH.STR_AND_FUNC 関数の呼び出し時にナロー文字列とワイド文字列の間で暗黙のキャストが行われます |
| CERT STR50-CPP (L2): 文字列のストレージに文字データと null 終了文字を格納するためのスペースが十分にあることを保証する |
NNTS.MIGHT バッファオーバーフロー - 非 NULL 終了文字列 NNTS.MUST バッファオーバーフロー - 非 NULL 終了文字列 NNTS.TAINTED 未検証のユーザー入力が原因のバッファオーバーフロー - 非 NULL 終了文字列 SV.UNBOUND_STRING_INPUT.CIN バインドされていない文字列入力についての cin の使用法 |
| CERT STR51-CPP (L1): null ポインターから std::string を作成しないでください |
NPD.CHECK.CALL.MIGHT ポインタを明示的に NULL チェックした後に逆参照する可能性のある関数に渡す可能性があります NPD.CHECK.CALL.MUST ポインタを明示的に NULL チェックした後に逆参照する可能性がある関数に渡します NPD.CHECK.MIGHT ポインタを明示的に NULL チェックした後に逆参照する可能性があります NPD.CHECK.MUST ポインタを明示的に NULL チェックした後に逆参照します NPD.CONST.CALL 逆参照する可能性のある関数に NULL を渡しています NPD.CONST.DEREF NULL は逆参照されます NPD.FUNC.CALL.MIGHT NULL を返す関数の戻り値が、これを逆参照する可能性のある別の関数に渡される可能性があります NPD.FUNC.CALL.MUST NULL を返す関数の戻り値が、これを逆参照する可能性がある別の関数に渡されます NPD.FUNC.MIGHT NULL を返す可能性のある関数の戻り値が逆参照される場合があります NPD.FUNC.MUST NULL を返す可能性がある関数の戻り値が逆参照されます NPD.GEN.CALL.MIGHT NULLポインタを逆参照する可能性がある関数に渡す場合があります NPD.GEN.CALL.MUST NULLポインタを逆参照する関数に渡します NPD.GEN.MIGHT NULLポインタを逆参照する可能性があります NPD.GEN.MUST null ポインターが逆参照されます RNPD.CALL NULL チェック前のポインタの、関数呼び出しにおける逆参照は問題となる可能性があります RNPD.DEREF NULL チェック前のポインタの逆参照は問題となる可能性があります |
| CERT STR52-CPP (L2): basic_string の参照要素への有効な参照、ポインター、および反復子を使用する |
CERT.STR_ACCESS.INVALID 無効な文字列イテレーターまたはポインターの使用 |
| CERT STR53-CPP (L2): 範囲チェック要素アクセス |