EN JP CN

Klocwork チェッカーにマッピングされた MISRA-C 2004 規則

Klocwork チェッカーにマッピングされた MISRA-C 2004 規則
MISRA C 規則Klocwork チェッカー コードと説明
1.1

 Klocwork コンパイラにより履行

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 トライグラフの使用

5.1

MISRA.DEFINE.LONGNAME マクロ名が長すぎます

MISRA.IDENT.LONG 識別子が 31 文字以上です

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 1 つの名前空間の中の識別子が、他の名前空間の中の識別子と同じ綴りになっています

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.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

 未サポート - サポートの予定はありません

8.10

 未サポート - サポートの予定はありません

8.11

MISRA.FUNC.STATIC.REDECL 関数またはオブジェクトの再宣言に 'static' 修飾子がありません

8.12

MISRA.DECL.ARRAY_SIZE 配列の宣言でサイズが不明です

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.2

PORTING.VAR.EFFECTS 1 回の使用が副次的な影響を受けるひとつの式で、変数が 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 単項マイナスのオペランドに符号がありません

12.10

MISRA.COMMA カンマ演算子が使用されています

12.11

MISRA.COMP.WRAPAROUND 条件内でラップアラウンドしています

MISRA.ELIF.WRAPAROUND #elif ディレクティブでラップアラウンドします

MISRA.IF.WRAPAROUND #if ディレクティブでラップアラウンドします

12.12

MISRA.FLOAT.BIT.REPR 浮動小数点値のビット操作結果はストレージのレイアウトによって変わります

12.13

MISRA.INCR_DECR.OTHER 増分または減分の演算子がその他の演算子と混合して式で使用されています

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 ループのカウンターが loop ステートメント内で変更されています

13.7

INVARIANT_CONDITION.GEN 不変条件式

INVARIANT_CONDITION.UNREACH 不変条件式

14.1

UNREACH.GEN 到達不能コード

UNREACH.RETURN 到達不能 void 戻り値

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 または 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 ステートメントのボディが複合ステートメントではありません

14.10

MISRA.IF.NO_ELSE 一連の If/else-if 文が else で終わっていないか、空の 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.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 & 演算子なしで関数のアドレスが使用されています

16.10

 SV.RVT.RETVAL_NOTTESTED により部分的にサポート

17.1

MISRA.PTR.ARITH 代数式または配列インデックス式でポインターが使用されています

17.2

 未サポート - サポートの予定はありません

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 Unionが使用されています

19.1

MISRA.INCL.INSIDE include ディレクティブの前にプリプロセッサ出力トークンがあります

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 Undef が使用されています

19.7

MISRA.DEFINE.FUNC マクロが関数のように定義されています

19.8

MISRA.EXPANSION.NARGS マクロの引数がありません

19.9

MISRA.EXPANSION.DIRECTIVE マクロの引数内にディレクティブのようなトークンがあります

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

20.1

MISRA.DEFINE.WRONGNAME 標準ライブラリからの名前がマクロ名に使用されています

MISRA.DEFINE.WRONGNAME.UNDERSCORE 予約名がマクロ名に使用されています

MISRA.EXPANSION.UNSAFE 安全でないマクロの使用

MISRA.INCL.UNSAFE 安全でないヘッダーのインクルード

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 が使用されています

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 の時間処理関数の使用

21.1

 未サポート - 静的に検証できません

サポートのサマリー

サポート対象合計:121

静的に検証不可能な規則の合計:15

サポートされていない静的に検証可能な規則の合計:6

MISRA C の対象範囲:95.3% (静的に検証不可能な規則を除く)