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 の登録商標です。​