CERT C++ ガイドライン
以下の表は、CERT C ガイドラインと Klocwork C++ チェッカーの対応関係を示しています。
| ガイドライン | チェッカー名および説明 |
|---|---|
| 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 ループ条件での未検証の整数の使用 |
| ARR37-C(L2) |
CERT.ARR.PTR.ARITH 演算式にポインターが使用されています |
| ARR38-C(L2) |
ABV.GENERAL バッファオーバーフロー - 配列インデックスが範囲外 ABV.GENERAL.MULTIDIMENSION バッファオーバーフロー - 配列インデックスが範囲外 |
| ARR39-C(L2) |
CERT.ARR.PTR.ARITH 演算式にポインターが使用されています |
| CERT ARR30-C (L2): Do not form or use out-of-bounds pointers or array subscripts |
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): Do not add or subtract an integer to a pointer to a non-array object |
CERT.ARR.PTR.ARITH 演算式にポインターが使用されています |
| CERT ARR38-C (L2): Guarantee that library functions do not form invalid pointers |
ABV.GENERAL バッファオーバーフロー - 配列インデックスが範囲外 ABV.GENERAL.MULTIDIMENSION バッファオーバーフロー - 配列インデックスが範囲外 |
| CERT ARR39-C (L2): Do not add or subtract a scaled integer to a pointer |
CERT.ARR.PTR.ARITH 演算式にポインターが使用されています |
| CERT CON33-C (L3): Avoid race conditions when using library functions |
CERT.CONC.LIB_FUNC_USE ライブラリ関数の使用時には競合状態を避けてください |
| CERT CON37-C (L3): Do not call signal() in a multithreaded program |
MISRA.STDLIB.SIGNAL signal.h の信号処理装置の使用 |
| CERT CON40-C (L2): Do not refer to an atomic variable twice in an expression |
CERT.CONC.ATOMIC_TWICE_EXPR 1 つの式でアトミック変数を 2 回参照しないでください |
| CERT CON41-C (L3): Wrap functions that can fail spuriously in a loop |
CERT.CONC.ATOMIC_COMP_FAIL_IN_LOOP ループで疑似的に失敗する可能性のある関数はラップしてください |
| CERT CON50-CPP (L3): Do not destroy a mutex while it is locked |
CERT.CONC.MUTEX.DESTROY_WHILE_LOCKED ロックされている間はミューテックスを破棄しないでください |
| CERT CON54-CPP (L3): Wrap functions that can spuriously wake up in a loop |
CERT.CONC.WAKE_IN_LOOP 擬似的にループを起動する可能性のあるラップ関数 |
| CERT CON55-CPP (L3): Preserve thread safety and liveness when using condition variables |
CERT.CONC.UNSAFE_COND_VAR 条件変数の使用時に、スレッドセーフと活性を維持します |
| CERT CTR50-CPP (L2): Guarantee that container indices and iterators are within the valid range |
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): Use valid references |
ITER.CONTAINER.MODIFIED 無効な反復子の使用 |
| CERT CTR52-CPP (L1): Guarantee that library functions do not overflow |
ITER.END.OUTPARAM.MIGHT 出力反復子としての 'end' の使用 ITER.END.OUTPARAM.MUST 出力反復子としての 'end' の使用 |
| CERT CTR55-CPP (L2): Do not use an additive operator on an iterator if the result would overflow |
ITER.ADVANCE.NONADJACENT 反復子間の距離は 1 より大きい値にする |
| CERT DCL30-C (L2): Declare objects with appropriate storage durations |
LOCRET.ARG 関数がローカル変数のアドレスを返しています LOCRET.GLOB 関数がローカル変数のアドレスを返しています LOCRET.RET 関数がローカル変数のアドレスを返しています |
| CERT DCL39-C (L3): Avoid information leakage when passing a structure across a trust boundary |
PORTING.STORAGE.STRUCT 構造の要素のバイト位置が配置属性およびパッケージ属性に依存している可能性があります。 |
| CERT DCL40-C (L3): Do not create incompatible declarations of the same function or object |
MISRA.FUNC.PARAMS.IDENT 関数の宣言と定義で使用される識別子が一致していません |
| CERT DCL50-CPP (L1): Do not define a C-style variadic function |
MISRA.FUNC.VARARG 関数が可変数の引数を持っています |
| CERT DCL51-CPP (L3): Do not declare or define a reserved identifier |
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): Never qualify a reference type with const or volatile |
CERT.DCL.REF_TYPE.CONST_OR_VOLATILE 参照型を const または volatile で修飾しないでください |
| CERT DCL53-CPP (L3): Do not write syntactically ambiguous declarations |
CERT.DCL.AMBIGUOUS_DECL 構文的に曖昧な宣言を作成しないでください |
| CERT DCL54-CPP (L3): Overload allocation and deallocation functions as a pair in the same scope |
CERT.DCL.SAME_SCOPE_ALLOC_DEALLOC 同一のスコープ内のペアとしての割り当ておよび割り当て解除関数をオーバーロードします |
| CERT DCL57-CPP (L2): Do not let exceptions escape from destructors or deallocation functions |
MISRA.DTOR.THROW デストラクタにスローします |
| CERT DCL58-CPP (L2): Do not modify the standard namespaces |
CERT.DCL.STD_NS_MODIFIED 標準名前空間を変更しないでください |
| CERT DCL59-CPP (L3): Do not define an unnamed namespace in a header file |
MISRA.NAMESPACE.UNMD ヘッダーファイルに名前のない名前空間があります |
| CERT ENV30-C (L3): Do not modify the object referenced by the return value of certain functions |
CXX.STDLIB.ILLEGAL_WRITE 標準ライブラリ関数 localeconv、getenv、setlocale、または strerror が返すポインターは、必ずそれらが const-qualified 型を指すポインターを持つかのように使用する必要があります。 |
| CERT ENV32-C (L1): All exit handlers must return normally |
CERT.EXIT.HANDLER_TERMINATE すべての exit ハンドラーは正常に戻る必要があります |
| CERT ENV33-C (L1): Do not call system() |
SV.CODE_INJECTION.SHELL_EXEC シェル実行へのコマンドインジェクション |
| CERT ENV34-C (L3): Do not store pointers returned by certain functions |
CXX.STDLIB.ILLEGAL_REUSE 標準ライブラリ関数 asctime または同様の関数によって返されるポインタは、同じ関数の後続の呼び出しに続いては使用しません |
| CERT ERR30-C (L1): Set errno to zero before calling a library function known to set errno |
CXX.ERRNO.INCORRECTLY_CHECKED ライブラリ関数を呼び出した後に、errno の条件チェックは必要ない CXX.ERRNO.NOT_CHECKED ライブラリ関数を呼び出した後に、errno の条件チェックが欠落している CXX.ERRNO.NOT_SET ライブラリ関数を呼び出す前に、errno はゼロにリセットされていない |
| CERT ERR32-C (L3): Do not rely on indeterminate values of errno |
MISRA.INCL.SIGNAL.2012 標準ヘッダーファイル signal.h は使用しない MISRA.STDLIB.SIGNAL signal.h の信号処理装置の使用 |
| CERT ERR33-C (L1): Detect and handle standard library errors |
NPD.CHECK.MUST ポインタを明示的に NULL チェックした後に逆参照します NPD.FUNC.MUST NULL を返す可能性がある関数の戻り値が逆参照されます SV.RVT.RETVAL_NOTTESTED 戻り値の無視 |
| CERT ERR34-C (L2): Detect errors when converting a string to a number |
CERT.ERR.CONV.STR_TO_NUM 文字列を数値に変換する際にエラーを検出する MISRA.STDLIB.ATOI ライブラリ stdlib.h から 'atof'、'atoi' または 'atol' が使用されています SV.BANNED.RECOMMENDED.SCANF 禁止が推奨されているAPI: 安全でない scanf 型関数 |
| CERT ERR50-CPP (L3): Do not abruptly terminate the program |
CERT.ERR.ABRUPT_TERM 突然プログラムを終了しないでください MISRA.TERMINATE terminate() 関数が明示的に呼び出されています |
| CERT ERR51-CPP (L2): Handle all exceptions |
MISRA.CATCH.ALL try-catch ブロックに省略記号例外ハンドラーがありません |
| CERT ERR52-CPP (L3): Do not use setjmp() or longjmp() |
MISRA.STDLIB.LONGJMP setjmp マクロまたは longjmp 関数の使用 |
| CERT ERR53-CPP (L3): Do not reference base classes or class data members in a constructor or destructor function-try-block handler |
MISRA.CTOR.TRY.NON_STATIC コンストラクタまたはデストラクタの関数 try-catch ブロックが非スタティックなメンバーを参照しています |
| CERT ERR54-CPP (L1): Catch handlers should order their parameter types from most derived to least derived |
MISRA.CATCH.NOALL 省略記号例外ハンドラーが try-catch ブロックの最後に置かれていません MISRA.CATCH.WRONGORD try-catch ブロックで基本例外クラスのハンドラーが派生例外クラスのハンドラーよりも先に置かれています |
| CERT ERR57-CPP (L3): Do not leak resources when handling exceptions |
CL.MLK メモリリーク - デストラクタで発生 MLK.MIGHT メモリリークの可能性 MLK.MUST メモリリーク MLK.RET.MIGHT メモリリークの可能性 MLK.RET.MUST メモリリーク RH.LEAK リソースリーク |
| CERT ERR59-CPP (L2): Do not throw an exception across execution boundaries |
CERT.EXCEPTION.OVER.BOUNDARY 実行境界を越えてスローされた例外 |
| CERT ERR61-CPP (L3): Catch exceptions by lvalue reference |
MISRA.CATCH.BY_VALUE クラス タイプの例外オブジェクトが値によってキャッチされています |
| CERT ERR62-CPP (L3): Detect errors when converting a string to a number |
CERT.ERR.CONV.STR_TO_NUM 文字列を数値に変換する際にエラーを検出する |
| CERT EXP34-C (L1): Ensure a null pointer is not dereferenced |
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): Do not access a variable through a pointer of an incompatible type |
CXX.CAST.OBJ_PTR_TO_OBJ_PTR オブジェクト タイプを指すポインタと、異なるオブジェクト タイプを指す別のポインタとの間のキャスト |
| CERT EXP42-C (L1): Do not compare padding data |
CERT.MEMCMP.PADDED_DATA パディングデータを比較しないでください |
| CERT EXP45-C (L2): Do not perform assignments in selection statements |
ASSIGCOND.CALL 割り当て条件 (呼び出し) ASSIGCOND.GEN 割り当て条件 MISRA.ASSIGN.COND 条件内で代入演算子が使用されています |
| CERT EXP46-C (L2): Do not use a bitwise operator with a Boolean-like operand |
MISRA.LOGIC.OPERATOR.NOT_BOOL 論理演算ではない演算子のオペランドが実質的にはブール値です |
| CERT EXP47-C (L2): Do not call va_arg with an argument of the incorrect type |
CERT.VA_ARG.TYPE 正しくない型の引数で va_arg を呼び出さない |
| CERT EXP50-CPP (L2): Do not depend on the order of evaluation for side effects |
CERT.EXPR.PARENS 式内の演算子の優先度は明示的にする必要があります。 MISRA.EXPR.PARENS.INSUFFICIENT 式の演算子優先規則に制限された依存性が必要です MISRA.INCR_DECR.OTHER 増分または減分の演算子がその他の演算子と混合して式で使用されています PORTING.VAR.EFFECTS ある使用法が副次的な影響を受ける式で変数が 2 回使用されています |
| CERT EXP51-CPP (L3): Do not delete an array through a pointer of the incorrect type |
CERT.EXPR.DELETE_ARR.BASE_PTR 不正な型のポインターを使用して配列を削除しないでください |
| CERT EXP52-CPP (L3): Do not rely on side effects in unevaluated operands |
MISRA.SIZEOF.SIDE_EFFECT sizeof のオペランドに副作用があります |
| CERT EXP53-CPP (L1): Do not read uninitialized memory |
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): Do not access an object outside of its lifetime |
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): Do not access a cv-qualified object through a cv-unqualified type |
MISRA.CAST.CONST キャスト演算により const または volatile がポインターまたは参照から除外されます。 |
| CERT EXP56-CPP (L3): Do not call a function with a mismatched language linkage |
MISRA.CAST.PTR.UNRELATED ポインタ型のオブジェクトを関連のない型にキャストしています MISRA.CAST.PTR_TO_INT ポインタと整数型間のキャスト PORTING.CAST.PTR 両方ともポインタでない型といずれかがポインタでない型間のキャスト PORTING.CAST.PTR.FLTPNT 非浮動小数点型のポインタへの浮動小数点式のポインタのキャスト PORTING.CAST.PTR.SIZE サイズに互換性がない可能性がある型への式のキャストの可能性 |
| CERT EXP57-CPP (L3): Do not cast or delete pointers to incomplete classes |
CERT.EXPR.DELETE_PTR.INCOMPLETE_TYPE 不完全な型へのポインターを削除しないでください |
| CERT EXP58-CPP (L3): Pass an object of the correct type to va_start |
CERT.VA_START.TYPE 正しい型のオブジェクトを va_start に渡す |
| CERT EXP60-CPP (L2): Do not pass a nonstandard-layout type object across execution boundaries |
CERT.EXPR.PASS_NON_STD_LAYOUT 実行境界を超えて標準ではないレイアウトタイプオブジェクトを渡さないでください |
| CERT EXP61-CPP (L2): A lamda object must not outlive any of its reference captured objects |
LOCRET.RET 関数がローカル変数のアドレスを返しています |
| CERT EXP62-CPP (L1): Do not access the bits of an object representation that are not part of the object's value representation |
CERT.MEMCMP.PADDED_DATA パディングデータを比較しないでください CWARN.MEM.NONPOD 非 POD オブジェクトに適用されるメモリ操作ルーチン |
| CERT FIO30-C (L1): Exclude user input from format strings |
SV.FMTSTR.GENERIC 書式文字列の脆弱性 SV.TAINTED.FMTSTR 書式文字列での未検証データの使用 |
| CERT FIO34-C (L1): Distinguish between characters read from a file and EOF or WEOF |
CWARN.CMPCHR.EOF 'char' 式と EOF 定数との比較 |
| CERT FIO37-C (L1): Do not assume that fgets() or fgetws() returns a nonempty string when successful |
CERT.FIO.FGETS fgets() または fgetws() が正常に実行された場合に空でない文字列が返されることを想定していない |
| CERT FIO38-C (L3): Do not copy a FILE object |
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): Do not alternately input and output from a stream without an intervening flush or positioning call |
CERT.FIO.NO_FLUSH フラッシュまたは位置調整の関数呼び出しの欠如 |
| CERT FIO42-C (L3): Close files when they are no longer needed |
RH.LEAK リソースリーク |
| CERT FIO44-C (L3): Only use values for fsetpos() that are returned from fgetpos() |
CERT.FSETPOS.VALUE fsetpos() に、fgetpos() から返される値のみを使用します |
| CERT FIO45-C (L2): Avoid TOCTOU race conditions while accessing files |
SV.TOCTOU.FILE_ACCESS ファイル アクセス時の作成日時/使用日時の競合状態 |
| CERT FIO46-C (L3): Do not access a closed file |
SV.INCORRECT_RESOURCE_HANDLING.URH 安全でないリソース処理 |
| CERT FIO47-C (L2): Use valid format strings |
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 FIO51-CPP (L3): Close files when they are no longer needed |
RH.LEAK リソースリーク |
| CERT FLP30-C (L2): Do not use floating-point variables as loop counters |
MISRA.FOR.COUNTER.FLT for ループのカウンターが浮動小数点タイプです |
| CERT FLP32-C (L1): Prevent or detect domain and range errors in math functions |
CERT.MATH.DOMAIN.CHECK 標準ライブラリ数学関数に渡される 1 つ以上の引数が有効なドメイン外にあります CERT.MATH.RANGE.CHECK 範囲エラーを発生させる可能性のあるライブラリ数学関数の呼び出し後にエラー条件をチェックする必要です |
| CERT FLP34-C (L3): Ensure that floating-point conversions are within range of the new type |
MISRA.CAST.FLOAT.WIDER より広い浮動小数点タイプへの浮動小数点式のキャスト MISRA.CAST.FLOAT_INT 整数型への浮動小数点式のキャスト MISRA.CAST.INT_FLOAT 浮動小数点タイプへの複合式のキャスト MISRA.CONV.FLOAT 暗黙的な浮動小数点変換です |
| CERT FLP36-C (L3): Preserve precision when converting integral values to floating-point type |
PORTING.CAST.FLTPNT 非浮動小数点タイプへの浮動小数点式のキャスト |
| CERT FLP37-C (L3): Do not use object representations to compare floating-point values |
CERT.MEMCMP.FLOAT_MEMBER メンバーが浮動小数点の場合、比較しないでください |
| CERT INT30-C (L2): Ensure that unsigned integer operations do not wrap |
CWARN.NOEFFECT.OUTOFRANGE 範囲外の値 NUM.OVERFLOW オーバーフローの可能性 NUM.OVERFLOW.DF 起こり得る数値のオーバーフローまたはラップアラウンド |
| CERT INT31-C (L1): Ensure that integer conversions do not result in lost or misinterpreted data |
PORTING.CAST.SIZE サイズが異なる可能性がある型に式がキャストされています |
| CERT INT32-C (L1): Ensure that operations on signed integers do not result in overflow |
CWARN.NOEFFECT.OUTOFRANGE 範囲外の値 NUM.OVERFLOW オーバーフローの可能性 NUM.OVERFLOW.DF 起こり得る数値のオーバーフローまたはラップアラウンド |
| CERT INT33-C (L2): Ensure that division and remainder operations do not result in divide-by-zero errors |
DBZ.CONST ゼロ定数による除算が発生しました DBZ.CONST.CALL 値 '0' が除数としてこの値を使用できる関数に渡されます DBZ.GENERAL ゼロ除算が発生した可能性があります DBZ.GENERAL.FLOAT 浮動小数点数のゼロ除算が発生した可能性があります DBZ.ITERATOR ループ反復子でゼロ除算が発生した可能性があります DBZ.ITERATOR.CALL 関数呼出しでゼロ除算が発生した可能性があります DBZ.ITERATOR.FLOAT ループ反復子でゼロ除算が発生した可能性があります |
| CERT INT34-C (L3): Do not shift an expression by a negative number of bits or by greater than or equal to the number of bits that exist in the operand |
MISRA.SHIFT.RANGE.2012 シフト演算子の右側のオペランドは範囲外です - 左側のオペランドの基本タイプのサイズ以上か、または負 |
| CERT MEM30-C (L2): Do not access freed memory |
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): Free dynamically allocated memory when no longer needed |
CL.FFM.ASSIGN 解放済みメモリの使用 (二重解放) - operator= が無いため CL.FFM.COPY 解放済みメモリの使用 (二重解放) - コピーコンストラクタが無いため CL.SHALLOW.ASSIGN 解放済みメモリの使用 (二重解放) - 演算子 = での浅いコピー CL.SHALLOW.COPY 解放済みメモリの使用 (二重解放) - コピーコンストラクタでの浅いコピー FMM.MIGHT メモリの解放の不一致の可能性 FMM.MUST メモリの解放の不一致 |
| CERT MEM34-C (L2): Only free memory allocated dynamically |
FNH.MIGHT 非ヒープメモリの解放の可能性 FNH.MUST 非ヒープメモリの解放 |
| CERT MEM35-C (L2): Allocate sufficient memory for an object |
INCORRECT.ALLOC_SIZE 不適切な割り当てサイズ SV.TAINTED.ALLOC_SIZE メモリ割り当て時の未検証の整数の使用 |
| CERT MEM36-C (L3): Do not modify the alignment of objects by calling realloc() |
AUTOSAR.STDLIB.MEMORY 関数 malloc、calloc、realloc、および free は使用してはなりません |
| CERT MEM50-CPP (L2): Do not access freed memory |
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): Properly deallocate dynamically allocated resources |
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): Detect and handle memory allocation errors |
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 (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 (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 (L2): Honor replacement dynamic storage management requirements |
CERT.MEM.OVERRIDE.DELETE 'delete' の動的メモリ管理要件を変更してください CERT.MEM.OVERRIDE.NEW 'new' の動的メモリ管理要件を変更してください |
| 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 MSC30-C (L3): Do not use the rand() function for generating pseudorandom numbers |
CERT.MSC.STD_RAND_CALL 疑似乱数の生成に std::rand() を使用しないでください |
| CERT MSC32-C (L1): Properly seed pseudorandom number generators |
CERT.MSC.SEED_RANDOM 疑似乱数ジェネレータを適切にシードする |
| CERT MSC33-C (L2): Do not pass invalid data to the asctime() function |
CERT.MSC.ASCTIME asctime() 関数に無効なデータを渡さないでください |
| CERT MSC37-C (L2): Ensure that control never reaches the end of a non-void function |
FUNCRET.GEN 非 void 関数に戻り値がありません FUNCRET.IMPLICIT 暗黙的に int を返す非 void 関数に戻り値がありません |
| CERT MSC39-C (L3): Do not call va_arg() on a va_list that has an indeterminate value |
VA.LIST.INDETERMINATE 不定値を持つ va_list に対する va_arg() の呼び出し |
| CERT MSC40-C (L3): Do not violate constraints |
MISRA.FUNC.STATIC.REDECL 関数またはオブジェクトの再宣言に 'static' 修飾子がありません |
| CERT MSC41-C (L2): Never hard code sensitive information |
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): Do not use std::rand() for generating pseudorandom numbers |
CERT.MSC.STD_RAND_CALL 疑似乱数の生成に std::rand() を使用しないでください |
| CERT MSC51-CPP (L1): Ensure your random number generator is properly seeded |
AUTOSAR.STDLIB.RANDOM.NBR_GEN_DEFAULT_INIT 乱数エンジンをデフォルトで初期化してはなりません |
| CERT MSC52-CPP (L2): Value-returning functions must return a value from all exit paths |
FUNCRET.GEN 非 void 関数に戻り値がありません FUNCRET.IMPLICIT 暗黙的に int を返す非 void 関数に戻り値がありません |
| CERT MSC53-CPP (L3): Do not return from a function declared [[noreturn]] |
CERT.MSC.NORETURN_FUNC_RETURNS [[noreturn]] と宣言された関数から返さないでください |
| CERT MSC54-CPP (L2): A signal handler must be a plain old function |
CERT.MSC.SIG_HANDLER.POF シグナルハンドラーは古いプレーン関数である必要があります |
| CERT OOP50-CPP (L3): Do not invoke virtual functions from constructors or destructors |
CERT.OOP.CTOR.VIRTUAL_FUNC コンストラクタまたは、デストラクタから仮想関数を呼出してはならない |
| CERT OOP52-CPP (L3): Do not delete a polymorphic object without a virtual destructor |
CL.MLK.VIRTUAL メモリリーク - デストラクタで発生している可能性 CWARN.DTOR.NONVIRT.DELETE 仮想メソッドを持ち、仮想デストラクタを持たないクラスのオブジェクトの式を削除しています |
| CERT OOP53-CPP (L2): Write constructor member initializers in the canonical order |
CERT.OOP.CTOR.INIT_ORDER コンストラクターメンバー初期化子を正規の順序で作成します |
| CERT OOP54-CPP (L3): Gracefully handle self-copy assignment |
CL.SELF-ASSIGN 解放済みメモリの使用 (二重解放) - operator= |
| CERT OOP55-CPP (L2): Do not use pointer-to-member operators to access nonexistent members |
CERT.OOP.PTR_MEMBER.NO_MEMBER メンバー演算子へのポインターを使用して、存在しないメンバーにアクセスしないでください |
| CERT OOP57-CPP (L1): Prefer special member functions and overloaded operators to C Standard Library functions |
CERT.OOP.CSTD_FUNC_USE C 標準ライブラリ関数よりも特殊メンバー関数とオーバーロードされた演算子を優先します |
| CERT OOP58-CPP (L2): Copy operations must not mutate the source object |
CERT.OOP.COPY_MUTATES コピー操作でソースオブジェクトを変更してはいけません |
| CERT POS30-C (L1): Use the readlink() function properly |
ABV.GENERAL バッファオーバーフロー - 配列インデックスが範囲外 ABV.GENERAL.MULTIDIMENSION バッファオーバーフロー - 配列インデックスが範囲外 |
| CERT POS34-C (L2): Do not call putenv() with a pointer to an automatic variable as the argument |
CERT.PUTENV.AUTO_VARIABLE 自動変数へのポインターを引数として putenv() を呼び出さないでください |
| CERT POS35-C (L2): Avoid race conditions while checking for the existence of a symbolic link |
CERT.STR.ASSIGN.CONST_TO_NONCONST const char ポインターを非 const char ポインターに割り当てないでください SV.TOCTOU.FILE_ACCESS ファイル アクセス時の作成日時/使用日時の競合状態 |
| CERT POS36-C (L1): Observe correct revocation order while relinquishing privileges |
SV.USAGERULES.PERMISSIONS 特権の昇給の使用 |
| CERT POS37-C (L1): Ensure that privilege relinquishment is successful |
SV.USAGERULES.PERMISSIONS 特権の昇給の使用 |
| CERT POS39-C (L1): Use the correct byte ordering when transferring data between systems |
BYTEORDER.HTON.SEND ホストバイトオーダーからネットワークバイトオーダーの変換が欠落しています BYTEORDER.HTON.WRITE ホストバイトオーダーからネットワークバイトオーダーの変換が欠落しています BYTEORDER.NTOH.READ ネットワークバイトオーダーからホストバイトオーダーの変換が欠落しています BYTEORDER.NTOH.RECV ネットワークバイトオーダーからホストバイトオーダーの変換が欠落しています |
| CERT POS44-C (L3): Do not use signals to terminate threads |
MISRA.INCL.SIGNAL.2012 標準ヘッダーファイル signal.h は使用しない |
| CERT POS47-C (L3): Do not use threads that can be canceled asynchronously |
CERT.POS.THREAD.ASYNC_CANCEL 非同期キャンセルが可能なスレッドを使用してはいけません |
| CERT POS51-C (L3): Avoid deadlock with POSIX threads by locking in predefined order |
CONC.DL デッドロック CONC.NO_UNLOCK 変数のロック解除の欠落 |
| CERT POS52-C (L3): Do not perform operations that can block while holding a POSIX lock |
CONC.SLEEP クリティカルセクションで関数がブロックされる可能性があります |
| CERT POS54-C (L1): Detect and handle POSIX library errors |
SV.RVT.RETVAL_NOTTESTED 戻り値の無視 |
| CERT PRE30-C (L3): Do not create a universal character name through concatenation |
MISRA.DEFINE.SHARP マクロ定義に # 演算子または ## 演算子が使用されています |
| CERT PRE31-C (L2): Avoid side effects in arguments to unsafe macros |
PORTING.VAR.EFFECTS ある使用法が副次的な影響を受ける式で変数が 2 回使用されています |
| CERT PRE32-C (L3): Do not use preprocessor directives in invocations of function-like macros |
MISRA.EXPANSION.DIRECTIVE マクロの引数内にディレクティブのようなトークンがあります |
| CERT SIG31-C (L1): Do not access shared objects in signal handlers |
CERT.SIG.SIG_HANDLER.SHARED_OBJ シグナルハンドラー内で共有オブジェクトにアクセスしないでください CERT.SIG.SIG_HANDLER.SHARED_OBJ.HEAP シグナルハンドラー内で共有オブジェクトにアクセスしないでください CERT.SIG.SIG_HANDLER.SHARED_OBJ.MIGHT シグナルハンドラー内で共有オブジェクトにアクセスしないでください |
| CERT SIG34-C (L3): Do not call signal() from within interruptible signal handlers |
MISRA.STDLIB.SIGNAL signal.h の信号処理装置の使用 |
| CERT SIG35-C (L3): Do not return from a computational exception signal handler |
CERT.STDLIB.SIGNAL 計算例外シグナルハンドラーから戻らない |
| CERT STR30-C (L2): Do not attempt to modify string literals |
CERT.STR.ARG.CONST_TO_NONCONST const char ポインターを非 const char ポインター引数に渡さないでください CERT.STR.ASSIGN.CONST_TO_NONCONST const char ポインターを非 const char ポインターに割り当てないでください |
| CERT STR31-C (L2): Guarantee that storage for strings has sufficient space for character data and the null terminator |
SV.FMT_STR.BAD_SCAN_FORMAT 入力書式指定子エラー SV.UNBOUND_STRING_INPUT.FUNC バインドされていない文字列入力の使用法 |
| CERT STR32-C (L1): Do not pass a non-null-terminated character sequence to a library function that expects a string |
NNTS.MIGHT バッファオーバーフロー - 非 NULL 終了文字列 NNTS.MUST バッファオーバーフロー - 非 NULL 終了文字列 SV.STRBO.BOUND_COPY.UNTERM 次の文字列演算でバッファオーバーフローの可能性があります |
| CERT STR34-C (L2): Cast characters to unsigned char before converting to larger integer sizes |
CXX.CAST.SIGNED_CHAR_TO_INTEGER より大きな整数サイズに変換する前に char を unsigned char にキャストします |
| CERT STR37-C (L3): Arguments to character-handling functions must be representable as an unsigned char |
AUTOSAR.STDLIB.CCTYPE.UCHAR <cctype> で定義される文字処理関数の引数は、unsigned char として表現できなければなりません |
| CERT STR38-C (L1): Do not confuse narrow and wide character strings and functions |
CXX.DIFF.WIDTH.STR_AND_FUNC 関数の呼び出し時にナロー文字列とワイド文字列の間で暗黙のキャストが行われます |
| CERT STR50-CPP (L2): Guarantee that storage for strings has sufficient space for character data and the null terminator |
NNTS.MIGHT バッファオーバーフロー - 非 NULL 終了文字列 NNTS.MUST バッファオーバーフロー - 非 NULL 終了文字列 NNTS.TAINTED 未検証のユーザー入力が原因のバッファオーバーフロー - 非 NULL 終了文字列 SV.UNBOUND_STRING_INPUT.CIN バインドされていない文字列入力についての cin の使用法 |
| CERT STR51-CPP (L1): Do not attempt to create a std::string from a null pointer |
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 チェック前のポインタの逆参照は問題となる可能性があります |
| CON33-C(L3) |
CERT.CONC.LIB_FUNC_USE ライブラリ関数の使用時には競合状態を避けてください |
| CON37-C(L3) |
MISRA.STDLIB.SIGNAL signal.h の信号処理装置の使用 |
| CON40-C(L2) |
CERT.CONC.ATOMIC_TWICE_EXPR 1 つの式でアトミック変数を 2 回参照しないでください |
| CON41-C(L3) |
CERT.CONC.ATOMIC_COMP_FAIL_IN_LOOP ループで疑似的に失敗する可能性のある関数はラップしてください |
| CON50-CPP(L3) |
CERT.CONC.MUTEX.DESTROY_WHILE_LOCKED ロックされている間はミューテックスを破棄しないでください |
| CON54-CPP(L3) |
CERT.CONC.WAKE_IN_LOOP 擬似的にループを起動する可能性のあるラップ関数 |
| CON55-CPP(L3) |
CERT.CONC.UNSAFE_COND_VAR 条件変数の使用時に、スレッドセーフと活性を維持します |
| 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 配列インデックスとしての未検証の整数の使用 |
| CTR51-CPP(L2) |
ITER.CONTAINER.MODIFIED 無効な反復子の使用 |
| CTR52-CPP(L1) |
ITER.END.OUTPARAM.MIGHT 出力反復子としての 'end' の使用 ITER.END.OUTPARAM.MUST 出力反復子としての 'end' の使用 |
| CTR55-CPP(L2) |
ITER.ADVANCE.NONADJACENT 反復子間の距離は 1 より大きい値にする |
| DCL30-C(L2) |
LOCRET.ARG 関数がローカル変数のアドレスを返しています LOCRET.GLOB 関数がローカル変数のアドレスを返しています LOCRET.RET 関数がローカル変数のアドレスを返しています |
| DCL39-C(L3) |
PORTING.STORAGE.STRUCT 構造の要素のバイト位置が配置属性およびパッケージ属性に依存している可能性があります。 |
| DCL40-C(L3) |
MISRA.FUNC.PARAMS.IDENT 関数の宣言と定義で使用される識別子が一致していません |
| DCL50-CPP(L1) |
MISRA.FUNC.VARARG 関数が可変数の引数を持っています |
| DCL51-CPP(L3) |
MISRA.DEFINE.WRONGNAME 標準ライブラリからの名前がマクロ名に使用されています MISRA.DEFINE.WRONGNAME.UNDERSCORE 予約名がマクロ名に使用されています MISRA.STDLIB.WRONGNAME 標準ライブラリのマクロ、オブジェクトまたは関数の名前が再使用されています MISRA.STDLIB.WRONGNAME.UNDERSCORE 予約名が言語エンティティの名前に使用されています MISRA.UNDEF.WRONGNAME 標準ライブラリからの名前が定義されていません MISRA.UNDEF.WRONGNAME.UNDERSCORE 予約名が定義されていません |
| DCL52-CPP(L3) |
CERT.DCL.REF_TYPE.CONST_OR_VOLATILE 参照型を const または volatile で修飾しないでください |
| DCL53-CPP(L3) |
CERT.DCL.AMBIGUOUS_DECL 構文的に曖昧な宣言を作成しないでください |
| DCL54-CPP(L3) |
CERT.DCL.SAME_SCOPE_ALLOC_DEALLOC 同一のスコープ内のペアとしての割り当ておよび割り当て解除関数をオーバーロードします |
| DCL57-CPP(L2) |
MISRA.DTOR.THROW デストラクタにスローします |
| DCL58-CPP(L2) |
CERT.DCL.STD_NS_MODIFIED 標準名前空間を変更しないでください |
| DCL59-CPP(L3) |
MISRA.NAMESPACE.UNMD ヘッダーファイルに名前のない名前空間があります |
| ENV30-C(L3) |
CXX.STDLIB.ILLEGAL_WRITE 標準ライブラリ関数 localeconv、getenv、setlocale、または strerror が返すポインターは、必ずそれらが const-qualified 型を指すポインターを持つかのように使用する必要があります。 |
| ENV32-C(L1) |
CERT.EXIT.HANDLER_TERMINATE すべての exit ハンドラーは正常に戻る必要があります |
| ENV33-C(L1) |
SV.CODE_INJECTION.SHELL_EXEC シェル実行へのコマンドインジェクション |
| ENV34-C(L3) |
CXX.STDLIB.ILLEGAL_REUSE 標準ライブラリ関数 asctime または同様の関数によって返されるポインタは、同じ関数の後続の呼び出しに続いては使用しません |
| ERR30-C(L1) |
CXX.ERRNO.INCORRECTLY_CHECKED ライブラリ関数を呼び出した後に、errno の条件チェックは必要ない CXX.ERRNO.NOT_CHECKED ライブラリ関数を呼び出した後に、errno の条件チェックが欠落している CXX.ERRNO.NOT_SET ライブラリ関数を呼び出す前に、errno はゼロにリセットされていない |
| ERR32-C(L3) |
MISRA.INCL.SIGNAL.2012 標準ヘッダーファイル signal.h は使用しない MISRA.STDLIB.SIGNAL signal.h の信号処理装置の使用 |
| ERR33-C(L1) |
NPD.CHECK.MUST ポインタを明示的に NULL チェックした後に逆参照します NPD.FUNC.MUST NULL を返す可能性がある関数の戻り値が逆参照されます SV.RVT.RETVAL_NOTTESTED 戻り値の無視 |
| ERR34-C(L2) |
CERT.ERR.CONV.STR_TO_NUM 文字列を数値に変換する際にエラーを検出する MISRA.STDLIB.ATOI ライブラリ stdlib.h から 'atof'、'atoi' または 'atol' が使用されています SV.BANNED.RECOMMENDED.SCANF 禁止が推奨されているAPI: 安全でない scanf 型関数 |
| ERR50-CPP(L3) |
CERT.ERR.ABRUPT_TERM 突然プログラムを終了しないでください MISRA.TERMINATE terminate() 関数が明示的に呼び出されています |
| ERR51-CPP(L2) |
MISRA.CATCH.ALL try-catch ブロックに省略記号例外ハンドラーがありません |
| ERR52-CPP(L3) |
MISRA.STDLIB.LONGJMP setjmp マクロまたは longjmp 関数の使用 |
| ERR53-CPP(L3) |
MISRA.CTOR.TRY.NON_STATIC コンストラクタまたはデストラクタの関数 try-catch ブロックが非スタティックなメンバーを参照しています |
| ERR54-CPP(L1) |
MISRA.CATCH.NOALL 省略記号例外ハンドラーが try-catch ブロックの最後に置かれていません MISRA.CATCH.WRONGORD try-catch ブロックで基本例外クラスのハンドラーが派生例外クラスのハンドラーよりも先に置かれています |
| ERR57-CPP(L3) |
CL.MLK メモリリーク - デストラクタで発生 MLK.MIGHT メモリリークの可能性 MLK.MUST メモリリーク MLK.RET.MIGHT メモリリークの可能性 MLK.RET.MUST メモリリーク RH.LEAK リソースリーク |
| ERR59-CPP(L2) |
CERT.EXCEPTION.OVER.BOUNDARY 実行境界を越えてスローされた例外 |
| ERR61-CPP(L3) |
MISRA.CATCH.BY_VALUE クラス タイプの例外オブジェクトが値によってキャッチされています |
| ERR62-CPP(L3) |
CERT.ERR.CONV.STR_TO_NUM 文字列を数値に変換する際にエラーを検出する |
| EXP34-C(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 チェック前のポインタの逆参照は問題となる可能性があります |
| EXP39-C(L3) |
CXX.CAST.OBJ_PTR_TO_OBJ_PTR オブジェクト タイプを指すポインタと、異なるオブジェクト タイプを指す別のポインタとの間のキャスト |
| EXP42-C(L1) |
CERT.MEMCMP.PADDED_DATA パディングデータを比較しないでください |
| EXP45-C(L2) |
ASSIGCOND.CALL 割り当て条件 (呼び出し) ASSIGCOND.GEN 割り当て条件 MISRA.ASSIGN.COND 条件内で代入演算子が使用されています |
| EXP46-C(L2) |
MISRA.LOGIC.OPERATOR.NOT_BOOL 論理演算ではない演算子のオペランドが実質的にはブール値です |
| EXP47-C(L2) |
CERT.VA_ARG.TYPE 正しくない型の引数で va_arg を呼び出さない |
| EXP50-CPP(L2) |
CERT.EXPR.PARENS 式内の演算子の優先度は明示的にする必要があります。 MISRA.EXPR.PARENS.INSUFFICIENT 式の演算子優先規則に制限された依存性が必要です MISRA.INCR_DECR.OTHER 増分または減分の演算子がその他の演算子と混合して式で使用されています PORTING.VAR.EFFECTS ある使用法が副次的な影響を受ける式で変数が 2 回使用されています |
| EXP51-CPP(L3) |
CERT.EXPR.DELETE_ARR.BASE_PTR 不正な型のポインターを使用して配列を削除しないでください |
| EXP52-CPP(L3) |
MISRA.SIZEOF.SIDE_EFFECT sizeof のオペランドに副作用があります |
| 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 未初期化の変数 |
| 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 未初期化の変数 |
| EXP55-CPP(L3) |
MISRA.CAST.CONST キャスト演算により const または volatile がポインターまたは参照から除外されます。 |
| EXP56-CPP(L3) |
MISRA.CAST.PTR.UNRELATED ポインタ型のオブジェクトを関連のない型にキャストしています MISRA.CAST.PTR_TO_INT ポインタと整数型間のキャスト PORTING.CAST.PTR 両方ともポインタでない型といずれかがポインタでない型間のキャスト PORTING.CAST.PTR.FLTPNT 非浮動小数点型のポインタへの浮動小数点式のポインタのキャスト PORTING.CAST.PTR.SIZE サイズに互換性がない可能性がある型への式のキャストの可能性 |
| EXP57-CPP(L3) |
CERT.EXPR.DELETE_PTR.INCOMPLETE_TYPE 不完全な型へのポインターを削除しないでください |
| EXP58-CPP(L3) |
CERT.VA_START.TYPE 正しい型のオブジェクトを va_start に渡す |
| EXP60-CPP(L2) |
CERT.EXPR.PASS_NON_STD_LAYOUT 実行境界を超えて標準ではないレイアウトタイプオブジェクトを渡さないでください |
| EXP61-CPP(L2) |
LOCRET.RET 関数がローカル変数のアドレスを返しています |
| EXP62-CPP(L1) |
CERT.MEMCMP.PADDED_DATA パディングデータを比較しないでください CWARN.MEM.NONPOD 非 POD オブジェクトに適用されるメモリ操作ルーチン |
| FIO30-C(L1) |
SV.FMTSTR.GENERIC 書式文字列の脆弱性 SV.TAINTED.FMTSTR 書式文字列での未検証データの使用 |
| FIO34-C(L1) |
CWARN.CMPCHR.EOF 'char' 式と EOF 定数との比較 |
| FIO37-C(L1) |
CERT.FIO.FGETS fgets() または fgetws() が正常に実行された場合に空でない文字列が返されることを想定していない |
| FIO38-C(L3) |
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 オブジェクト(関数の戻り値)へのポインターは逆参照してはなりません |
| FIO39-C(L2) |
CERT.FIO.NO_FLUSH フラッシュまたは位置調整の関数呼び出しの欠如 |
| FIO42-C(L3) |
RH.LEAK リソースリーク |
| FIO44-C(L3) |
CERT.FSETPOS.VALUE fsetpos() に、fgetpos() から返される値のみを使用します |
| FIO45-C(L2) |
SV.TOCTOU.FILE_ACCESS ファイル アクセス時の作成日時/使用日時の競合状態 |
| FIO46-C(L3) |
SV.INCORRECT_RESOURCE_HANDLING.URH 安全でないリソース処理 |
| 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 関数呼び出しの書式指定子が不明です |
| FIO51-CPP(L3) |
RH.LEAK リソースリーク |
| FLP30-C(L2) |
MISRA.FOR.COUNTER.FLT for ループのカウンターが浮動小数点タイプです |
| FLP32-C(L1) |
CERT.MATH.DOMAIN.CHECK 標準ライブラリ数学関数に渡される 1 つ以上の引数が有効なドメイン外にあります CERT.MATH.RANGE.CHECK 範囲エラーを発生させる可能性のあるライブラリ数学関数の呼び出し後にエラー条件をチェックする必要です |
| FLP34-C(L3) |
MISRA.CAST.FLOAT.WIDER より広い浮動小数点タイプへの浮動小数点式のキャスト MISRA.CAST.FLOAT_INT 整数型への浮動小数点式のキャスト MISRA.CAST.INT_FLOAT 浮動小数点タイプへの複合式のキャスト MISRA.CONV.FLOAT 暗黙的な浮動小数点変換です |
| FLP36-C(L3) |
PORTING.CAST.FLTPNT 非浮動小数点タイプへの浮動小数点式のキャスト |
| FLP37-C(L3) |
CERT.MEMCMP.FLOAT_MEMBER メンバーが浮動小数点の場合、比較しないでください |
| INT30-C(L2) |
CWARN.NOEFFECT.OUTOFRANGE 範囲外の値 NUM.OVERFLOW オーバーフローの可能性 NUM.OVERFLOW.DF 起こり得る数値のオーバーフローまたはラップアラウンド |
| INT31-C(L1) |
PORTING.CAST.SIZE サイズが異なる可能性がある型に式がキャストされています |
| INT32-C(L1) |
CWARN.NOEFFECT.OUTOFRANGE 範囲外の値 NUM.OVERFLOW オーバーフローの可能性 NUM.OVERFLOW.DF 起こり得る数値のオーバーフローまたはラップアラウンド |
| INT33-C(L2) |
DBZ.CONST ゼロ定数による除算が発生しました DBZ.CONST.CALL 値 '0' が除数としてこの値を使用できる関数に渡されます DBZ.GENERAL ゼロ除算が発生した可能性があります DBZ.GENERAL.FLOAT 浮動小数点数のゼロ除算が発生した可能性があります DBZ.ITERATOR ループ反復子でゼロ除算が発生した可能性があります DBZ.ITERATOR.CALL 関数呼出しでゼロ除算が発生した可能性があります DBZ.ITERATOR.FLOAT ループ反復子でゼロ除算が発生した可能性があります |
| INT34-C(L3) |
MISRA.SHIFT.RANGE.2012 シフト演算子の右側のオペランドは範囲外です - 左側のオペランドの基本タイプのサイズ以上か、または負 |
| 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 解放済みメモリの使用 |
| MEM31-C(L3) |
CL.FFM.ASSIGN 解放済みメモリの使用 (二重解放) - operator= が無いため CL.FFM.COPY 解放済みメモリの使用 (二重解放) - コピーコンストラクタが無いため CL.SHALLOW.ASSIGN 解放済みメモリの使用 (二重解放) - 演算子 = での浅いコピー CL.SHALLOW.COPY 解放済みメモリの使用 (二重解放) - コピーコンストラクタでの浅いコピー FMM.MIGHT メモリの解放の不一致の可能性 FMM.MUST メモリの解放の不一致 |
| MEM34-C(L2) |
FNH.MIGHT 非ヒープメモリの解放の可能性 FNH.MUST 非ヒープメモリの解放 |
| MEM35-C(L2) |
INCORRECT.ALLOC_SIZE 不適切な割り当てサイズ SV.TAINTED.ALLOC_SIZE メモリ割り当て時の未検証の整数の使用 |
| MEM36-C(L3) |
AUTOSAR.STDLIB.MEMORY 関数 malloc、calloc、realloc、および free は使用してはなりません |
| 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 解放済みメモリの使用 |
| 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 未初期化のヒープの使用 |
| 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 チェック前のポインタの逆参照は問題となる可能性があります |
| MEM53-CPP(L2) |
CERT.MEM.OBJ_LIFETIME_CTOR 初期化されていない heap メンバー関数の呼び出し CERT.MEM.OBJ_LIFETIME_DTOR 手動で割り当てられたメモリを持つオブジェクトは明示的に破棄されない |
| MEM54-CPP(L2) |
CERT.MEM.PLACEMENTNEW.MISALIGNED アライメントが適切なストレージを placement new に提供します CERT.MEM.PLACEMENTNEW.TOOSMALL 十分なストレージを placement new に提供します。 |
| MEM55-CPP(L2) |
CERT.MEM.OVERRIDE.DELETE 'delete' の動的メモリ管理要件を変更してください CERT.MEM.OVERRIDE.NEW 'new' の動的メモリ管理要件を変更してください |
| MEM56-CPP(L2) |
CERT.MEM.SMART_PTR.OWNED 複数のスマートポインターでのポインター所有権の共有 CERT.MEM.SMART_PTR.OWNED.THIS 基礎となるリソースが無関係なスマートポインターによって既に所有されている可能性がある |
| MSC30-C(L3) |
CERT.MSC.STD_RAND_CALL 疑似乱数の生成に std::rand() を使用しないでください |
| MSC32-C(L1) |
CERT.MSC.SEED_RANDOM 疑似乱数ジェネレータを適切にシードする |
| MSC33-C(L2) |
CERT.MSC.ASCTIME asctime() 関数に無効なデータを渡さないでください |
| MSC37-C(L2) |
FUNCRET.GEN 非 void 関数に戻り値がありません FUNCRET.IMPLICIT 暗黙的に int を返す非 void 関数に戻り値がありません |
| MSC39-C(L3) |
VA.LIST.INDETERMINATE 不定値を持つ va_list に対する va_arg() の呼び出し |
| MSC40-C(L3) |
MISRA.FUNC.STATIC.REDECL 関数またはオブジェクトの再宣言に 'static' 修飾子がありません |
| MSC41-C(L2) |
CXX.SV.PWD.PLAIN プレーンな文字列を使用してパスワードを設定しようとしています CXX.SV.PWD.PLAIN.LENGTH 15 文字未満の長さでパスワードを設定しようとしています CXX.SV.PWD.PLAIN.LENGTH.ZERO ゼロ文字の長さでパスワードを設定しようとしています HCC ハードコードされた資格情報の使用 HCC.PWD ハードコードされたパスワードの使用 HCC.USER ハードコードされたユーザー名の使用 |
| MSC50-CPP(L3) |
CERT.MSC.STD_RAND_CALL 疑似乱数の生成に std::rand() を使用しないでください |
| MSC51-CPP(L1) |
AUTOSAR.STDLIB.RANDOM.NBR_GEN_DEFAULT_INIT 乱数エンジンをデフォルトで初期化してはなりません |
| MSC52-CPP(L2) |
FUNCRET.GEN 非 void 関数に戻り値がありません FUNCRET.IMPLICIT 暗黙的に int を返す非 void 関数に戻り値がありません |
| MSC53-CPP(L3) |
CERT.MSC.NORETURN_FUNC_RETURNS [[noreturn]] と宣言された関数から返さないでください |
| MSC54-CPP(L2) |
CERT.MSC.SIG_HANDLER.POF シグナルハンドラーは古いプレーン関数である必要があります |
| OOP50-CPP(L3) |
CERT.OOP.CTOR.VIRTUAL_FUNC コンストラクタまたは、デストラクタから仮想関数を呼出してはならない |
| OOP52-CPP(L3) |
CL.MLK.VIRTUAL メモリリーク - デストラクタで発生している可能性 CWARN.DTOR.NONVIRT.DELETE 仮想メソッドを持ち、仮想デストラクタを持たないクラスのオブジェクトの式を削除しています |
| OOP53-CPP(L2) |
CERT.OOP.CTOR.INIT_ORDER コンストラクターメンバー初期化子を正規の順序で作成します |
| OOP54-CPP(L3) |
CL.SELF-ASSIGN 解放済みメモリの使用 (二重解放) - operator= |
| OOP55-CPP(L2) |
CERT.OOP.PTR_MEMBER.NO_MEMBER メンバー演算子へのポインターを使用して、存在しないメンバーにアクセスしないでください |
| OOP57-CPP(L1) |
CERT.OOP.CSTD_FUNC_USE C 標準ライブラリ関数よりも特殊メンバー関数とオーバーロードされた演算子を優先します |
| OOP58-CPP(L2) |
CERT.OOP.COPY_MUTATES コピー操作でソースオブジェクトを変更してはいけません |
| POS30-C(L1) |
ABV.GENERAL バッファオーバーフロー - 配列インデックスが範囲外 ABV.GENERAL.MULTIDIMENSION バッファオーバーフロー - 配列インデックスが範囲外 |
| POS34-C(L2) |
CERT.PUTENV.AUTO_VARIABLE 自動変数へのポインターを引数として putenv() を呼び出さないでください |
| POS35-C(L2) |
CERT.STR.ASSIGN.CONST_TO_NONCONST const char ポインターを非 const char ポインターに割り当てないでください SV.TOCTOU.FILE_ACCESS ファイル アクセス時の作成日時/使用日時の競合状態 |
| POS36-C(L1) |
SV.USAGERULES.PERMISSIONS 特権の昇給の使用 |
| POS37-C(L1) |
SV.USAGERULES.PERMISSIONS 特権の昇給の使用 |
| POS39-C(L1) |
BYTEORDER.HTON.SEND ホストバイトオーダーからネットワークバイトオーダーの変換が欠落しています BYTEORDER.HTON.WRITE ホストバイトオーダーからネットワークバイトオーダーの変換が欠落しています BYTEORDER.NTOH.READ ネットワークバイトオーダーからホストバイトオーダーの変換が欠落しています BYTEORDER.NTOH.RECV ネットワークバイトオーダーからホストバイトオーダーの変換が欠落しています |
| POS44-C(L3) |
MISRA.INCL.SIGNAL.2012 標準ヘッダーファイル signal.h は使用しない |
| POS47-C(L3) |
CERT.POS.THREAD.ASYNC_CANCEL 非同期キャンセルが可能なスレッドを使用してはいけません |
| POS51-C(L3) |
CONC.DL デッドロック CONC.NO_UNLOCK 変数のロック解除の欠落 |
| POS52-C(L3) |
CONC.SLEEP クリティカルセクションで関数がブロックされる可能性があります |
| POS54-C(L1) |
SV.RVT.RETVAL_NOTTESTED 戻り値の無視 |
| PRE30-C(L3) |
MISRA.DEFINE.SHARP マクロ定義に # 演算子または ## 演算子が使用されています |
| PRE31-C(L2) |
PORTING.VAR.EFFECTS ある使用法が副次的な影響を受ける式で変数が 2 回使用されています |
| PRE32-C(L3) |
MISRA.EXPANSION.DIRECTIVE マクロの引数内にディレクティブのようなトークンがあります |
| SIG31-C(L1) |
CERT.SIG.SIG_HANDLER.SHARED_OBJ シグナルハンドラー内で共有オブジェクトにアクセスしないでください CERT.SIG.SIG_HANDLER.SHARED_OBJ.HEAP シグナルハンドラー内で共有オブジェクトにアクセスしないでください CERT.SIG.SIG_HANDLER.SHARED_OBJ.MIGHT シグナルハンドラー内で共有オブジェクトにアクセスしないでください |
| SIG34-C(L3) |
MISRA.STDLIB.SIGNAL signal.h の信号処理装置の使用 |
| SIG35-C(L3) |
CERT.STDLIB.SIGNAL 計算例外シグナルハンドラーから戻らない |
| STR30-C(L2) |
CERT.STR.ARG.CONST_TO_NONCONST const char ポインターを非 const char ポインター引数に渡さないでください CERT.STR.ASSIGN.CONST_TO_NONCONST const char ポインターを非 const char ポインターに割り当てないでください |
| STR31-C(L2) |
SV.FMT_STR.BAD_SCAN_FORMAT 入力書式指定子エラー SV.UNBOUND_STRING_INPUT.FUNC バインドされていない文字列入力の使用法 |
| STR32-C(L1) |
NNTS.MIGHT バッファオーバーフロー - 非 NULL 終了文字列 NNTS.MUST バッファオーバーフロー - 非 NULL 終了文字列 SV.STRBO.BOUND_COPY.UNTERM 次の文字列演算でバッファオーバーフローの可能性があります |
| STR34-C(L2) |
CXX.CAST.SIGNED_CHAR_TO_INTEGER より大きな整数サイズに変換する前に char を unsigned char にキャストします |
| STR37-C(L3) |
AUTOSAR.STDLIB.CCTYPE.UCHAR <cctype> で定義される文字処理関数の引数は、unsigned char として表現できなければなりません |
| STR38-C(L1) |
CXX.DIFF.WIDTH.STR_AND_FUNC 関数の呼び出し時にナロー文字列とワイド文字列の間で暗黙のキャストが行われます |
| STR50-CPP(L2) |
NNTS.MIGHT バッファオーバーフロー - 非 NULL 終了文字列 NNTS.MUST バッファオーバーフロー - 非 NULL 終了文字列 NNTS.TAINTED 未検証のユーザー入力が原因のバッファオーバーフロー - 非 NULL 終了文字列 SV.UNBOUND_STRING_INPUT.CIN バインドされていない文字列入力についての cin の使用法 |
| STR51-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 チェック前のポインタの逆参照は問題となる可能性があります |
| and check errno only after the function returns a value indicating failure |
CXX.ERRNO.INCORRECTLY_CHECKED ライブラリ関数を呼び出した後に、errno の条件チェックは必要ない CXX.ERRNO.NOT_CHECKED ライブラリ関数を呼び出した後に、errno の条件チェックが欠落している CXX.ERRNO.NOT_SET ライブラリ関数を呼び出す前に、errno はゼロにリセットされていない |
| and iterators to reference elements of a container |
ITER.CONTAINER.MODIFIED 無効な反復子の使用 |
| pointers |
ITER.CONTAINER.MODIFIED 無効な反復子の使用 |