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