MISRA C:2004 チェッカーリファレンス - 認証対象
これらのチェッカーでは、MISRA C:2004 規格の違反を検出します。
注記
- 規則番号で整理されたこの情報を表示するには、Klocwork の認証対象チェッカーにマッピングされた MISRA C:2004 規則を参照してください。
- MISRA C チェッカーと MISRA C++ チェッカーにそれぞれ詳細なヘルプが用意されています。この情報はライセンス供与されているため、オンラインではなく Klocwork インストールの一部として利用できます。
チェッカー名 | 説明 | ガイドライン | バージョン |
---|---|---|---|
FUNCRET.GEN | 非 void 関数に戻り値がありません | 16.8 | Pre-2020.1 |
FUNCRET.IMPLICIT | 暗黙的に int を返す非 void 関数に戻り値がありません | 16.8 | Pre-2020.1 |
INVARIANT_CONDITION.GEN | 不変な条件式 | 13.7 | 2020.1 |
INVARIANT_CONDITION.UNREACH | 不変な条件式 | 13.7 | Pre-2020.1 |
LOCRET.ARG | 関数がローカル変数のアドレスを返しています | 17.6 | Pre-2020.1 |
LOCRET.GLOB | 関数がローカル変数のアドレスを返しています | 17.6 | Pre-2020.1 |
LOCRET.RET | 関数がローカル変数のアドレスを返しています | 17.6 | Pre-2020.1 |
MISRA.ASM.ENCAPS | アセンブリ言語が分離されていません | 2.1 | Pre-2020.1 |
MISRA.ASSIGN.COND | 条件内で代入演算子が使用されています | 13.1 | Pre-2020.1 |
MISRA.ASSIGN.OVERLAP | オブジェクトがオーバーラップするオブジェクトに割り当てられています | 18.2 | 2022.3 |
MISRA.BITFIELD.SIGNED | 名前付きの符号付きビットフィールドの長さが 2 未満です | 6.5 | Pre-2020.1 |
MISRA.BITFIELD.SIGNED.UNNAMED | 名前のない符号付きビットフィールドの長さが 2 未満です | 6.5 | Pre-2020.1 |
MISRA.BITFIELD.TYPE | ビットフィールドのタイプは、符号付き/符号なし整数のいずれでもありません | 6.4 | Pre-2020.1 |
MISRA.BITS.NOT_UNSIGNED | ビット演算のオペランドが符号なし整数ではありません | 12.7 | Pre-2020.1 |
MISRA.BITS.NOT_UNSIGNED.PREP | ビット演算のオペランドが符号なし整数ではありません | 12.7 | Pre-2020.1 |
MISRA.BUILTIN_NUMERIC | 組み込み数値型が使用されています | 6.3 | Pre-2020.1 |
MISRA.CAST.CONST | キャスト演算により const または volatile がポインターまたは参照から除外されます。 | 11.5 | Pre-2020.1 |
MISRA.CAST.FLOAT | 自明ではない浮動型の式が広いタイプにキャストされています | 10.4 | Pre-2020.1 |
MISRA.CAST.FUNC_PTR | 関数ポインタと整数型以外の間のキャストです。 | 11.1 | Pre-2020.1 |
MISRA.CAST.INT | 自明ではない整数式が広い型または別の符号を持つ型にキャストされています | 10.3 | Pre-2020.1 |
MISRA.CAST.PTR | オブジェクトタイプを指すポインタとオブジェクトタイプを指す別のポインタ間のキャストです | 11.4 | Pre-2020.1 |
MISRA.CAST.PTR.UNRELATED | ポインタ型のオブジェクトを関連のない型にキャストしています | 11.2 | Pre-2020.1 |
MISRA.CAST.PTR_TO_INT | ポインタと整数型間のキャスト | 11.3 | Pre-2020.1 |
MISRA.CAST.UNSIGNED_BITS | unsigned char または short でのビット演算の結果は元の型にキャストできません | 10.5 | Pre-2020.1 |
MISRA.CHAR.NOT_CHARACTER | 文字でない値に 'char' が使用されています | 6.1 | Pre-2020.1 |
MISRA.CHAR.TRIGRAPH | 3 文字表記の使用 | 4.2 | Pre-2020.1 |
MISRA.COMMA | カンマ演算子が使用されています | 12.10 | Pre-2020.1 |
MISRA.COMP.WRAPAROUND | 条件内でラップアラウンドしています | 12.11 | 2020.3 |
MISRA.CONTINUE | continue ステートメントが使用されています | 14.5 | Pre-2020.1 |
MISRA.CT.UNIQUE.ID | 識別子がタグ名と不整合です | 5.4 | 2021.2 |
MISRA.CVALUE.IMPL.CAST | 暗黙の型変換で符号、型サイズ、型の違いにより情報の損失を起こす記述があります。 | 10.1 10.2 | 2020.3 |
MISRA.DECL.ARRAY_SIZE | 配列の宣言でサイズが不明です | 8.12 | Pre-2020.1 |
MISRA.DECL.FUNC_LOCAL | 関数がローカルで宣言されています | 8.6 | Pre-2020.1 |
MISRA.DECL.NO_TYPE | 宣言から型が抜けています | 8.2 | Pre-2020.1 |
MISRA.DEFINE.BADEXP | 不適切なマクロ展開です | 19.4 | 2020.4 |
MISRA.DEFINE.FUNC | マクロが関数のように定義されています | 19.7 | Pre-2020.1 |
MISRA.DEFINE.LONGNAME | マクロ名が長すぎます | 5.1 | Pre-2020.1 |
MISRA.DEFINE.NOPARS | マクロパラメーターに括弧がありません | 19.10 | 2020.4 |
MISRA.DEFINE.NOTGLOBAL | グローバルレベル以外で定義されています | 19.5 | Pre-2020.1 |
MISRA.DEFINE.SHARP | マクロ定義に # 演算子または ## 演算子が使用されています | 19.13 | Pre-2020.1 |
MISRA.DEFINE.SHARP.MANY | マクロ定義に # 演算子または ## 演算子がいくつか使用されています | 19.12 | Pre-2020.1 |
MISRA.DEFINE.WRONGNAME | 標準ライブラリからの名前がマクロ名に使用されています | 20.1 | Pre-2020.1 |
MISRA.DEFINE.WRONGNAME.UNDERSCORE | 予約名がマクロ名に使用されています | 20.1 | Pre-2020.1 |
MISRA.ELIF.DEFINED | #elif ディレクティブで不正な 'defined' が使用されています | 19.14 | Pre-2020.1 |
MISRA.ELIF.OTHERFILE | 不適切なファイルでの #elif | 19.17 | Pre-2020.1 |
MISRA.ELIF.UNDEF | #elif ディレクティブでマクロが定義されていません | 19.11 | Pre-2020.1 |
MISRA.ELIF.WRAPAROUND | #elif ディレクティブでラップアラウンドします | 12.11 | Pre-2020.1 |
MISRA.ELSE.OTHERFILE | 不適切なファイルでの #else | 19.17 | Pre-2020.1 |
MISRA.ENDIF.OTHERFILE | 不適切なファイルでの #endif | 19.17 | Pre-2020.1 |
MISRA.ENUM.INIT | 1 番目以外の列挙子が明示的に初期化されていますが、一部の要素が明示的に初期化されていません | 9.3 | Pre-2020.1 |
MISRA.EXPANSION.DIRECTIVE | マクロの引数内にディレクティブのようなトークンがあります | 19.9 | Pre-2020.1 |
MISRA.EXPANSION.NARGS | マクロの引数がありません | 19.8 | Pre-2020.1 |
MISRA.EXPANSION.UNSAFE | 安全ではないマクロの使用 | 20.1 20.5 20.6 20.7 20.8 | Pre-2020.1 |
MISRA.EXPR.PARENS.INSUFFICIENT | 式の演算子優先規則に制限された依存性が必要です | 12.1 | Pre-2020.1 |
MISRA.EXPR.PARENS.REDUNDANT | 式の演算子優先規則に制限された依存性が必要です | 12.1 | 2021.1 |
MISRA.FLOAT.BIT.REPR | 浮動小数点値のビット操作結果はストレージのレイアウトによって変わります | 12.12 | Pre-2020.1 |
MISRA.FLOAT_EQUAL | 浮動小数点式のイコールがテストされています | 13.3 | 2020.2 |
MISRA.FOR.COND | for ループの条件ではループカウンターの値が変わりません | 13.5 | Pre-2020.1 |
MISRA.FOR.COND.FLT | for ループの条件セクションで浮動小数点オブジェクトが使用されています | 13.4 | Pre-2020.1 |
MISRA.FOR.INCR.CHANGE | for ループの増分式がループカウンターで変化していません | 13.5 | Pre-2020.1 |
MISRA.FOR.STMT.CHANGE | for ループのカウンターがループステートメント内で変更されています | 13.6 | Pre-2020.1 |
MISRA.FUNC.ADDR | & 演算子なしで関数のアドレスが使用されています | 16.9 | Pre-2020.1 |
MISRA.FUNC.NOPROT.CALL | 関数が呼び出されていますが、プロトタイプがありません | 8.1 | 2021.1 |
MISRA.FUNC.NOPROT.DEF | 関数は定義されていますが、プロトタイプがありません | 8.1 | Pre-2020.1 |
MISRA.FUNC.NO_PARAMS | パラメーターのない関数に void パラメータータイプがありません | 16.5 | Pre-2020.1 |
MISRA.FUNC.PARAMS.IDENT | 関数の宣言と定義で使用される識別子が一致していません | 16.4 | Pre-2020.1 |
MISRA.FUNC.RECUR | 再帰関数 | 16.2 | Pre-2020.1 |
MISRA.FUNC.STATIC.REDECL | 関数またはオブジェクトの再宣言に 'static' 修飾子がありません | 8.11 | Pre-2020.1 |
MISRA.FUNC.UNMATCHED.PARAMS | 関数に渡される仮引数と実際のパラメーターの数が一致しません | 16.6 | Pre-2020.1 |
MISRA.FUNC.UNNAMED.PARAMS | 関数の宣言に名前のないパラメーターがあります | 16.3 | 2022.4 |
MISRA.FUNC.VARARG | 関数が可変数の引数を持っています | 16.1 | Pre-2020.1 |
MISRA.GOTO | goto ステートメントが使用されています | 14.4 | Pre-2020.1 |
MISRA.IDENT.LONG | 識別子が 32 文字以上です | 5.1 | Pre-2020.1 |
MISRA.IF.DEFINED | #if ディレクティブで不正な 'defined' が使用されています | 19.14 | Pre-2020.1 |
MISRA.IF.NO_COMPOUND | if/else ステートメントのボディが複合ステートメントではありません | 14.9 | Pre-2020.1 |
MISRA.IF.NO_ELSE | if/else-if ステートメントのチェインが else で終了していないか、または空の else 句で終了しています | 14.10 | Pre-2020.1 |
MISRA.IF.UNDEF | #if ディレクティブでマクロが定義されていません | 19.11 | Pre-2020.1 |
MISRA.IF.WRAPAROUND | #if ディレクティブでラップアラウンドします | 12.11 | Pre-2020.1 |
MISRA.INCGUARD | インクルードガードが入力されていません | 19.15 | Pre-2020.1 |
MISRA.INCL.BAD | 非標準の include ディレクティブです | 19.3 | 2020.4 |
MISRA.INCL.INSIDE | include ディレクティブの前にプリプロセッサ出力トークンがあります | 19.1 | Pre-2020.1 |
MISRA.INCL.SYMS | ヘッダーファイル名に非標準文字が使用されています | 19.2 | Pre-2020.1 |
MISRA.INCL.UNSAFE | 安全でないヘッダーのインクルード | 20.1 20.12 20.8 20.9 | 2022.2 |
MISRA.INCOMPLETE.STRUCT | 不完全な構造タイプが使用されています | 18.1 | Pre-2020.1 |
MISRA.INCOMPLETE.STRUCT.UNNAMED | 名前のない不完全な構造タイプが使用されています | 18.1 | Pre-2020.1 |
MISRA.INCOMPLETE.UNION | 不完全な和集合タイプが使用されています | 18.1 | Pre-2020.1 |
MISRA.INCOMPLETE.UNION.UNNAMED | 名前のない不完全な和集合タイプが使用されています | 18.1 | Pre-2020.1 |
MISRA.INCR_DECR.OTHER | 増分または減分の演算子がその他の演算子と混合して式で使用されています | 12.13 | Pre-2020.1 |
MISRA.INIT.BRACES | 不適切な初期化子が配置を固定しています | 9.2 | Pre-2020.1 |
MISRA.ITER.ONETERM | 反復ステートメントに複数の break または for ループ終端への複数の goto があります | 14.6 | Pre-2020.1 |
MISRA.LITERAL.UNSIGNED.SUFFIX | 'U' 添え字の付かない符号なし整数リテラルです | 10.6 | Pre-2020.1 |
MISRA.LOGIC.OPERAND.NOT_BOOL | 論理演算のオペランドは実質的にはブール値ではありません | 12.6 | Pre-2020.1 |
MISRA.LOGIC.OPERATOR.NOT_BOOL | 論理演算ではない演算子のオペランドが実質的にはブール値です | 12.6 | 2021.2 |
MISRA.LOGIC.PRIMARY | 論理 'and' 式または論理 'or' 式のオペランドが 1 次式ではありません | 12.5 | Pre-2020.1 |
MISRA.LOGIC.SIDEEFF | 論理 'and' 式または論理 'or' 式の右側のオペランドは副作用があります | 12.4 | Pre-2020.1 |
MISRA.LOGIC.SIDEEFF.COND | 条件式の分岐式に副作用があります | 12.4 | Pre-2020.1 |
MISRA.NULL.STMT | 行上に NULL ステートメント以外のものがあるか、またはコメントが不適切な場所に記述されています | 14.3 | Pre-2020.1 |
MISRA.OBJ.TYPE.COMPAT | 型がその他の宣言の型と互換性がありません | 8.4 | Pre-2020.1 |
MISRA.OBJ.TYPE.IDENT | 型がその他の宣言の型と一致していません | 8.3 | Pre-2020.1 |
MISRA.ONEDEFRULE.FUNC | ヘッダーファイルでグローバル関数が定義されています | 8.5 | Pre-2020.1 |
MISRA.ONEDEFRULE.VAR | ヘッダーファイルでグローバル変数が定義されています | 8.5 | 2020.2 |
MISRA.PPARAM.NEEDS.CONST | ポインタパラメーターを使用しないでアドレスされたオブジェクトを変更していますが、const を指すポインタとして宣言されていません | 16.7 | Pre-2020.1 |
MISRA.PRAGMA | ドキュメントにない pragma ディレクティブです | 3.4 | Pre-2020.1 |
MISRA.PTR.ARITH | 代数式または配列インデックス式でポインタが使用されています | 17.1 17.4 | 2020.2 |
MISRA.PTR.CMP.2008 | 比較演算子を使用したポインターの比較は、同じ配列を指していて、範囲内にある場合にのみ適用されます | 17.3 | 2022.1 |
MISRA.PTR.CMP.OBJECT.2008 | 比較演算子を使用したポインターの比較は、同じオブジェクトを指しており、範囲内である場合にのみ適用されます | 17.3 | 2022.1 |
MISRA.PTR.SUB | ポインターの減算は、同じ配列を指している場合にのみ適用されます | 17.2 | 2022.4 |
MISRA.PTR.SUB.OBJECT | ポインターの減算は、同じオブジェクトを指している場合にのみ適用されます | 17.2 | 2022.4 |
MISRA.PTR.TO_PTR_TO_PTR | ポインタ宣言に 2 つ以上のレベルの間接指定があります | 17.5 | Pre-2020.1 |
MISRA.RETURN.NOT_LAST | 関数内で return が最後のステートメントになっていません | 14.7 | Pre-2020.1 |
MISRA.SHIFT.RANGE | シフト演算子の右側のオペランドは範囲外 (左側のオペランドの最大ビット長以上か、または負) です | 12.8 | Pre-2020.1 |
MISRA.SIGNED_CHAR.NOT_NUMERIC | 数値でない値に 'signed char' または 'unsigned char' が使用されています | 6.2 | Pre-2020.1 |
MISRA.SIZEOF.SIDE_EFFECT | sizeof のオペランドに副作用があります | 12.3 | Pre-2020.1 |
MISRA.STDLIB.ABORT | ライブラリ stdlib.h から 'abort'、'exit'、'getenv' または 'system' が使用されています | 20.11 | Pre-2020.1 |
MISRA.STDLIB.ATOI | ライブラリ stdlib.h から 'atof'、'atoi' または 'atol' が使用されています | 20.10 | Pre-2020.1 |
MISRA.STDLIB.ERRNO | エラーインジケーター 'errno' が使用されています | 20.5 | Pre-2020.1 |
MISRA.STDLIB.LONGJMP | setjmp マクロまたは longjmp 関数の使用 | 20.7 | Pre-2020.1 |
MISRA.STDLIB.MEMORY | 動的ヒープメモリ割り当ての使用 | 20.4 | Pre-2020.1 |
MISRA.STDLIB.SIGNAL | signal.h の信号処理装置の使用 | 20.8 | Pre-2020.1 |
MISRA.STDLIB.STDIO | プロダクションコードで入力/出力ライブラリ stdio.h が使用されています | 20.9 | Pre-2020.1 |
MISRA.STDLIB.TIME | ライブラリ time.h の時間処理関数の使用 | 20.12 | Pre-2020.1 |
MISRA.STDLIB.WRONGNAME | 標準ライブラリのマクロ、オブジェクトまたは関数の名前が再使用されています | 20.2 | Pre-2020.1 |
MISRA.STDLIB.WRONGNAME.UNDERSCORE | 予約名が言語エンティティの名前に使用されています | 20.2 | Pre-2020.1 |
MISRA.STMT.NO_COMPOUND | switch、while、do/while または for ステートメントのボディが複合ステートメントではありません | 14.8 | Pre-2020.1 |
MISRA.STMT.NO_EFFECT | そのステートメントは副作用がなく、制御フローを変更しません | 14.2 | Pre-2020.1 |
MISRA.SWITCH.BOOL | switch ステートメントの条件がブール式です | 15.4 | Pre-2020.1 |
MISRA.SWITCH.LABEL | switch のラベルが switch ボディ内の入れ子複合ステートメント内に置かれています | 15.1 | Pre-2020.1 |
MISRA.SWITCH.NODEFAULT | switch ステートメントの最後に default 句がありません | 15.3 | Pre-2020.1 |
MISRA.SWITCH.NO_BREAK | switch 句の最後に break ステートメントまたは throw ステートメントがありません | 15.2 | Pre-2020.1 |
MISRA.SWITCH.NO_CASE | switch ステートメントに case 句がありません | 15.5 | Pre-2020.1 |
MISRA.TOKEN.BADCOM | コメントに不適切な文字列があります | 2.3 | Pre-2020.1 |
MISRA.TOKEN.CPCOM | C++ スタイルのコメントです | 2.2 | Pre-2020.1 |
MISRA.TOKEN.OCTAL.ESCAPE | 8 進数のエスケープ文字列の使用 | 7.1 | Pre-2020.1 |
MISRA.TOKEN.OCTAL.INT | 8 進数の整数定数を使用しています | 7.1 | 2020.4 |
MISRA.TOKEN.WRONGESC | リテラルに不正なエスケープ文字列があります | 4.1 | Pre-2020.1 |
MISRA.TYPE.NAMECLASH.C.2004 | ある名前空間の識別子が他の名前空間の識別子と同じスペルです | 5.6 | 2020.2 |
MISRA.TYPEDEF.NOT_UNIQUE | Typedef 名がその他のエンティティ用に使用されています | 5.3 | Pre-2020.1 |
MISRA.UMINUS.UNSIGNED | 単項マイナス演算子が符号なしオペランドに対して使用されています。 | 12.9 | 2021.2 |
MISRA.UNDEF | 定義のない使用です | 19.6 | Pre-2020.1 |
MISRA.UNDEF.NOTGLOBAL | グローバルレベル以外で定義されていません | 19.5 | Pre-2020.1 |
MISRA.UNDEF.WRONGNAME | 標準ライブラリからの名前が定義されていません | 20.2 | Pre-2020.1 |
MISRA.UNDEF.WRONGNAME.UNDERSCORE | 予約名が定義されていません | 20.2 | Pre-2020.1 |
MISRA.UNION | 和集合が使用されています | 18.4 | Pre-2020.1 |
MISRA.VAR.HIDDEN | 内部のスコープで宣言された識別子によって外部のスコープの識別子が非表示になっています | 5.2 | 2020.2 |
MISRA.VAR.MIN.VIS | 名前の可視性が高すぎます | 8.7 | 2020.1 |
MISRA.VAR.UNIQUE | 識別子がその他の識別子と不整合です | 5.7 | Pre-2020.1 |
MISRA.VAR.UNIQUE.STATIC | 静的ストレージ指定の識別子がその他の識別子と不整合です | 5.5 | Pre-2020.1 |
MISRA.ZERO_EQ.IMPLICIT | 非ブール式が暗黙的にゼロに対してテストされています | 13.2 | Pre-2020.1 |
NUM.OVERFLOW.DF | 起こり得る数値のオーバーフローまたはラップアラウンド | 12.11 | 2022.3 |
PORTING.VAR.EFFECTS | ある使用法が副次的な影響を受ける式で変数が 2 回使用されています | 12.2 | Pre-2020.1 |
SV.RVT.RETVAL_NOTTESTED | 戻り値の無視 | 16.10 | 2021.2 |
UNINIT.HEAP.MIGHT | 未初期化のヒープの使用の可能性 | 9.1 | Pre-2020.1 |
UNINIT.HEAP.MUST | 未初期化のヒープの使用 | 9.1 | Pre-2020.1 |
UNINIT.STACK.ARRAY.MIGHT | 未初期化の配列の可能性 | 9.1 | Pre-2020.1 |
UNINIT.STACK.ARRAY.MUST | 未初期化の配列 | 9.1 | Pre-2020.1 |
UNINIT.STACK.ARRAY.PARTIAL.MUST | 一部が未初期化の配列 | 9.1 | Pre-2020.1 |
UNINIT.STACK.MIGHT | 未初期化の変数の可能性 | 9.1 | Pre-2020.1 |
UNINIT.STACK.MUST | 未初期化の変数 | 9.1 | Pre-2020.1 |
UNREACH.ENUM | enum が取りうる値が原因で、コードは到達不能になっています | 14.1 | 2021.3 |
UNREACH.GEN | 到達不能コード | 14.1 | Pre-2020.1 |
UNREACH.RETURN | 到達不能な void return文 | 14.1 | Pre-2020.1 |
サポートのサマリー
静的に検証不可能な規則の数: 142 個中の 11 個
サポートされている静的に検証可能な規則の数: 131 個中の 124 個
MISRA C:2004 のカバー率: 95% (静的に検証不可能な規則を除く)