Klocwork および Klocwork community チェッカーにマッピングされた CERT C 規則および推奨
以下の表では、CERT C 規則および CERT C 推奨を Klocwork および Klocwork community C チェッカーの両方にマッピングしています。
CERT C 規則
ガイドライン | チェッカー名および説明 |
---|---|
ARR30-C |
ABV.ANY_SIZE_ARRAY バッファオーバーフロー - 配列インデックスが範囲外 ABV.GENERAL バッファオーバーフロー - 配列インデックスが範囲外 ABV.GENERAL.MULTIDIMENSION バッファオーバーフロー - 配列インデックスが範囲外 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 ループ条件での未検証の整数の使用 |
ARR30-C(L2) |
ABV.ANY_SIZE_ARRAY バッファオーバーフロー - 配列インデックスが範囲外 ABV.GENERAL バッファオーバーフロー - 配列インデックスが範囲外 ABV.GENERAL.MULTIDIMENSION バッファオーバーフロー - 配列インデックスが範囲外 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 ループ条件での未検証の整数の使用 |
ARR32-C |
MISRA.ARRAY.VAR_LENGTH.2012 変数の長さの配列種類は使用しないでください |
ARR32-C(L2) |
MISRA.ARRAY.VAR_LENGTH.2012 変数の長さの配列種類は使用しないでください |
ARR36-C |
MISRA.PTR.ARITH 代数式または配列インデックス式でポインタが使用されています |
ARR36-C(L2) |
MISRA.PTR.ARITH 代数式または配列インデックス式でポインタが使用されています |
ARR37-C |
CERT.ARR.PTR.ARITH 演算式にポインターが使用されています |
ARR37-C(L2) |
CERT.ARR.PTR.ARITH 演算式にポインターが使用されています |
ARR38-C |
ABV.GENERAL バッファオーバーフロー - 配列インデックスが範囲外 ABV.GENERAL.MULTIDIMENSION バッファオーバーフロー - 配列インデックスが範囲外 |
ARR38-C(L1) |
ABV.GENERAL バッファオーバーフロー - 配列インデックスが範囲外 ABV.GENERAL.MULTIDIMENSION バッファオーバーフロー - 配列インデックスが範囲外 |
ARR39-C |
CERT.ARR.PTR.ARITH 演算式にポインターが使用されています |
ARR39-C(L2) |
CERT.ARR.PTR.ARITH 演算式にポインターが使用されています |
CON33-C |
CERT.CONC.LIB_FUNC_USE ライブラリ関数の使用時には競合状態を避けてください |
CON33-C(L3) |
CERT.CONC.LIB_FUNC_USE ライブラリ関数の使用時には競合状態を避けてください |
CON35-C |
CONC.DL デッドロック CONC.NO_UNLOCK 変数のロック解除の欠落 |
CON35-C(L3) |
CONC.DL デッドロック CONC.NO_UNLOCK 変数のロック解除の欠落 |
CON36-C |
CERT.CONC.WAKE_IN_LOOP_C 擬似的にループを起動する可能性のあるラップ関数 |
CON36-C(L3) |
CERT.CONC.WAKE_IN_LOOP_C 擬似的にループを起動する可能性のあるラップ関数 |
CON37-C |
MISRA.STDLIB.SIGNAL signal.h の信号処理装置の使用 |
CON37-C(L2) |
MISRA.STDLIB.SIGNAL signal.h の信号処理装置の使用 |
CON38-C |
CERT.CONC.UNSAFE_COND_VAR_C 条件変数の使用時に、スレッドセーフと活性を維持します |
CON38-C(L3) |
CERT.CONC.UNSAFE_COND_VAR_C 条件変数の使用時に、スレッドセーフと活性を維持します |
CON40-C |
CERT.CONC.ATOMIC_TWICE_EXPR 1 つの式でアトミック変数を 2 回参照しないでください |
CON40-C(L2) |
CERT.CONC.ATOMIC_TWICE_EXPR 1 つの式でアトミック変数を 2 回参照しないでください |
CON41-C |
CERT.CONC.ATOMIC_COMP_FAIL_IN_LOOP ループで疑似的に失敗する可能性のある関数はラップしてください |
CON41-C(L3) |
CERT.CONC.ATOMIC_COMP_FAIL_IN_LOOP ループで疑似的に失敗する可能性のある関数はラップしてください |
DCL30-C |
LOCRET.ARG 関数がローカル変数のアドレスを返しています LOCRET.GLOB 関数がローカル変数のアドレスを返しています LOCRET.RET 関数がローカル変数のアドレスを返しています |
DCL30-C(L2) |
LOCRET.ARG 関数がローカル変数のアドレスを返しています LOCRET.GLOB 関数がローカル変数のアドレスを返しています LOCRET.RET 関数がローカル変数のアドレスを返しています |
DCL31-C |
CWARN.IMPLICITINT 古い用法の 'implicit int' MISRA.DECL.NO_TYPE 宣言から型が抜けています MISRA.FUNC.NOPROT.CALL 関数が呼び出されていますが、プロトタイプがありません RETVOID.IMPLICIT 暗黙的な int 関数によって void 値が返されます |
DCL31-C(L3) |
CWARN.IMPLICITINT 古い用法の 'implicit int' MISRA.DECL.NO_TYPE 宣言から型が抜けています MISRA.FUNC.NOPROT.CALL 関数が呼び出されていますが、プロトタイプがありません RETVOID.IMPLICIT 暗黙的な int 関数によって void 値が返されます |
DCL36-C |
MISRA.FUNC.STATIC.REDECL 関数またはオブジェクトの再宣言に 'static' 修飾子がありません |
DCL36-C(L2) |
MISRA.FUNC.STATIC.REDECL 関数またはオブジェクトの再宣言に 'static' 修飾子がありません |
DCL37-C |
MISRA.DEFINE.WRONGNAME.UNDERSCORE 予約名がマクロ名に使用されています MISRA.STDLIB.WRONGNAME 標準ライブラリのマクロ、オブジェクトまたは関数の名前が再使用されています MISRA.STDLIB.WRONGNAME.UNDERSCORE 予約名が言語エンティティの名前に使用されています |
DCL37-C(L3) |
MISRA.DEFINE.WRONGNAME.UNDERSCORE 予約名がマクロ名に使用されています MISRA.STDLIB.WRONGNAME 標準ライブラリのマクロ、オブジェクトまたは関数の名前が再使用されています MISRA.STDLIB.WRONGNAME.UNDERSCORE 予約名が言語エンティティの名前に使用されています |
DCL38-C |
CERT.STRUCT.FLEXIBLE_ARRAY_MEMBER フレキシブル配列メンバーの宣言時には正しい構文を使用する |
DCL38-C(L3) |
CERT.STRUCT.FLEXIBLE_ARRAY_MEMBER フレキシブル配列メンバーの宣言時には正しい構文を使用する |
DCL39-C |
PORTING.STORAGE.STRUCT 構造の要素のバイト位置が配置属性およびパッケージ属性に依存している可能性があります。 |
DCL39-C(L3) |
PORTING.STORAGE.STRUCT 構造の要素のバイト位置が配置属性およびパッケージ属性に依存している可能性があります。 |
DCL40-C |
MISRA.FUNC.NOPROT.DEF.2012 関数は定義されていますが、プロトタイプがありません MISRA.FUNC.PARAMS.IDENT 関数の宣言と定義で使用される識別子が一致していません |
DCL40-C(L3) |
MISRA.FUNC.NOPROT.DEF.2012 関数は定義されていますが、プロトタイプがありません MISRA.FUNC.PARAMS.IDENT 関数の宣言と定義で使用される識別子が一致していません |
DCL41-C |
CERT.DCL.SWITCH.VAR_BEFORE_CASE switch ステートメント内では最初の case ラベルより前で変数を宣言しないでください |
DCL41-C(L3) |
CERT.DCL.SWITCH.VAR_BEFORE_CASE switch ステートメント内では最初の case ラベルより前で変数を宣言しないでください |
ENV30-C |
MISRA.STDLIB.CTYPE.RANGE.2012_AMD1 ctype.h で関数に渡される値はすべて unsigned char として表現できるか、または値 EOF でなければなりません MISRA.STDLIB.ILLEGAL_REUSE.2012_AMD1 標準ライブラリ関数 asctime または同様の関数によって返されるポインタは、同じ関数の後続の呼び出しに続いては使用しません MISRA.STDLIB.ILLEGAL_WRITE.2012_AMD1 標準ライブラリ関数 localeconv、getenv、setlocale、または strerror が返すポインターは、必ずそれらが const-qualified 型を指すポインターを持つかのように使用する必要があります。 |
ENV30-C(L3) |
MISRA.STDLIB.CTYPE.RANGE.2012_AMD1 ctype.h で関数に渡される値はすべて unsigned char として表現できるか、または値 EOF でなければなりません MISRA.STDLIB.ILLEGAL_REUSE.2012_AMD1 標準ライブラリ関数 asctime または同様の関数によって返されるポインタは、同じ関数の後続の呼び出しに続いては使用しません MISRA.STDLIB.ILLEGAL_WRITE.2012_AMD1 標準ライブラリ関数 localeconv、getenv、setlocale、または strerror が返すポインターは、必ずそれらが const-qualified 型を指すポインターを持つかのように使用する必要があります。 |
ENV32-C |
CERT.EXIT.HANDLER_TERMINATE すべての exit ハンドラーは正常に戻る必要があります |
ENV32-C(L1) |
CERT.EXIT.HANDLER_TERMINATE すべての exit ハンドラーは正常に戻る必要があります |
ENV33-C |
SV.CODE_INJECTION.SHELL_EXEC シェル実行へのコマンドインジェクション |
ENV33-C(L1) |
SV.CODE_INJECTION.SHELL_EXEC シェル実行へのコマンドインジェクション |
ENV34-C |
MISRA.STDLIB.ILLEGAL_REUSE.2012_AMD1 標準ライブラリ関数 asctime または同様の関数によって返されるポインタは、同じ関数の後続の呼び出しに続いては使用しません |
ENV34-C(L3) |
MISRA.STDLIB.ILLEGAL_REUSE.2012_AMD1 標準ライブラリ関数 asctime または同様の関数によって返されるポインタは、同じ関数の後続の呼び出しに続いては使用しません |
ERR30-C |
CXX.ERRNO.INCORRECTLY_CHECKED ライブラリ関数を呼び出した後に、errno の条件チェックは必要ない CXX.ERRNO.NOT_CHECKED ライブラリ関数を呼び出した後に、errno の条件チェックが欠落している CXX.ERRNO.NOT_SET ライブラリ関数を呼び出す前に、errno はゼロにリセットされていない |
ERR30-C(L2) |
CXX.ERRNO.INCORRECTLY_CHECKED ライブラリ関数を呼び出した後に、errno の条件チェックは必要ない CXX.ERRNO.NOT_CHECKED ライブラリ関数を呼び出した後に、errno の条件チェックが欠落している CXX.ERRNO.NOT_SET ライブラリ関数を呼び出す前に、errno はゼロにリセットされていない |
ERR32-C |
MISRA.INCL.SIGNAL.2012 標準ヘッダーファイル signal.h は使用しない MISRA.STDLIB.SIGNAL signal.h の信号処理装置の使用 |
ERR32-C(L3) |
MISRA.INCL.SIGNAL.2012 標準ヘッダーファイル signal.h は使用しない MISRA.STDLIB.SIGNAL signal.h の信号処理装置の使用 |
ERR33-C |
NPD.CHECK.MUST ポインタを明示的に NULL チェックした後に逆参照します NPD.FUNC.MUST NULL を返す可能性がある関数の戻り値が逆参照されます SV.RVT.RETVAL_NOTTESTED 戻り値の無視 |
ERR33-C(L1) |
NPD.CHECK.MUST ポインタを明示的に NULL チェックした後に逆参照します NPD.FUNC.MUST NULL を返す可能性がある関数の戻り値が逆参照されます SV.RVT.RETVAL_NOTTESTED 戻り値の無視 |
ERR34-C |
CERT.ERR.CONV.STR_TO_NUM 文字列を数値に変換する際にエラーを検出する MISRA.STDLIB.ATOI ライブラリ stdlib.h から 'atof'、'atoi' または 'atol' が使用されています SV.BANNED.RECOMMENDED.SCANF 禁止が推奨されているAPI: 安全でない scanf 型関数 |
ERR34-C(L3) |
CERT.ERR.CONV.STR_TO_NUM 文字列を数値に変換する際にエラーを検出する MISRA.STDLIB.ATOI ライブラリ stdlib.h から 'atof'、'atoi' または 'atol' が使用されています SV.BANNED.RECOMMENDED.SCANF 禁止が推奨されているAPI: 安全でない scanf 型関数 |
EXP30-C |
MISRA.INCR_DECR.OTHER 増分または減分の演算子がその他の演算子と混合して式で使用されています PORTING.VAR.EFFECTS ある使用法が副次的な影響を受ける式で変数が 2 回使用されています |
EXP30-C(L2) |
MISRA.INCR_DECR.OTHER 増分または減分の演算子がその他の演算子と混合して式で使用されています PORTING.VAR.EFFECTS ある使用法が副次的な影響を受ける式で変数が 2 回使用されています |
EXP32-C |
CERT.EXPR.VOLATILE.ADDR 非 volatile ポインタを通して volatile オブジェクトにアクセスしてはいけません CERT.EXPR.VOLATILE.ADDR.PARAM 非 volatile ポインタを介して volatile オブジェクトを関数に渡さないでください CERT.EXPR.VOLATILE.PTRPTR 非 volatile ポインタへの参照を volatile ポインタのポインタに割り当てないでください |
EXP32-C(L2) |
CERT.EXPR.VOLATILE.ADDR 非 volatile ポインタを通して volatile オブジェクトにアクセスしてはいけません CERT.EXPR.VOLATILE.ADDR.PARAM 非 volatile ポインタを介して volatile オブジェクトを関数に渡さないでください CERT.EXPR.VOLATILE.PTRPTR 非 volatile ポインタへの参照を volatile ポインタのポインタに割り当てないでください |
EXP33-C |
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 未初期化の変数 |
EXP33-C(L1) |
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 未初期化の変数 |
EXP34-C |
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 チェック前のポインタの逆参照は問題となる可能性があります |
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 チェック前のポインタの逆参照は問題となる可能性があります |
EXP36-C |
MISRA.CAST.OBJ_PTR_TO_OBJ_PTR.2012 オブジェクト タイプを指すポインタと、異なるオブジェクト タイプを指す別のポインタとの間のキャスト |
EXP36-C(L3) |
MISRA.CAST.OBJ_PTR_TO_OBJ_PTR.2012 オブジェクト タイプを指すポインタと、異なるオブジェクト タイプを指す別のポインタとの間のキャスト |
EXP37-C |
MISRA.FUNC.UNMATCHED.PARAMS 関数に渡される仮引数と実際のパラメーターの数が一致しません |
EXP37-C(L3) |
MISRA.FUNC.UNMATCHED.PARAMS 関数に渡される仮引数と実際のパラメーターの数が一致しません |
EXP39-C |
MISRA.CAST.FUNC_PTR.2012 関数を指すポインタと、別の非互換タイプとの間で実行された変換 MISRA.CAST.INCOMPLETE_PTR_TO_ANY.2012 不完全なタイプ を指すポインタと、別のタイプとの間で実行された変換 MISRA.CAST.OBJ_PTR_TO_NON_INT.2012 オブジェクトを指すポインタと、非整数算術演算タイプとの間のキャスト MISRA.CAST.OBJ_PTR_TO_OBJ_PTR.2012 オブジェクト タイプを指すポインタと、異なるオブジェクト タイプを指す別のポインタとの間のキャスト |
EXP39-C(L3) |
MISRA.CAST.FUNC_PTR.2012 関数を指すポインタと、別の非互換タイプとの間で実行された変換 MISRA.CAST.INCOMPLETE_PTR_TO_ANY.2012 不完全なタイプ を指すポインタと、別のタイプとの間で実行された変換 MISRA.CAST.OBJ_PTR_TO_NON_INT.2012 オブジェクトを指すポインタと、非整数算術演算タイプとの間のキャスト MISRA.CAST.OBJ_PTR_TO_OBJ_PTR.2012 オブジェクト タイプを指すポインタと、異なるオブジェクト タイプを指す別のポインタとの間のキャスト |
EXP42-C |
MISRA.STDLIB.MEMCMP.PTR_ARG_TYPES 標準ライブラリ関数 memcmp へのポインター引数は、ポインター型、本質的に符号付きの型、本質的に符号なしの型、本質的にブール型、または本質的に列挙型のどれかです |
EXP42-C(L2) |
MISRA.STDLIB.MEMCMP.PTR_ARG_TYPES 標準ライブラリ関数 memcmp へのポインター引数は、ポインター型、本質的に符号付きの型、本質的に符号なしの型、本質的にブール型、または本質的に列挙型のどれかです |
EXP43-C |
MISRA.TYPE.RESTRICT.QUAL.2012 restrict 型修飾子は使用しない |
EXP43-C(L3) |
MISRA.TYPE.RESTRICT.QUAL.2012 restrict 型修飾子は使用しない |
EXP44-C |
MISRA.SIZEOF.SIDE_EFFECT sizeof のオペランドに副作用があります |
EXP44-C(L3) |
MISRA.SIZEOF.SIDE_EFFECT sizeof のオペランドに副作用があります |
EXP45-C |
ASSIGCOND.CALL 割り当て条件 (呼び出し) ASSIGCOND.GEN 割り当て条件 MISRA.ASSIGN.COND 条件内で代入演算子が使用されています |
EXP45-C(L2) |
ASSIGCOND.CALL 割り当て条件 (呼び出し) ASSIGCOND.GEN 割り当て条件 MISRA.ASSIGN.COND 条件内で代入演算子が使用されています |
EXP46-C |
MISRA.LOGIC.OPERATOR.NOT_BOOL 論理演算ではない演算子のオペランドが実質的にはブール値です |
EXP46-C(L2) |
MISRA.LOGIC.OPERATOR.NOT_BOOL 論理演算ではない演算子のオペランドが実質的にはブール値です |
EXP47-C |
CERT.VA_ARG.TYPE 正しくない型の引数で va_arg を呼び出さない |
EXP47-C(L2) |
CERT.VA_ARG.TYPE 正しくない型の引数で va_arg を呼び出さない |
FIO30-C |
SV.FMTSTR.GENERIC 書式文字列の脆弱性 SV.TAINTED.FMTSTR 書式文字列での未検証データの使用 |
FIO30-C(L1) |
SV.FMTSTR.GENERIC 書式文字列の脆弱性 SV.TAINTED.FMTSTR 書式文字列での未検証データの使用 |
FIO34-C |
CWARN.CMPCHR.EOF 'char' 式と EOF 定数との比較 |
FIO34-C(L1) |
CWARN.CMPCHR.EOF 'char' 式と EOF 定数との比較 |
FIO38-C |
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 オブジェクト(関数の戻り値)へのポインターは逆参照してはなりません |
FIO38-C(L3) |
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 |
CERT.FIO.NO_FLUSH フラッシュまたは位置調整の関数呼び出しの欠如 |
FIO39-C(L2) |
CERT.FIO.NO_FLUSH フラッシュまたは位置調整の関数呼び出しの欠如 |
FIO42-C |
RH.LEAK リソースリーク |
FIO42-C(L3) |
RH.LEAK リソースリーク |
FIO44-C |
CERT.FSETPOS.VALUE fsetpos() に、fgetpos() から返される値のみを使用します |
FIO44-C(L3) |
CERT.FSETPOS.VALUE fsetpos() に、fgetpos() から返される値のみを使用します |
FIO45-C |
SV.TOCTOU.FILE_ACCESS ファイル アクセス時の作成日時/使用日時の競合状態 |
FIO45-C(L2) |
SV.TOCTOU.FILE_ACCESS ファイル アクセス時の作成日時/使用日時の競合状態 |
FIO46-C |
SV.INCORRECT_RESOURCE_HANDLING.URH 安全でないリソース処理 |
FIO46-C(L3) |
SV.INCORRECT_RESOURCE_HANDLING.URH 安全でないリソース処理 |
FIO47-C |
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 関数呼び出しの書式指定子が不明です |
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 関数呼び出しの書式指定子が不明です |
FLP30-C |
MISRA.FOR.COUNTER.FLT for ループのカウンターが浮動小数点タイプです |
FLP30-C(L2) |
MISRA.FOR.COUNTER.FLT for ループのカウンターが浮動小数点タイプです |
FLP34-C |
MISRA.CAST.FLOAT.WIDER より広い浮動小数点タイプへの浮動小数点式のキャスト MISRA.CAST.FLOAT_INT 整数型への浮動小数点式のキャスト MISRA.CAST.INT_FLOAT 浮動小数点タイプへの複合式のキャスト MISRA.CONV.FLOAT 暗黙的な浮動小数点変換です |
FLP34-C(L3) |
MISRA.CAST.FLOAT.WIDER より広い浮動小数点タイプへの浮動小数点式のキャスト MISRA.CAST.FLOAT_INT 整数型への浮動小数点式のキャスト MISRA.CAST.INT_FLOAT 浮動小数点タイプへの複合式のキャスト MISRA.CONV.FLOAT 暗黙的な浮動小数点変換です |
FLP36-C |
PORTING.CAST.FLTPNT 非浮動小数点タイプへの浮動小数点式のキャスト |
FLP36-C(L3) |
PORTING.CAST.FLTPNT 非浮動小数点タイプへの浮動小数点式のキャスト |
FLP37-C |
CERT.MEMCMP.FLOAT_MEMBER メンバーが浮動小数点の場合、比較しないでください MISRA.STDLIB.MEMCMP.PTR_ARG_TYPES 標準ライブラリ関数 memcmp へのポインター引数は、ポインター型、本質的に符号付きの型、本質的に符号なしの型、本質的にブール型、または本質的に列挙型のどれかです |
FLP37-C(L3) |
CERT.MEMCMP.FLOAT_MEMBER メンバーが浮動小数点の場合、比較しないでください MISRA.STDLIB.MEMCMP.PTR_ARG_TYPES 標準ライブラリ関数 memcmp へのポインター引数は、ポインター型、本質的に符号付きの型、本質的に符号なしの型、本質的にブール型、または本質的に列挙型のどれかです |
INT30-C |
CWARN.NOEFFECT.OUTOFRANGE 範囲外の値 NUM.OVERFLOW オーバーフローの可能性 NUM.OVERFLOW.DF 起こり得る数値のオーバーフローまたはラップアラウンド |
INT30-C(L2) |
CWARN.NOEFFECT.OUTOFRANGE 範囲外の値 NUM.OVERFLOW オーバーフローの可能性 NUM.OVERFLOW.DF 起こり得る数値のオーバーフローまたはラップアラウンド |
INT31-C |
PORTING.CAST.SIZE サイズが異なる可能性がある型に式がキャストされています |
INT31-C(L2) |
PORTING.CAST.SIZE サイズが異なる可能性がある型に式がキャストされています |
INT32-C |
CWARN.NOEFFECT.OUTOFRANGE 範囲外の値 NUM.OVERFLOW オーバーフローの可能性 NUM.OVERFLOW.DF 起こり得る数値のオーバーフローまたはラップアラウンド |
INT32-C(L2) |
CWARN.NOEFFECT.OUTOFRANGE 範囲外の値 NUM.OVERFLOW オーバーフローの可能性 NUM.OVERFLOW.DF 起こり得る数値のオーバーフローまたはラップアラウンド |
INT33-C |
DBZ.CONST ゼロ定数による除算が発生しました DBZ.CONST.CALL 値 '0' が除数としてこの値を使用できる関数に渡されます DBZ.GENERAL ゼロ除算が発生した可能性があります DBZ.ITERATOR ループ反復子でゼロ除算が発生した可能性があります DBZ.ITERATOR.CALL 関数呼出しでゼロ除算が発生した可能性があります |
INT33-C(L2) |
DBZ.CONST ゼロ定数による除算が発生しました DBZ.CONST.CALL 値 '0' が除数としてこの値を使用できる関数に渡されます DBZ.GENERAL ゼロ除算が発生した可能性があります DBZ.ITERATOR ループ反復子でゼロ除算が発生した可能性があります DBZ.ITERATOR.CALL 関数呼出しでゼロ除算が発生した可能性があります |
INT34-C |
MISRA.SHIFT.RANGE.2012 シフト演算子の右側のオペランドは範囲外です - 左側のオペランドの基本タイプのサイズ以上か、または負 |
INT34-C(L3) |
MISRA.SHIFT.RANGE.2012 シフト演算子の右側のオペランドは範囲外です - 左側のオペランドの基本タイプのサイズ以上か、または負 |
INT36-C |
MISRA.CAST.OBJ_PTR_TO_INT.2012 オブジェクトを指すポインタと、整数タイプとの間で実行された変換 |
INT36-C(L3) |
MISRA.CAST.OBJ_PTR_TO_INT.2012 オブジェクトを指すポインタと、整数タイプとの間で実行された変換 |
MEM30-C |
UFM.DEREF.MIGHT 解放済みメモリの逆参照の可能性 UFM.DEREF.MUST 解放済みメモリの逆参照 UFM.FFM.MIGHT 解放済みメモリの使用 (二重解放)の可能性 UFM.FFM.MUST 解放済みメモリの解放 UFM.RETURN.MIGHT 解放済みメモリの戻り値への使用の可能性 UFM.RETURN.MUST 解放済みメモリの戻り値への使用 UFM.USE.MIGHT 解放済みメモリの使用の可能性 UFM.USE.MUST 解放済みメモリの使用 |
MEM30-C(L1) |
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 |
CL.FFM.ASSIGN 解放済みメモリの使用 (二重解放) - operator= が無いため CL.FFM.COPY 解放済みメモリの使用 (二重解放) - コピーコンストラクタが無いため CL.SHALLOW.ASSIGN 解放済みメモリの使用 (二重解放) - 演算子 = での浅いコピー CL.SHALLOW.COPY 解放済みメモリの使用 (二重解放) - コピーコンストラクタでの浅いコピー FMM.MIGHT メモリの解放の不一致の可能性 FMM.MUST メモリの解放の不一致 |
MEM31-C(L2) |
CL.FFM.ASSIGN 解放済みメモリの使用 (二重解放) - operator= が無いため CL.FFM.COPY 解放済みメモリの使用 (二重解放) - コピーコンストラクタが無いため CL.SHALLOW.ASSIGN 解放済みメモリの使用 (二重解放) - 演算子 = での浅いコピー CL.SHALLOW.COPY 解放済みメモリの使用 (二重解放) - コピーコンストラクタでの浅いコピー FMM.MIGHT メモリの解放の不一致の可能性 FMM.MUST メモリの解放の不一致 |
MEM33-C |
MISRA.INCOMPLETE.STRUCT 不完全な構造タイプが使用されています MISRA.MEMB.FLEX_ARRAY.2012 柔軟な配列メンバーは宣言しないでください |
MEM33-C(L3) |
MISRA.INCOMPLETE.STRUCT 不完全な構造タイプが使用されています MISRA.MEMB.FLEX_ARRAY.2012 柔軟な配列メンバーは宣言しないでください |
MEM34-C |
FNH.MIGHT 非ヒープメモリの解放の可能性 FNH.MUST 非ヒープメモリの解放 |
MEM34-C(L1) |
FNH.MIGHT 非ヒープメモリの解放の可能性 FNH.MUST 非ヒープメモリの解放 |
MEM35-C |
INCORRECT.ALLOC_SIZE 不適切な割り当てサイズ SV.TAINTED.ALLOC_SIZE メモリ割り当て時の未検証の整数の使用 |
MEM35-C(L2) |
INCORRECT.ALLOC_SIZE 不適切な割り当てサイズ SV.TAINTED.ALLOC_SIZE メモリ割り当て時の未検証の整数の使用 |
MEM36-C |
AUTOSAR.STDLIB.MEMORY 関数 malloc、calloc、realloc、および free は使用してはなりません |
MEM36-C(L3) |
AUTOSAR.STDLIB.MEMORY 関数 malloc、calloc、realloc、および free は使用してはなりません |
MSC30-C |
CERT.MSC.STD_RAND_CALL 疑似乱数の生成に std::rand() を使用しないでください |
MSC30-C(L2) |
CERT.MSC.STD_RAND_CALL 疑似乱数の生成に std::rand() を使用しないでください |
MSC32-C |
CERT.MSC.SEED_RANDOM 疑似乱数ジェネレータを適切にシードする |
MSC32-C(L1) |
CERT.MSC.SEED_RANDOM 疑似乱数ジェネレータを適切にシードする |
MSC33-C |
CERT.MSC.ASCTIME asctime() 関数に無効なデータを渡さないでください |
MSC33-C(L1) |
CERT.MSC.ASCTIME asctime() 関数に無効なデータを渡さないでください |
MSC37-C |
FUNCRET.GEN 非 void 関数に戻り値がありません FUNCRET.IMPLICIT 暗黙的に int を返す非 void 関数に戻り値がありません |
MSC37-C(L2) |
FUNCRET.GEN 非 void 関数に戻り値がありません FUNCRET.IMPLICIT 暗黙的に int を返す非 void 関数に戻り値がありません |
MSC39-C |
VA.LIST.INDETERMINATE 不定値を持つ va_list に対する va_arg() の呼び出し |
MSC39-C(L3) |
VA.LIST.INDETERMINATE 不定値を持つ va_list に対する va_arg() の呼び出し |
MSC40-C |
MISRA.FUNC.STATIC.REDECL 関数またはオブジェクトの再宣言に 'static' 修飾子がありません |
MSC40-C(L3) |
MISRA.FUNC.STATIC.REDECL 関数またはオブジェクトの再宣言に 'static' 修飾子がありません |
MSC41-C |
CXX.SV.PWD.PLAIN プレーンな文字列を使用してパスワードを設定しようとしています CXX.SV.PWD.PLAIN.LENGTH 15 文字未満の長さでパスワードを設定しようとしています CXX.SV.PWD.PLAIN.LENGTH.ZERO ゼロ文字の長さでパスワードを設定しようとしています HCC ハードコードされた資格情報の使用 HCC.PWD ハードコードされたパスワードの使用 HCC.USER ハードコードされたユーザー名の使用 |
MSC41-C(L1) |
CXX.SV.PWD.PLAIN プレーンな文字列を使用してパスワードを設定しようとしています CXX.SV.PWD.PLAIN.LENGTH 15 文字未満の長さでパスワードを設定しようとしています CXX.SV.PWD.PLAIN.LENGTH.ZERO ゼロ文字の長さでパスワードを設定しようとしています HCC ハードコードされた資格情報の使用 HCC.PWD ハードコードされたパスワードの使用 HCC.USER ハードコードされたユーザー名の使用 |
POS30-C |
ABV.GENERAL バッファオーバーフロー - 配列インデックスが範囲外 ABV.GENERAL.MULTIDIMENSION バッファオーバーフロー - 配列インデックスが範囲外 |
POS30-C(L1) |
ABV.GENERAL バッファオーバーフロー - 配列インデックスが範囲外 ABV.GENERAL.MULTIDIMENSION バッファオーバーフロー - 配列インデックスが範囲外 |
POS34-C |
CERT.PUTENV.AUTO_VARIABLE 自動変数へのポインターを引数として putenv() を呼び出さないでください |
POS34-C(L2) |
CERT.PUTENV.AUTO_VARIABLE 自動変数へのポインターを引数として putenv() を呼び出さないでください |
POS35-C |
CERT.STR.ASSIGN.CONST_TO_NONCONST const char ポインターを非 const char ポインターに割り当てないでください SV.TOCTOU.FILE_ACCESS ファイル アクセス時の作成日時/使用日時の競合状態 |
POS35-C(L1) |
CERT.STR.ASSIGN.CONST_TO_NONCONST const char ポインターを非 const char ポインターに割り当てないでください SV.TOCTOU.FILE_ACCESS ファイル アクセス時の作成日時/使用日時の競合状態 |
POS36-C |
SV.USAGERULES.PERMISSIONS 特権の昇給の使用 |
POS36-C(L1) |
SV.USAGERULES.PERMISSIONS 特権の昇給の使用 |
POS37-C |
SV.USAGERULES.PERMISSIONS 特権の昇給の使用 |
POS37-C(L1) |
SV.USAGERULES.PERMISSIONS 特権の昇給の使用 |
POS39-C |
BYTEORDER.HTON.SEND ホストバイトオーダーからネットワークバイトオーダーの変換が欠落しています BYTEORDER.HTON.WRITE ホストバイトオーダーからネットワークバイトオーダーの変換が欠落しています BYTEORDER.NTOH.READ ネットワークバイトオーダーからホストバイトオーダーの変換が欠落しています BYTEORDER.NTOH.RECV ネットワークバイトオーダーからホストバイトオーダーの変換が欠落しています |
POS39-C(L1) |
BYTEORDER.HTON.SEND ホストバイトオーダーからネットワークバイトオーダーの変換が欠落しています BYTEORDER.HTON.WRITE ホストバイトオーダーからネットワークバイトオーダーの変換が欠落しています BYTEORDER.NTOH.READ ネットワークバイトオーダーからホストバイトオーダーの変換が欠落しています BYTEORDER.NTOH.RECV ネットワークバイトオーダーからホストバイトオーダーの変換が欠落しています |
POS44-C |
MISRA.INCL.SIGNAL.2012 標準ヘッダーファイル signal.h は使用しない |
POS44-C(L2) |
MISRA.INCL.SIGNAL.2012 標準ヘッダーファイル signal.h は使用しない |
POS47-C |
CERT.POS.THREAD.ASYNC_CANCEL 非同期キャンセルが可能なスレッドを使用してはいけません |
POS47-C(L1) |
CERT.POS.THREAD.ASYNC_CANCEL 非同期キャンセルが可能なスレッドを使用してはいけません |
POS51-C |
CONC.DL デッドロック CONC.NO_UNLOCK 変数のロック解除の欠落 |
POS51-C(L3) |
CONC.DL デッドロック CONC.NO_UNLOCK 変数のロック解除の欠落 |
POS52-C |
CONC.SLEEP クリティカルセクションで関数がブロックされる可能性があります |
POS52-C(L3) |
CONC.SLEEP クリティカルセクションで関数がブロックされる可能性があります |
POS54-C |
SV.RVT.RETVAL_NOTTESTED 戻り値の無視 |
POS54-C(L1) |
SV.RVT.RETVAL_NOTTESTED 戻り値の無視 |
PRE30-C |
MISRA.DEFINE.SHARP マクロ定義に # 演算子または ## 演算子が使用されています |
PRE30-C(L3) |
MISRA.DEFINE.SHARP マクロ定義に # 演算子または ## 演算子が使用されています |
PRE31-C |
PORTING.VAR.EFFECTS ある使用法が副次的な影響を受ける式で変数が 2 回使用されています |
PRE31-C(L3) |
PORTING.VAR.EFFECTS ある使用法が副次的な影響を受ける式で変数が 2 回使用されています |
PRE32-C |
MISRA.EXPANSION.DIRECTIVE マクロの引数内にディレクティブのようなトークンがあります |
PRE32-C(L3) |
MISRA.EXPANSION.DIRECTIVE マクロの引数内にディレクティブのようなトークンがあります |
SIG30-C |
CERT.SIG.SIG_HANDLER.ASYNC_SAFE シグナルハンドラー内では非同期セーフな関数のみを呼び出す |
SIG30-C(L1) |
CERT.SIG.SIG_HANDLER.ASYNC_SAFE シグナルハンドラー内では非同期セーフな関数のみを呼び出す |
SIG34-C |
MISRA.STDLIB.SIGNAL signal.h の信号処理装置の使用 |
SIG34-C(L3) |
MISRA.STDLIB.SIGNAL signal.h の信号処理装置の使用 |
SIG35-C |
CERT.STDLIB.SIGNAL 計算例外シグナルハンドラーから戻らない |
SIG35-C(L3) |
CERT.STDLIB.SIGNAL 計算例外シグナルハンドラーから戻らない |
STR30-C |
CERT.STR.ARG.CONST_TO_NONCONST const char ポインターを非 const char ポインター引数に渡さないでください CERT.STR.ASSIGN.CONST_TO_NONCONST const char ポインターを非 const char ポインターに割り当てないでください |
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 |
SV.FMT_STR.BAD_SCAN_FORMAT 入力書式指定子エラー SV.UNBOUND_STRING_INPUT.FUNC バインドされていない文字列入力の使用法 |
STR31-C(L1) |
SV.FMT_STR.BAD_SCAN_FORMAT 入力書式指定子エラー SV.UNBOUND_STRING_INPUT.FUNC バインドされていない文字列入力の使用法 |
STR32-C |
NNTS.MIGHT バッファオーバーフロー - 非 NULL 終了文字列 NNTS.MUST バッファオーバーフロー - 非 NULL 終了文字列 SV.STRBO.BOUND_COPY.UNTERM 次の文字列演算でバッファオーバーフローの可能性があります |
STR32-C(L1) |
NNTS.MIGHT バッファオーバーフロー - 非 NULL 終了文字列 NNTS.MUST バッファオーバーフロー - 非 NULL 終了文字列 SV.STRBO.BOUND_COPY.UNTERM 次の文字列演算でバッファオーバーフローの可能性があります |
STR34-C |
CXX.CAST.SIGNED_CHAR_TO_INTEGER より大きな整数サイズに変換する前に char を unsigned char にキャストします |
STR34-C(L2) |
CXX.CAST.SIGNED_CHAR_TO_INTEGER より大きな整数サイズに変換する前に char を unsigned char にキャストします |
STR37-C |
AUTOSAR.STDLIB.CCTYPE.UCHAR <cctype> で定義される文字処理関数の引数は、unsigned char として表現できなければなりません MISRA.ETYPE.ASSIGN.2012 より狭い基本タイプ、または、異なる基本タイプカテゴリーのオブジェクトへの割り当て |
STR37-C(L3) |
AUTOSAR.STDLIB.CCTYPE.UCHAR <cctype> で定義される文字処理関数の引数は、unsigned char として表現できなければなりません MISRA.ETYPE.ASSIGN.2012 より狭い基本タイプ、または、異なる基本タイプカテゴリーのオブジェクトへの割り当て |
STR38-C |
CXX.DIFF.WIDTH.STR_AND_FUNC 関数の呼び出し時にナロー文字列とワイド文字列の間で暗黙のキャストが行われます |
STR38-C(L1) |
CXX.DIFF.WIDTH.STR_AND_FUNC 関数の呼び出し時にナロー文字列とワイド文字列の間で暗黙のキャストが行われます |
WIN30-C |
FMM.MIGHT メモリの解放の不一致の可能性 FMM.MUST メモリの解放の不一致 |
WIN30-C(L2) |
FMM.MIGHT メモリの解放の不一致の可能性 FMM.MUST メモリの解放の不一致 |
CERT C 推奨
ガイドライン | チェッカー名および説明 |
---|---|
ARR00-C(L2) |
ABV.ANY_SIZE_ARRAY バッファオーバーフロー - 配列インデックスが範囲外 ABV.GENERAL バッファオーバーフロー - 配列インデックスが範囲外 ABV.GENERAL.MULTIDIMENSION バッファオーバーフロー - 配列インデックスが範囲外 ABV.ITERATOR バッファオーバーフロー - 配列インデックスが範囲外の可能性 ABV.MEMBER バッファオーバーフロー - 配列インデックスが範囲外 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 終了文字列 SV.STRBO.BOUND_COPY.OVERFLOW バインドされた文字列コピーでのバッファオーバーフロー SV.STRBO.BOUND_COPY.UNTERM 次の文字列演算でバッファオーバーフローの可能性があります SV.STRBO.BOUND_SPRINTF バインドされた sprintf でのバッファオーバーフロー SV.STRBO.UNBOUND_COPY バインドされていない文字列コピーでのバッファオーバーフロー SV.STRBO.UNBOUND_SPRINTF バインドされていない sprintf でのバッファオーバーフロー SV.TAINTED.ALLOC_SIZE メモリ割り当て時の未検証の整数の使用 SV.TAINTED.CALL.INDEX_ACCESS 関数呼び出し時の配列インデックスとしての未検証の整数の使用 SV.TAINTED.CALL.LOOP_BOUND 関数呼び出しのループ条件での未検証の整数の使用 SV.TAINTED.INDEX_ACCESS 配列インデックスとしての未検証の整数の使用 SV.TAINTED.LOOP_BOUND ループ条件での未検証の整数の使用 SV.UNBOUND_STRING_INPUT.CIN バインドされていない文字列入力についての cin の使用法 SV.UNBOUND_STRING_INPUT.FUNC バインドされていない文字列入力の使用法 |
ARR01-C(L1) |
CWARN.MEMSET.SIZEOF.PTR ポインタに適用される 'sizeof' には、memset のような関数が呼び出されます |
CON05-C(L3) |
CONC.SLEEP クリティカルセクションで関数がブロックされる可能性があります |
DCL01-C(L3) |
MISRA.VAR.HIDDEN 内部のスコープで宣言された識別子によって外部のスコープの識別子が非表示になっています |
DCL06-C(L3) |
CERT.LITERAL.ARRAY シンボリック定数を使用してリテラル配列サイズ値を表す CERT.LITERAL.BITFIELD シンボリック定数を使用してリテラルビットフィールド値を表す CERT.LITERAL.CHAR.CONST シンボリック定数を使用してリテラル文字値を表す CERT.LITERAL.FLT.CONST シンボリック定数を使用してリテラル浮動小数点値を表す CERT.LITERAL.INT.CONST シンボリック定数を使用してリテラル整数値を表す CERT.LITERAL.STR.CONST シンボリック定数を使用してリテラル文字列値を表す |
DCL07-C(L3) |
MISRA.CAST.FUNC_PTR.2012 関数を指すポインタと、別の非互換タイプとの間で実行された変換 MISRA.FUNC.NOPROT.DEF.2012 関数は定義されていますが、プロトタイプがありません MISRA.FUNC.PROT_FORM.KR.2012 関数タイプはプロトタイプ形式です |
DCL10-C(L2) |
SV.FMT_STR.PRINT_PARAMS_WRONGNUM.FEW print 関数呼び出しの引数が少なすぎます SV.FMT_STR.PRINT_PARAMS_WRONGNUM.MANY print 関数呼び出しの引数が多すぎます SV.FMT_STR.SCAN_PARAMS_WRONGNUM.FEW scan 関数呼び出しの引数が少なすぎます SV.FMT_STR.SCAN_PARAMS_WRONGNUM.MANY scan 関数呼び出しの引数が多すぎます |
DCL11-C(L2) |
MISRA.FUNC.VARARG 関数が可変数の引数を持っています 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.UNKWN_FORMAT.SCAN scan 関数呼び出しの書式指定子が不明です |
DCL13-C(L3) |
MISRA.PPARAM.NEEDS.CONST ポインタパラメーターを使用しないでアドレスされたオブジェクトを変更していますが、const を指すポインタとして宣言されていません |
DCL18-C(L3) |
MISRA.TOKEN.OCTAL.ESCAPE 8 進数のエスケープ文字列の使用 MISRA.TOKEN.OCTAL.INT 8 進数の整数定数を使用しています |
DCL19-C(L3) |
CERT.STATIC.SINGLE.USE ファイルスコープの静的変数は 1 つの関数でのみアクセスされる CERT.TU.UNUSED.GLOBAL.DECL グローバル識別子は宣言されているが、この変換ユニットでは使用されない CXX.ID_VIS.GLOBAL_VARIABLE.EXTERN extern グローバル変数の可視範囲が広すぎます CXX.ID_VIS.GLOBAL_VARIABLE.STATIC static グローバル変数の可視範囲が広すぎます MISRA.VAR.MIN.VIS 名前の可視性が高すぎます |
DCL20-C(L1) |
MISRA.FUNC.NO_PARAMS パラメーターのない関数に void パラメータータイプがありません |
DCL23-C(L2) |
MISRA.IDENT.DISTINCT.C99.2012 同一のスコープまたは同一の名前空間で宣言された識別子が区別されていません |
ENV01-C(L1) |
ABV.ANY_SIZE_ARRAY バッファオーバーフロー - 配列インデックスが範囲外 ABV.GENERAL バッファオーバーフロー - 配列インデックスが範囲外 ABV.GENERAL.MULTIDIMENSION バッファオーバーフロー - 配列インデックスが範囲外 ABV.ITERATOR バッファオーバーフロー - 配列インデックスが範囲外の可能性 ABV.MEMBER バッファオーバーフロー - 配列インデックスが範囲外 ABV.STACK バッファオーバーフロー - ローカル配列インデックスが範囲外 ABV.TAINTED 未検証の入力によるバッファオーバーフロー ABV.UNICODE.BOUND_MAP 文字関数のマッピング時のバッファオーバーフロー ABV.UNICODE.FAILED_MAP 関数のマッピングに失敗します ABV.UNICODE.NNTS_MAP 文字関数のマッピング時のバッファオーバーフロー ABV.UNICODE.SELF_MAP 関数のマッピングに失敗します ABV.UNKNOWN_SIZE バッファオーバーフロー - 配列インデックスが範囲外 |
EXP00-C(L3) |
CERT.EXPR.PARENS 式内の演算子の優先度は明示的にする必要があります。 |
EXP02-C(L3) |
MISRA.LOGIC.SIDEEFF 論理 'and' 式または論理 'or' 式の右側のオペランドは副作用があります |
EXP08-C(L2) |
ABV.GENERAL バッファオーバーフロー - 配列インデックスが範囲外 ABV.GENERAL.MULTIDIMENSION バッファオーバーフロー - 配列インデックスが範囲外 ABV.ITERATOR バッファオーバーフロー - 配列インデックスが範囲外の可能性 |
EXP10-C(L2) |
CERT.MULTI.FUNC.ARG.CALLS 副次式の評価の順序や、副作用が発生する順序には依存しない |
EXP12-C(L3) |
MISRA.FUNC.UNUSEDRET.2012 非 void 関数の戻り値を使用してください SV.RVT.RETVAL_NOTTESTED 戻り値の無視 |
EXP15-C(L1) |
SEMICOL セミコロンの位置を確認してください |
EXP16-C(L2) |
CWARN.FUNCADDR この関数の呼び出しの代わりに、関数アドレスが使用されます CWARN.NULLCHECK.FUNCNAME 関数アドレスが 0 と直接比較されます |
EXP19-C(L2) |
MISRA.IF.NO_COMPOUND if/else ステートメントのボディが複合ステートメントではありません MISRA.STMT.NO_COMPOUND switch、while、do/while または for ステートメントのボディが複合ステートメントではありません |
FIO01-C(L1) |
SV.TOCTOU.FILE_ACCESS ファイル アクセス時の作成日時/使用日時の競合状態 |
FIO02-C(L2) |
SV.DLLPRELOAD.NONABSOLUTE.DLL DLL プリロードのハイジャック ベクターの可能性 SV.TOCTOU.FILE_ACCESS ファイル アクセス時の作成日時/使用日時の競合状態 |
FIO22-C(L3) |
RH.LEAK リソースリーク |
FLP07-C(L3) |
CERT.RTN.FLT.CAST.DBL 浮動小数点型を返す関数の戻り値をキャストする CERT.RTN.FLT.IMPLICIT.CAST.DBL 浮動小数点型を返す関数の戻り値をキャストする |
INT02-C(L2) |
MISRA.CAST.INT 自明ではない整数式が広い型または別の符号を持つ型にキャストされています MISRA.CAST.UNSIGNED_BITS unsigned char または short でのビット演算の結果は元の型にキャストできません MISRA.CONV.INT.SIGN 暗黙的な整数変換により符号が変わります MISRA.CVALUE.IMPL.CAST 暗黙の型変換で符号、型サイズ、型の違いにより情報の損失を起こす記述があります。 MISRA.UMINUS.UNSIGNED 単項マイナス演算子が符号なしオペランドに対して使用されています。 PRECISION.LOSS 精度の損失 |
INT04-C(L2) |
SV.TAINTED.ALLOC_SIZE メモリ割り当て時の未検証の整数の使用 SV.TAINTED.BINOP バイナリ演算での未検証整数値の使用 SV.TAINTED.CALL.BINOP バイナリ演算での未検証整数値の使用 SV.TAINTED.CALL.INDEX_ACCESS 関数呼び出し時の配列インデックスとしての未検証の整数の使用 SV.TAINTED.CALL.LOOP_BOUND 関数呼び出しのループ条件での未検証の整数の使用 SV.TAINTED.INDEX_ACCESS 配列インデックスとしての未検証の整数の使用 SV.TAINTED.LOOP_BOUND ループ条件での未検証の整数の使用 |
INT07-C(L2) |
PORTING.SIGNED.CHAR 明示的に符号が指定されずに 'char' が使用されます |
INT09-C(L3) |
MISRA.ENUM.IMPLICIT.VAL.NON_UNIQUE.2012 暗黙的列挙子値は一意ではありません |
INT12-C(L3) |
MISRA.BITFIELD.TYPE ビットフィールドのタイプは、符号付き/符号なし整数のいずれでもありません |
INT13-C(L2) |
MISRA.BITS.NOT_UNSIGNED ビット演算のオペランドが符号なし整数ではありません MISRA.BITS.NOT_UNSIGNED.PREP ビット演算のオペランドが符号なし整数ではありません |
INT18-C(L1) |
PORTING.CAST.SIZE サイズが異なる可能性がある型に式がキャストされています |
MEM00-C(L1) |
FNH.MIGHT 非ヒープメモリの解放の可能性 FNH.MUST 非ヒープメモリの解放 FUM.GEN.MIGHT 未割り当てメモリの解放の可能性 FUM.GEN.MUST 未割り当てメモリの解放 MLK.MIGHT メモリリークの可能性 MLK.MUST メモリリーク MLK.RET.MIGHT メモリリークの可能性 MLK.RET.MUST メモリリーク RH.LEAK リソースリーク UFM.DEREF.MIGHT 解放済みメモリの逆参照の可能性 UFM.DEREF.MUST 解放済みメモリの逆参照 UFM.FFM.MIGHT 解放済みメモリの使用 (二重解放)の可能性 UFM.FFM.MUST 解放済みメモリの解放 UFM.RETURN.MIGHT 解放済みメモリの戻り値への使用の可能性 UFM.RETURN.MUST 解放済みメモリの戻り値への使用 UFM.USE.MIGHT 解放済みメモリの使用の可能性 UFM.USE.MUST 解放済みメモリの使用 |
MEM05-C(L1) |
MISRA.FUNC.RECUR 再帰関数 |
MEM12-C(L3) |
MLK.MIGHT メモリリークの可能性 MLK.MUST メモリリーク MLK.RET.MIGHT メモリリークの可能性 MLK.RET.MUST メモリリーク RH.LEAK リソースリーク |
MSC01-C(L2) |
CWARN.EMPTY.LABEL ラベルステートメントが空です INFINITE_LOOP.GLOBAL 無限ループ INFINITE_LOOP.LOCAL 無限ループ INFINITE_LOOP.MACRO 無限ループ LA_UNUSED ラベルが使用されていません MISRA.IF.NO_ELSE if/else-if ステートメントのチェインが else で終了していないか、または空の else 句で終了しています MISRA.SWITCH.NODEFAULT switch ステートメントの最後に default 句がありません MISRA.SWITCH.WELL_FORMED.DEFAULT.2012 各 switch ステートメントはデフォルトラベルを有するべきです。 |
MSC07-C(L3) |
INVARIANT_CONDITION.UNREACH 不変な条件式 LA_UNUSED ラベルが使用されていません UNREACH.ENUM enum が取りうる値が原因で、コードは到達不能になっています UNREACH.GEN 到達不能コード UNREACH.RETURN 到達不能な void return文 UNREACH.SIZEOF アーキテクチャに関連した到達不能コード |
MSC12-C(L3) |
CWARN.NOEFFECT.SELF_ASSIGN 変数は自身に割り当てられます CWARN.NOEFFECT.UCMP.GE 符号なし値と 0 との比較は、常に true になります CWARN.NOEFFECT.UCMP.GE.MACRO マクロ内で符号なし値と 0 との比較は、常に true になります CWARN.NOEFFECT.UCMP.LT 符号なし値と 0 との比較は、常に false になります CWARN.NOEFFECT.UCMP.LT.MACRO マクロ内で符号なし値と 0 との比較は、常に false になります CWARN.NULLCHECK.FUNCNAME 関数アドレスが 0 と直接比較されます EFFECT ステートメントの影響はありません INVARIANT_CONDITION.UNREACH 不変な条件式 LA_UNUSED ラベルが使用されていません MISRA.ARRAY.VAR_LENGTH.2012 変数の長さの配列種類は使用しないでください MISRA.STMT.NO_EFFECT そのステートメントは副作用がなく、制御フローを変更しません UNREACH.ENUM enum が取りうる値が原因で、コードは到達不能になっています UNREACH.GEN 到達不能コード UNREACH.RETURN 到達不能な void return文 UNREACH.SIZEOF アーキテクチャに関連した到達不能コード VA_UNUSED.GEN 値を割り当て後に使用しません VA_UNUSED.INIT 値を初期化後に使用しません |
MSC13-C(L3) |
LV_UNUSED.GEN ローカル変数は使用されません VA_UNUSED.GEN 値を割り当て後に使用しません VA_UNUSED.INIT 値を初期化後に使用しません |
MSC14-C(L3) |
CERT.ALIGNOF '__alignof__' の使用は言語拡張である CERT.ANONYMOUS.STRUCT 無名構造体オブジェクトの定義は言語拡張である CERT.ANONYMOUS.UNION 無名共用体オブジェクトの定義は言語拡張である CERT.ARRAY.LENGTH.ZERO 長さゼロの配列は言語拡張である CERT.BITFIELD.NOT.INT 'int' 型として定義されていないビットフィールドは言語拡張である CERT.BITFIELD.SIGN.MODIFIER 符号付きまたは符号なしとして定義されていないビットフィールドは実装定義である CERT.EMPTY.AGR.INIT 空の集約型初期化子は言語拡張である CERT.ENUM.LITERAL.TYPE.INT 列挙リテラル定数が int 型ではない CERT.ENUM.TYPE.SPECIFIER 非標準の拡張列挙型指定子は言語拡張である CERT.FIXED.MEMORY.ADDRESS '@ address' の使用は言語拡張である CERT.LITERAL.BINARY バイナリ定数の使用は言語拡張である CERT.LITERAL.MULTIBYTE.CHAR マルチバイト文字定数の割り当ては実装定義である CERT.LITERAL.OCTAL 8 進定数の使用は言語拡張である CERT.LITERAL.SUFFIX.I64 整数定数の接尾辞として I64 または UI64 を使用することは言語拡張である CERT.NAME.DOLLAR.CHAR オブジェクト名に文字 '$' を使用することは、ISO C では有効な識別子ではない CERT.STMT.EXPR ステートメント式の使用は言語拡張である CERT.STR.RANGE.FORMATTER 文字列範囲フォーマッタの使用は実装定義である CERT.TYPEOF '__typeof__' の使用は言語拡張である CERT.UNNAMED.MEMBER 構造体または共用体における無名メンバーの定義は言語拡張である |
MSC17-C(L1) |
MISRA.SWITCH.WELL_FORMED.BREAK.2012 条件なしの break ステートメントで各 switch 句を終了するべきです。 |
POS02-C(L2) |
SV.USAGERULES.PERMISSIONS 特権の昇給の使用 |
POS05-C(L3) |
CERT.CHROOT chroot 関数の使用 CERT.CHROOT.CHDIR 'chroot' 関数の呼び出しの後に 'chdir' 関数の呼び出しがない |
PRE00-C(L3) |
MISRA.DEFINE.FUNC マクロが関数のように定義されています |
PRE01-C(L1) |
MISRA.DEFINE.NOPARS マクロパラメーターに括弧がありません |
PRE02-C(L1) |
MISRA.DEFINE.BADEXP 不適切なマクロ展開です |
PRE05-C(L3) |
MISRA.DEFINE.SHARP.ORDER.2012 複数の '#' または '##' の評価の順番が指定されていません |
PRE06-C(L3) |
MISRA.INCGUARD インクルードガードが入力されていません |
PRE10-C(L1) |
MISRA.DEFINE.BADEXP 不適切なマクロ展開です |
STR02-C(L1) |
NNTS.TAINTED 未検証のユーザー入力が原因のバッファオーバーフロー - 非 NULL 終了文字列 SV.TAINTED.INJECTION コマンドインジェクション |
STR03-C(L2) |
NNTS.MIGHT バッファオーバーフロー - 非 NULL 終了文字列 NNTS.MUST バッファオーバーフロー - 非 NULL 終了文字列 |
STR05-C(L3) |
MISRA.STRING_LITERAL.NON_CONST.2012 オブジェクトの種類が const-qualified char のポインターでない限り、文字列リテラルはオブジェクトに割り当てられません |
WIN00-C(L1) |
SV.DLLPRELOAD.NONABSOLUTE.DLL DLL プリロードのハイジャック ベクターの可能性 SV.DLLPRELOAD.NONABSOLUTE.EXE プロセスインジェクションベクターの可能性 SV.DLLPRELOAD.SEARCHPATH DLL の検索に SearchPath の使用は推奨されません |
"MISRA"、"MISRA C" および、"MISRA C++" は、The MISRA Consortium Limited の登録商標です。