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