MISRA C:2004 チェッカーリファレンス

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

Notes

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

サポートのサマリー

静的に検証不可能な規則の数: 142 個中の 11 個

サポートされている静的に検証可能な規則の数: 131 個中の 124 個

MISRA C:2004 のカバー率: 95% (静的に検証不可能な規則を除く)

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