MISRA C:2004 チェッカーリファレンス - 認証対象

これらのチェッカーでは、MISRA C:2004 規格の違反を検出します。

Notes

  • 規則番号で整理されたこの情報を表示するには、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 2023.2
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 2023.2
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 2024.1
MISRA.FLOAT.BIT.REPR 浮動小数点値のビット操作結果はストレージのレイアウトによって変わります 12.12 Pre-2020.1
MISRA.FLOAT_EQUAL 浮動小数点式のイコールがテストされています 13.3 2023.4
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 2023.2
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 2023.4
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% (静的に検証不可能な規則を除く)

"MISRA"、"MISRA C" および、"MISRA C++" は、The MISRA Consortium Limited の登録商標です。​