EN JP CN

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

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

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

注意

指摘コード説明MISRA-C 規則導入 改善

FUNCRET.GEN

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

FUNCRET.IMPLICIT

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

INVARIANT_CONDITION.GEN

不変な条件式13.710.110.2

INVARIANT_CONDITION.UNREACH

不変な条件式13.710.110.2

LOCRET.ARG

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

LOCRET.GLOB

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

LOCRET.RET

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

MISRA.ASM.ENCAPS

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

MISRA.ASSIGN.COND

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

MISRA.ASSIGN.OVERLAP

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

MISRA.BITFIELD.SIGNED

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

MISRA.BITFIELD.SIGNED.UNNAMED

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

MISRA.BITFIELD.TYPE

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

MISRA.BITS.NOT_UNSIGNED

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

MISRA.BITS.NOT_UNSIGNED.PREP

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

MISRA.BUILTIN_NUMERIC

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

MISRA.CAST.CONST

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

MISRA.CAST.FLOAT

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

MISRA.CAST.FUNC_PTR

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

MISRA.CAST.INT

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

MISRA.CAST.PTR

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

MISRA.CAST.PTR.UNRELATED

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

MISRA.CAST.PTR_TO_INT

ポインタと整数型間のキャスト11.39.19.2

MISRA.CAST.UNSIGNED_BITS

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

MISRA.CHAR.NOT_CHARACTER

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

MISRA.CHAR.TRIGRAPH

3 文字表記の使用4.29.19.2

MISRA.COMMA

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

MISRA.COMP.WRAPAROUND

条件内でラップアラウンドしています12.119.29.5

MISRA.CONTINUE

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

MISRA.CT.UNIQUE.ID

識別子がタイプ名と不整合です5.49.19.2, 9.2 SR1

MISRA.CVALUE.IMPL.CAST

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

MISRA.DECL.ARRAY_SIZE

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

MISRA.DECL.FUNC_LOCAL

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

MISRA.DECL.NO_TYPE

宣言から型が抜けています8.29.19.2 SR1

MISRA.DEFINE.BADEXP

不適切なマクロ展開です19.49.19.5

MISRA.DEFINE.FUNC

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

MISRA.DEFINE.LONGNAME

マクロ名が長すぎます5.19.1 

MISRA.DEFINE.NOPARS

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

MISRA.DEFINE.NOTGLOBAL

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

MISRA.DEFINE.SHARP

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

MISRA.DEFINE.SHARP.MANY

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

MISRA.DEFINE.WRONGNAME

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

MISRA.DEFINE.WRONGNAME.UNDERSCORE

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

MISRA.ELIF.DEFINED

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

MISRA.ELIF.OTHERFILE

不適切なファイルでの #elif19.179.1 

MISRA.ELIF.UNDEF

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

MISRA.ELIF.WRAPAROUND

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

MISRA.ELSE.OTHERFILE

不適切なファイルでの #else19.179.1 

MISRA.ENDIF.OTHERFILE

不適切なファイルでの #endif19.179.1 

MISRA.ENUM.INIT

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

MISRA.EXPANSION.DIRECTIVE

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

MISRA.EXPANSION.NARGS

マクロの引数がありません19.89.19.2 SR2

MISRA.EXPANSION.UNSAFE

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

MISRA.EXPR.PARENS.INSUFFICIENT

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

MISRA.EXPR.PARENS.REDUNDANT

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

MISRA.FLOAT.BIT.REPR

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

MISRA.FLOAT_EQUAL

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

MISRA.FOR.COND

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

MISRA.FOR.COND.FLT

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

MISRA.FOR.INCR.CHANGE

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

MISRA.FOR.STMT.CHANGE

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

MISRA.FUNC.ADDR

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

MISRA.FUNC.NOPROT.CALL

関数が呼び出されていますが、プロトタイプがありません8.19.29.2 SR1

MISRA.FUNC.NOPROT.DEF

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

MISRA.FUNC.NO_PARAMS

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

MISRA.FUNC.PARAMS.IDENT

関数の宣言と定義の識別子が一致していません16.49.2 

MISRA.FUNC.RECUR

再帰関数16.29.19.2, 9.2 SR1

MISRA.FUNC.STATIC.REDECL

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

MISRA.FUNC.UNMATCHED.PARAMS

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

MISRA.FUNC.UNNAMED.PARAMS

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

MISRA.FUNC.VARARG

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

MISRA.GOTO

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

MISRA.IDENT.LONG

識別子が 32 文字以上です5.19.19.2

MISRA.IF.DEFINED

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

MISRA.IF.NO_COMPOUND

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

MISRA.IF.NO_ELSE

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

MISRA.IF.UNDEF

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

MISRA.IF.WRAPAROUND

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

MISRA.INCGUARD

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

MISRA.INCL.BAD

非標準の include ディレクティブです19.39.19.2, 11.1

MISRA.INCL.INSIDE

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

MISRA.INCL.SYMS

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

MISRA.INCL.UNSAFE

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

MISRA.INCOMPLETE.STRUCT

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

MISRA.INCOMPLETE.STRUCT.UNNAMED

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

MISRA.INCOMPLETE.UNION

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

MISRA.INCOMPLETE.UNION.UNNAMED

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

MISRA.INCR_DECR.OTHER

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

MISRA.INIT.BRACES

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

MISRA.ITER.ONETERM

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

MISRA.LITERAL.UNSIGNED.SUFFIX

'U' 添え字の付かない符号なし整数リテラルです10.69.19.5

MISRA.LOGIC.OPERAND.NOT_BOOL

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

MISRA.LOGIC.OPERATOR.NOT_BOOL

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

MISRA.LOGIC.PRIMARY

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

MISRA.LOGIC.SIDEEFF

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

MISRA.LOGIC.SIDEEFF.COND

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

MISRA.NULL.STMT

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

MISRA.OBJ.TYPE.COMPAT

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

MISRA.OBJ.TYPE.IDENT

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

MISRA.ONEDEFRULE.FUNC

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

MISRA.ONEDEFRULE.VAR

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

MISRA.PPARAM.NEEDS.CONST

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

MISRA.PRAGMA

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

MISRA.PTR.ARITH

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

MISRA.PTR.TO_PTR_TO_PTR

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

MISRA.RETURN.NOT_LAST

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

MISRA.SHIFT.RANGE

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

MISRA.SIGNED_CHAR.NOT_NUMERIC

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

MISRA.SIZEOF.SIDE_EFFECT

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

MISRA.STDLIB.ABORT

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

MISRA.STDLIB.ATOI

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

MISRA.STDLIB.ERRNO

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

MISRA.STDLIB.LONGJMP

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

MISRA.STDLIB.MEMORY

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

MISRA.STDLIB.SIGNAL

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

MISRA.STDLIB.STDIO

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

MISRA.STDLIB.TIME

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

MISRA.STDLIB.WRONGNAME

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

MISRA.STDLIB.WRONGNAME.UNDERSCORE

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

MISRA.STMT.NO_COMPOUND

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

MISRA.STMT.NO_EFFECT

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

MISRA.SWITCH.BOOL

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

MISRA.SWITCH.LABEL

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

MISRA.SWITCH.NODEFAULT

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

MISRA.SWITCH.NO_BREAK

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

MISRA.SWITCH.NO_CASE

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

MISRA.TOKEN.BADCOM

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

MISRA.TOKEN.CPCOM

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

MISRA.TOKEN.OCTAL.ESCAPE

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

MISRA.TOKEN.OCTAL.INT

8 進数の整数定数を使用しています7.19.1 

MISRA.TOKEN.WRONGESC

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

MISRA.TYPE.NAMECLASH

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

MISRA.TYPEDEF.NOT_UNIQUE

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

MISRA.UMINUS.UNSIGNED

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

MISRA.UNDEF

定義のない使用です19.69.1 

MISRA.UNDEF.NOTGLOBAL

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

MISRA.UNDEF.WRONGNAME

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

MISRA.UNDEF.WRONGNAME.UNDERSCORE

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

MISRA.UNION

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

MISRA.VAR.HIDDEN

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

MISRA.VAR.MIN.VIS

名前は一つの関数でしか使用されていません。8.79.19.2 SR2, 10.1

MISRA.VAR.UNIQUE

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

MISRA.VAR.UNIQUE.STATIC

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

MISRA.ZERO_EQ.IMPLICIT

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

PORTING.VAR.EFFECTS

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

UNINIT.HEAP.MIGHT

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

UNINIT.HEAP.MUST

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

UNINIT.STACK.ARRAY.MIGHT

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

UNINIT.STACK.ARRAY.MUST

未初期化の配列9.1Pre-9.29.2, 9.5

UNINIT.STACK.ARRAY.PARTIAL.MUST

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

UNINIT.STACK.MIGHT

未初期化の変数の可能性9.1Pre-9.29.2, 9.5

UNINIT.STACK.MUST

未初期化の変数9.1Pre-9.29.2, 9.5, 11.2

UNREACH.GEN

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

UNREACH.RETURN

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

サポートのサマリー

サポート対象合計: 121
静的に検証不可能な規則の合計:15
サポートされていない静的に検証可能な規則の合計: 6
MISRA C の対象範囲:95.3% (静的に検証不可能な規則を除く)