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

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

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

注記

  • 規則番号で整理されたこの情報を表示するには、Klocwork の認証対象チェッカーにマッピングされた MISRA C:2004 規則 を参照してください。
  • MISRA C チェッカーと MISRA C++ チェッカーにそれぞれ詳細なヘルプが用意されています。この情報はライセンス供与されているため、オンラインではなく Klocwork インストールの一部として利用できます。
指摘コード 説明 規則 導入 改善

FUNCRET.GEN

非 void 関数に戻り値がありません 16.8 Pre-9.2

FUNCRET.IMPLICIT

暗黙的に int を返す非 void 関数に戻り値がありません 16.8 Pre-9.2

INVARIANT_CONDITION.GEN

不変な条件式 13.7 10.1 10.2, 2020.1

INVARIANT_CONDITION.UNREACH

不変な条件式 13.7 10.1 10.2

LOCRET.ARG

関数がローカル変数のアドレスを返しています 17.6 Pre-9.2 9.5

LOCRET.GLOB

関数がローカル変数のアドレスを返しています 17.6 Pre-9.2 9.5

LOCRET.RET

関数がローカル変数のアドレスを返しています 17.6 Pre-9.2 9.5

MISRA.ASM.ENCAPS

アセンブリ言語が分離されていません 2.1 9.1

MISRA.ASSIGN.COND

条件内で代入演算子が使用されています 13.1 9.2

MISRA.ASSIGN.OVERLAP

オブジェクトがオーバーラップするオブジェクトに割り当てられています 18.2 9.5 2019.1

MISRA.BITFIELD.SIGNED

名前付きの符号付きビットフィールドの長さが 2 未満です 6.5 9.1 9.2, 10.4

MISRA.BITFIELD.SIGNED.UNNAMED

名前のない符号付きビットフィールドの長さが 2 未満です 6.5 9.2

MISRA.BITFIELD.TYPE

ビットフィールドのタイプは、符号付き/符号なし整数のいずれでもありません 6.4 9.1 9.2, 11.0, 2021.2

MISRA.BITS.NOT_UNSIGNED

ビット演算のオペランドが符号なし整数ではありません 12.7 9.1 9.2, 9.2 SR1, 9.5, 11.0

MISRA.BITS.NOT_UNSIGNED.PREP

ビット演算のオペランドが符号なし整数ではありません 12.7 11.1

MISRA.BUILTIN_NUMERIC

組み込み数値型が使用されています 6.3 9.1 9.2, 9.2 SR1, 9.5

MISRA.CAST.CONST

キャスト演算により const または volatile がポインターまたは参照から除外されます。 11.5 9.1 9.2, 10.4, 2022.1

MISRA.CAST.FLOAT

自明ではない浮動型の式が広いタイプにキャストされています 10.4 9.1 9.2

MISRA.CAST.FUNC_PTR

関数ポインタと整数型以外の間のキャストです。 11.1 9.1 9.2

MISRA.CAST.INT

自明ではない整数式が広い型または別の符号を持つ型にキャストされています 10.3 9.1 9.2, 9.5

MISRA.CAST.PTR

オブジェクトタイプを指すポインタとオブジェクトタイプを指す別のポインタ間のキャストです 11.4 9.1

MISRA.CAST.PTR.UNRELATED

ポインタ型のオブジェクトを関連のない型にキャストしています 11.2 9.2 9.5

MISRA.CAST.PTR_TO_INT

ポインタと整数型間のキャスト 11.3 9.1 9.2

MISRA.CAST.UNSIGNED_BITS

unsigned char または short でのビット演算の結果は元の型にキャストできません 10.5 9.1

MISRA.CHAR.NOT_CHARACTER

文字でない値に 'char' が使用されています 6.1 9.1 11.2

MISRA.CHAR.TRIGRAPH

3 文字表記の使用 4.2 9.1 9.2

MISRA.COMMA

カンマ演算子が使用されています 12.10 9.1

MISRA.COMP.WRAPAROUND

条件内でラップアラウンドしています 12.11 9.2 9.5, 2020.3

MISRA.CONTINUE

continue ステートメントが使用されています 14.5 9.1

MISRA.CT.UNIQUE.ID

識別子がタグ名と不整合です 5.4 9.1 9.2, 9.2 SR1, 2021.2

MISRA.CVALUE.IMPL.CAST

暗黙の型変換で符号、型サイズ、型の違いにより情報の損失を起こす記述があります。 10.1 10.2 9.2 9.5, 11.0, 2020.3

MISRA.DECL.ARRAY_SIZE

配列の宣言でサイズが不明です 8.12 9.1

MISRA.DECL.FUNC_LOCAL

関数がローカルで宣言されています 8.6 9.1 9.2 SR1

MISRA.DECL.NO_TYPE

宣言から型が抜けています 8.2 9.1 9.2 SR1

MISRA.DEFINE.BADEXP

不適切なマクロ展開です 19.4 9.1 9.5

MISRA.DEFINE.FUNC

マクロが関数のように定義されています 19.7 9.1

MISRA.DEFINE.LONGNAME

マクロ名が長すぎます 5.1 9.1

MISRA.DEFINE.NOPARS

マクロパラメーターに括弧がありません 19.10 9.1

MISRA.DEFINE.NOTGLOBAL

グローバルレベル以外で定義されています 19.5 9.1

MISRA.DEFINE.SHARP

マクロ定義に # 演算子または ## 演算子が使用されています 19.13 9.1

MISRA.DEFINE.SHARP.MANY

マクロ定義に # 演算子または ## 演算子がいくつか使用されています 19.12 9.1

MISRA.DEFINE.WRONGNAME

標準ライブラリからの名前がマクロ名に使用されています 20.1 9.1 9.2 SR2, 9.5

MISRA.DEFINE.WRONGNAME.UNDERSCORE

予約名がマクロ名に使用されています 20.1 9.2 SR2

MISRA.ELIF.DEFINED

#elif ディレクティブで不正な 'defined' が使用されています 19.14 9.1

MISRA.ELIF.OTHERFILE

不適切なファイルでの #elif 19.17 9.1

MISRA.ELIF.UNDEF

#elif ディレクティブでマクロが定義されていません 19.11 9.1

MISRA.ELIF.WRAPAROUND

#elif ディレクティブでラップアラウンドします 12.11 9.1

MISRA.ELSE.OTHERFILE

不適切なファイルでの #else 19.17 9.1

MISRA.ENDIF.OTHERFILE

不適切なファイルでの #endif 19.17 9.1

MISRA.ENUM.INIT

1 番目以外の列挙子が明示的に初期化されていますが、一部の要素が明示的に初期化されていません 9.3 9.1

MISRA.EXPANSION.DIRECTIVE

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

MISRA.EXPANSION.NARGS

マクロの引数がありません 19.8 9.1 9.2 SR2

MISRA.EXPANSION.UNSAFE

安全ではないマクロの使用 20.1 20.5 20.6 20.7 20.8 9.1 9.5

MISRA.EXPR.PARENS.INSUFFICIENT

式の演算子優先規則に制限された依存性が必要です 12.1 10.1.2 2022.1

MISRA.EXPR.PARENS.REDUNDANT

式の演算子優先規則に制限された依存性が必要です 12.1 10.1.2 11.2, 2021.1

MISRA.FLOAT.BIT.REPR

浮動小数点値のビット操作結果はストレージのレイアウトによって変わります 12.12 9.1 9.2 SR2, 11.0

MISRA.FLOAT_EQUAL

浮動小数点式のイコールがテストされています 13.3 9.1 2020.2

MISRA.FOR.COND

for ループの条件ではループカウンターの値が変わりません 13.5 9.1 9.2, 9.2 SR1

MISRA.FOR.COND.FLT

for ループの条件セクションで浮動小数点オブジェクトが使用されています 13.4 9.2 9.5

MISRA.FOR.INCR.CHANGE

for ループの増分式がループカウンターで変化していません 13.5 9.1 2018.1

MISRA.FOR.STMT.CHANGE

for ループのカウンターがループステートメント内で変更されています 13.6 9.2

MISRA.FUNC.ADDR

& 演算子なしで関数のアドレスが使用されています 16.9 9.1 9.2 SR1

MISRA.FUNC.NOPROT.CALL

関数が呼び出されていますが、プロトタイプがありません 8.1 9.2 9.2 SR1, 2018.3, 2020.3

MISRA.FUNC.NOPROT.DEF

関数は定義されていますが、プロトタイプがありません 8.1 9.2 2018.3

MISRA.FUNC.NO_PARAMS

パラメーターのない関数に void パラメータータイプがありません 16.5 9.1

MISRA.FUNC.PARAMS.IDENT

関数の宣言と定義で使用される識別子が一致していません 16.4 9.2

MISRA.FUNC.RECUR

再帰関数 16.2 9.1 9.2, 9.2 SR1

MISRA.FUNC.STATIC.REDECL

関数またはオブジェクトの再宣言に 'static' 修飾子がありません 8.11 9.2

MISRA.FUNC.UNMATCHED.PARAMS

関数に渡される仮引数と実際のパラメーターの数が一致しません 16.6 9.1

MISRA.FUNC.UNNAMED.PARAMS

関数の宣言に名前のないパラメーターがあります 16.3 9.1

MISRA.FUNC.VARARG

関数が可変数の引数を持っています 16.1 9.1

MISRA.GOTO

goto ステートメントが使用されています 14.4 9.1

MISRA.IDENT.LONG

識別子が 32 文字以上です 5.1 9.1 9.2

MISRA.IF.DEFINED

#if ディレクティブで不正な 'defined' が使用されています 19.14 9.1

MISRA.IF.NO_COMPOUND

if/else ステートメントのボディが複合ステートメントではありません 14.9 9.1

MISRA.IF.NO_ELSE

if/else-if ステートメントのチェインが else で終了していないか、または空の else 句で終了しています 14.10 9.1 10.4, 2018.1, 2020.4

MISRA.IF.UNDEF

#if ディレクティブでマクロが定義されていません 19.11 9.1

MISRA.IF.WRAPAROUND

#if ディレクティブでラップアラウンドします 12.11 9.1

MISRA.INCGUARD

インクルードガードが入力されていません 19.15 9.1

MISRA.INCL.BAD

非標準の include ディレクティブです 19.3 9.1 9.2, 11.1

MISRA.INCL.INSIDE

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

MISRA.INCL.SYMS

ヘッダーファイル名に非標準文字が使用されています 19.2 9.1

MISRA.INCL.UNSAFE

安全でないヘッダーのインクルード 20.1 20.12 20.8 20.9 9.1

MISRA.INCOMPLETE.STRUCT

不完全な構造タイプが使用されています 18.1 9.2

MISRA.INCOMPLETE.STRUCT.UNNAMED

名前のない不完全な構造タイプが使用されています 18.1 9.2

MISRA.INCOMPLETE.UNION

不完全な和集合タイプが使用されています 18.1 9.2

MISRA.INCOMPLETE.UNION.UNNAMED

名前のない不完全な和集合タイプが使用されています 18.1 9.2

MISRA.INCR_DECR.OTHER

増分または減分の演算子がその他の演算子と混合して式で使用されています 12.13 9.1 9.2

MISRA.INIT.BRACES

不適切な初期化子が配置を固定しています 9.2 9.1

MISRA.ITER.ONETERM

反復ステートメントに複数の break または for ループ終端への複数の goto があります 14.6 9.1

MISRA.LITERAL.UNSIGNED.SUFFIX

'U' 添え字の付かない符号なし整数リテラルです 10.6 9.1 9.5, 2021.3

MISRA.LOGIC.OPERAND.NOT_BOOL

論理演算のオペランドは実質的にはブール値ではありません 12.6 9.1 9.2 SR1, 9.5

MISRA.LOGIC.OPERATOR.NOT_BOOL

論理演算ではない演算子のオペランドが実質的にはブール値です 12.6 9.1 (for C), 9.2 SR1 (for C++) 11.2

MISRA.LOGIC.PRIMARY

論理 'and' 式または論理 'or' 式のオペランドが 1 次式ではありません 12.5 9.2 SR2

MISRA.LOGIC.SIDEEFF

論理 'and' 式または論理 'or' 式の右側のオペランドは副作用があります 12.4 9.2 10.4

MISRA.LOGIC.SIDEEFF.COND

条件式の分岐式に副作用があります 12.4 9.2

MISRA.NULL.STMT

行上に NULL ステートメント以外のものがあるか、またはコメントが不適切な場所に記述されています 14.3 9.1 9.2

MISRA.OBJ.TYPE.COMPAT

型がその他の宣言の型と互換性がありません 8.4 9.1 11.0

MISRA.OBJ.TYPE.IDENT

型がその他の宣言の型と一致していません 8.3 9.1 9.2

MISRA.ONEDEFRULE.FUNC

ヘッダーファイルでグローバル関数が定義されています 8.5 9.1

MISRA.ONEDEFRULE.VAR

ヘッダーファイルでグローバル変数が定義されています 8.5 9.1 2020.2

MISRA.PPARAM.NEEDS.CONST

ポインタパラメーターを使用しないでアドレスされたオブジェクトを変更していますが、const を指すポインタとして宣言されていません 16.7 9.1 9.2 SR1, 9.5, 10.4

MISRA.PRAGMA

ドキュメントにない pragma ディレクティブです 3.4 9.1

MISRA.PTR.ARITH

代数式または配列インデックス式でポインタが使用されています 17.1 17.4 9.1 2020.2

MISRA.PTR.TO_PTR_TO_PTR

ポインタ宣言に 2 つ以上のレベルの間接指定があります 17.5 9.1 9.2

MISRA.RETURN.NOT_LAST

関数内で return が最後のステートメントになっていません 14.7 9.1 9.2 SR2, 9.5

MISRA.SHIFT.RANGE

シフト演算子の右側のオペランドは範囲外 (左側のオペランドの最大ビット長以上か、または負) です 12.8 9.1 9.2

MISRA.SIGNED_CHAR.NOT_NUMERIC

数値でない値に 'signed char' または 'unsigned char' が使用されています 6.2 9.1 9.2

MISRA.SIZEOF.SIDE_EFFECT

sizeof のオペランドに副作用があります 12.3 9.1

MISRA.STDLIB.ABORT

ライブラリ stdlib.h から 'abort'、'exit'、'getenv' または 'system' が使用されています 20.11 9.1

MISRA.STDLIB.ATOI

ライブラリ stdlib.h から 'atof'、'atoi' または 'atol' が使用されています 20.10 9.1

MISRA.STDLIB.ERRNO

エラーインジケーター 'errno' が使用されています 20.5 9.1

MISRA.STDLIB.LONGJMP

setjmp マクロまたは longjmp 関数の使用 20.7 9.1

MISRA.STDLIB.MEMORY

動的ヒープメモリ割り当ての使用 20.4 9.1

MISRA.STDLIB.SIGNAL

signal.h の信号処理装置の使用 20.8 9.1

MISRA.STDLIB.STDIO

プロダクションコードで入力/出力ライブラリ stdio.h が使用されています 20.9 9.1

MISRA.STDLIB.TIME

ライブラリ time.h の時間処理関数の使用 20.12 9.1

MISRA.STDLIB.WRONGNAME

標準ライブラリのマクロ、オブジェクトまたは関数の名前が再使用されています 20.2 9.1 9.2 SR2

MISRA.STDLIB.WRONGNAME.UNDERSCORE

予約名が言語エンティティの名前に使用されています 20.2 9.2 SR2

MISRA.STMT.NO_COMPOUND

switch、while、do/while または for ステートメントのボディが複合ステートメントではありません 14.8 9.1

MISRA.STMT.NO_EFFECT

そのステートメントは副作用がなく、制御フローを変更しません 14.2 9.1 9.2, 9.2 SR1

MISRA.SWITCH.BOOL

switch ステートメントの条件がブール式です 15.4 9.1

MISRA.SWITCH.LABEL

switch のラベルが switch ボディ内の入れ子複合ステートメント内に置かれています 15.1 9.1

MISRA.SWITCH.NODEFAULT

switch ステートメントの最後に default 句がありません 15.3 9.2 9.2 SR1

MISRA.SWITCH.NO_BREAK

switch 句の最後に break ステートメントまたは throw ステートメントがありません 15.2 9.1 9.2

MISRA.SWITCH.NO_CASE

switch ステートメントに case 句がありません 15.5 9.1 9.2

MISRA.TOKEN.BADCOM

コメントに不適切な文字列があります 2.3 9.1

MISRA.TOKEN.CPCOM

C++ スタイルのコメントです 2.2 9.1

MISRA.TOKEN.OCTAL.ESCAPE

8 進数のエスケープ文字列の使用 7.1 9.1

MISRA.TOKEN.OCTAL.INT

8 進数の整数定数を使用しています 7.1 9.1 2020.4

MISRA.TOKEN.WRONGESC

リテラルに不正なエスケープ文字列があります 4.1 9.1

MISRA.TYPE.NAMECLASH.C.2004

ある名前空間の識別子が他の名前空間の識別子と同じスペルです 5.6 9.1 9.2, 9.2 SR2, 9.5, 2020.2

MISRA.TYPEDEF.NOT_UNIQUE

Typedef 名がその他のエンティティ用に使用されています 5.3 9.1 9.2, 9.5

MISRA.UMINUS.UNSIGNED

単項マイナス演算子が符号なしオペランドに対して使用されています。 12.9 9.1 2021.2

MISRA.UNDEF

定義のない使用です 19.6 9.1

MISRA.UNDEF.NOTGLOBAL

グローバルレベル以外で定義されていません 19.5 9.1

MISRA.UNDEF.WRONGNAME

標準ライブラリからの名前が定義されていません 20.2 9.1 9.5

MISRA.UNDEF.WRONGNAME.UNDERSCORE

予約名が定義されていません 20.2 9.2 SR2

MISRA.UNION

和集合が使用されています 18.4 9.1

MISRA.VAR.HIDDEN

内部のスコープで宣言された識別子によって外部のスコープの識別子が非表示になっています 5.2 9.2 9.2 SR1, 9.5, 10.1, 2020.2

MISRA.VAR.MIN.VIS

名前の可視性が高すぎます 8.7 9.1 9.2 SR2, 10.1. 2020.1

MISRA.VAR.UNIQUE

識別子がその他の識別子と不整合です 5.7 9.2 9.2 SR2

MISRA.VAR.UNIQUE.STATIC

静的ストレージ指定の識別子がその他の識別子と不整合です 5.5 9.2

MISRA.ZERO_EQ.IMPLICIT

非ブール式が暗黙的にゼロに対してテストされています 13.2 9.1 9.2 SR1

PORTING.VAR.EFFECTS

ある使用法が副次的な影響を受ける式で変数が 2 回使用されています 12.2 9.2 9.5

SV.RVT.RETVAL_NOTTESTED

戻り値の無視 16.10 Pre-9.2 2021.2, 2021.3, 2022.1

UNINIT.HEAP.MIGHT

未初期化のヒープの使用の可能性 9.1 Pre-9.2 9.2, 9.5

UNINIT.HEAP.MUST

未初期化のヒープの使用 9.1 Pre-9.2 9.2, 9.5

UNINIT.STACK.ARRAY.MIGHT

未初期化の配列の可能性 9.1 Pre-9.2 9.2, 9.5

UNINIT.STACK.ARRAY.MUST

未初期化の配列 9.1 Pre-9.2 9.2, 9.5, 2021.2, 2021.4, 2022.1

UNINIT.STACK.ARRAY.PARTIAL.MUST

一部が未初期化の配列 9.1 Pre-9.2 9.2, 9.5, 2022.1

UNINIT.STACK.MIGHT

未初期化の変数の可能性 9.1 Pre-9.2 9.2, 9.5, 2018.2, 2020.2, 2022.1

UNINIT.STACK.MUST

未初期化の変数 9.1 Pre-9.2 9.2, 9.5, 11.2, 2020.3, 2021.2, 2021.4

UNREACH.ENUM

enum が取りうる値が原因で、コードは到達不能になっています 14.1 2021.3

UNREACH.GEN

到達不能コード 14.1 Pre-9.2 9.2, 9.5, 10.1, 10.3, 10.4, 11.2, 2020.3, 2021.3

UNREACH.RETURN

到達不能な void return文 14.1 Pre-9.2 9.2, 9.5, 11.2

サポートのサマリー

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

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

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