Klocwork の認証対象チェッカーにマッピングされた MISRA C:2012 (改訂 1) 規則

MISRA C:2012 C90

ガイドライン カテゴリ Decidable (決定可能)ですか? チェッカー名および説明
Dir. 1.1 必要(Required) いいえ

Dir. 2.1 必要(Required) いいえ

Dir. 3.1 必要(Required) いいえ

Dir. 4.1 必要(Required) いいえ

ABV.ANY_SIZE_ARRAY   バッファオーバーフロー - 配列インデックスが範囲外

ABV.GENERAL   バッファオーバーフロー - 配列インデックスが範囲外

ABV.GENERAL.MULTIDIMENSION   バッファオーバーフロー - 配列インデックスが範囲外

ABV.ITERATOR   バッファオーバーフロー - 配列インデックスが範囲外の可能性

ABV.MEMBER   バッファオーバーフロー - 配列インデックスが範囲外

ABV.STACK   バッファオーバーフロー - ローカル配列インデックスが範囲外

ABV.UNICODE.BOUND_MAP   文字関数のマッピング時のバッファオーバーフロー

ABV.UNICODE.FAILED_MAP   関数のマッピングに失敗します

ABV.UNICODE.NNTS_MAP   文字関数のマッピング時のバッファオーバーフロー

ABV.UNICODE.SELF_MAP   関数のマッピングに失敗します

ABV.UNKNOWN_SIZE   バッファオーバーフロー - 配列インデックスが範囲外

DBZ.CONST   ゼロ定数による除算が発生しました

DBZ.CONST.CALL   値 '0' が除数としてこの値を使用できる関数に渡されます

DBZ.GENERAL   ゼロ除算が発生した可能性があります

DBZ.ITERATOR   ループ反復子でゼロ除算が発生した可能性があります

DBZ.ITERATOR.CALL   関数呼出しでゼロ除算が発生した可能性があります

NUM.OVERFLOW.DF   起こり得る数値のオーバーフローまたはラップアラウンド

UNINIT.CTOR.MIGHT   コンストラクタにおける未初期化の変数の可能性

UNINIT.CTOR.MUST   コンストラクタにおける未初期化の変数

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   未初期化の変数

Dir. 4.2 推奨(Advisory) いいえ

MISRA.ASM.ENCAPS   アセンブリ言語が分離されていません

Dir. 4.3 必要(Required) いいえ

MISRA.ASM.ENCAPS   アセンブリ言語が分離されていません

Dir. 4.4 推奨(Advisory) いいえ

Dir. 4.5 推奨(Advisory) いいえ

Dir. 4.6 推奨(Advisory) いいえ

MISRA.BUILTIN_NUMERIC   組み込み数値型が使用されています

Dir. 4.7 必要(Required) いいえ

SV.RVT.RETVAL_NOTTESTED   戻り値の無視

Dir. 4.8 推奨(Advisory) いいえ

Dir. 4.9 推奨(Advisory) いいえ

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

Dir. 4.10 必要(Required) いいえ

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

Dir. 4.11 必要(Required) いいえ

Dir. 4.12 必要(Required) いいえ

Dir. 4.13 推奨(Advisory) いいえ

Dir. 4.14 必要(Required) いいえ

ABV.TAINTED   未検証の入力によるバッファオーバーフロー

NNTS.TAINTED   未検証のユーザー入力が原因のバッファオーバーフロー - 非 NULL 終了文字列

SV.TAINTED.ALLOC_SIZE   メモリ割り当て時の未検証の整数の使用

SV.TAINTED.BINOP   バイナリ演算での未検証整数値の使用

SV.TAINTED.CALL.BINOP   バイナリ演算での未検証整数値の使用

SV.TAINTED.CALL.DEREF   未検証ポインターの逆参照

SV.TAINTED.CALL.INDEX_ACCESS   関数呼び出し時の配列インデックスとしての未検証の整数の使用

SV.TAINTED.CALL.LOOP_BOUND   関数呼び出しのループ条件での未検証の整数の使用

SV.TAINTED.DEREF   未検証ポインターの逆参照

SV.TAINTED.FMTSTR   書式文字列での未検証データの使用

SV.TAINTED.INDEX_ACCESS   配列インデックスとしての未検証の整数の使用

SV.TAINTED.INJECTION   コマンドインジェクション

SV.TAINTED.LOOP_BOUND   ループ条件での未検証の整数の使用

SV.TAINTED.PATH_TRAVERSAL   パストラバーサルでの未検証データの使用

SV.TAINTED.SECURITY_DECISION   セキュリティ決定

1.1 必要(Required) はい

1.2 推奨(Advisory) いいえ

MISRA.LANG.EXTENSIONS   言語拡張は使用するべきではありません

1.3 必要(Required) いいえ

2.1 必要(Required) いいえ

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

UNREACH.GEN   到達不能コード

UNREACH.RETURN   到達不能な void return文

2.2 必要(Required) いいえ

EFFECT   ステートメントの影響はありません

LV_UNUSED.GEN   ローカル変数は使用されません

VA_UNUSED.GEN   値を割り当て後に使用しません

VA_UNUSED.INIT   値を初期化後に使用しません

2.3 推奨(Advisory) はい

2.4 推奨(Advisory) はい

2.5 推奨(Advisory) はい

2.6 推奨(Advisory) はい

LA_UNUSED   ラベルが使用されていません

2.7 推奨(Advisory) はい

MISRA.FUNC.UNUSEDPAR.2012   関数に未使用のパラメーターがあります

3.1 必要(Required) はい

MISRA.TOKEN.BADCOM   コメントに不適切な文字列があります

4.1 必要(Required) はい

MISRA.TOKEN.UNTERMINATED.ESCAPE.2012   文字列リテラルに終端されていないエスケープシーケンスがあります

4.2 推奨(Advisory) はい

MISRA.CHAR.TRIGRAPH   3 文字表記の使用

5.1 必要(Required) はい

5.2 必要(Required) はい

MISRA.IDENT.DISTINCT.C90.2012   同一のスコープまたは同一の名前空間で宣言された識別子が区別されていません

5.3 必要(Required) はい

MISRA.VAR.HIDDEN   内部のスコープで宣言された識別子によって外部のスコープの識別子が非表示になっています

5.4 必要(Required) はい

MISRA.DEFINE.NOT_DISTINCT.C90.2012   識別子名が長すぎます

5.5 必要(Required) はい

5.6 必要(Required) はい

MISRA.TYPEDEF.NOT_UNIQUE.2012   Typedef 名がその他のエンティティ用に使用されています

5.7 必要(Required) はい

MISRA.CT.UNIQUE.ID.2012   識別子がタグ名と不整合です

5.8 必要(Required) はい

MISRA.IDENT.NONUNIQUE.EXTERNAL.2012   外部リンクを持つオブジェクトまたは関数を定義する識別子は一意でなければなりません。

5.9 推奨(Advisory) はい

MISRA.IDENT.NONUNIQUE.INTERNAL.2012   内部リンクを持つオブジェクトまたは関数を定義する識別子は一意でなければなりません。

6.1 必要(Required) はい

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

6.2 必要(Required) はい

MISRA.BITFIELD.SIGNED   名前付きの符号付きビットフィールドの長さが 2 未満です

7.1 必要(Required) はい

MISRA.TOKEN.OCTAL.INT   8 進数の整数定数を使用しています

7.2 必要(Required) はい

MISRA.LITERAL.UNSIGNED.SUFFIX   'U' 添え字の付かない符号なし整数リテラルです

7.3 必要(Required) はい

MISRA.TOKEN.L.SUFFIX.FLOAT   浮動小数点定数では、小文字 "l" 接尾辞を使用

MISRA.TOKEN.L.SUFFIX.INT   整数定数では、小文字 "l" 接尾辞を使用

7.4 必要(Required) はい

MISRA.STRING_LITERAL.NON_CONST.2012   オブジェクトの種類が const-qualified char のポインターでない限り、文字列リテラルはオブジェクトに割り当てられません

8.1 必要(Required) はい

MISRA.DECL.NO_TYPE   宣言から型が抜けています

8.2 必要(Required) はい

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

MISRA.FUNC.PROT_FORM.KR.2012   関数タイプはプロトタイプ形式です

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

MISRA.FUNC.UNNAMED.PARAMS   関数の宣言に名前のないパラメーターがあります

8.3 必要(Required) はい

8.4 必要(Required) はい

MISRA.FUNC.NOPROT.DEF.2012   関数は定義されていますが、プロトタイプがありません

8.5 必要(Required) はい

8.6 必要(Required) はい

8.7 推奨(Advisory) はい

8.8 必要(Required) はい

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

8.9 推奨(Advisory) はい

8.11 推奨(Advisory) はい

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

8.12 必要(Required) はい

MISRA.ENUM.IMPLICIT.VAL.NON_UNIQUE.2012   暗黙的列挙子値は一意ではありません

8.13 推奨(Advisory) いいえ

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

9.1 必須(Mandatory) いいえ

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 必要(Required) はい

MISRA.INIT.BRACES.2012   集計または共用体の初期化子が波括弧で囲まれていません

9.3 必要(Required) はい

MISRA.INIT.PARTIAL.2012   配列が部分的に初期化されています

10.1 必要(Required) はい

MISRA.ETYPE.INAPPR.OPERAND.BINOP.2012   バイナリ演算子へのオペランドには、不適切な基本タイプがあります

MISRA.ETYPE.INAPPR.OPERAND.INDEXPR.2012   インデックス式に、不適切な基本タイプがあります

MISRA.ETYPE.INAPPR.OPERAND.TERNOP.2012   三項演算子への最初のオペランドには、不適切な基本タイプがあります

MISRA.ETYPE.INAPPR.OPERAND.UNOP.2012   単項演算子へのオペランドには、不適切な基本タイプがあります

10.2 必要(Required) はい

MISRA.ETYPE.INAPPR.CHAR.2012   加算または減算演算で、基本的な文字タイプの不適切な使用法。

10.3 必要(Required) はい

MISRA.ETYPE.ASSIGN.2012   より狭い基本タイプ、または、異なる基本タイプカテゴリーのオブジェクトへの割り当て

10.4 必要(Required) はい

MISRA.ETYPE.CATEGORY.DIFFERENT.2012   通常の算術演算変換が実行される演算子のオペランドに、同じ基本タイプカテゴリーがありません。

10.5 推奨(Advisory) はい

MISRA.ETYPE.INAPPR.CAST.2012   式の値は、不適切な基本タイプへのキャストです

10.6 必要(Required) はい

MISRA.ETYPE.COMP.ASSIGN.2012   複合式の値は、より広い基本タイプを持つオブジェクトに割り当てられました。

10.7 必要(Required) はい

MISRA.ETYPE.COMP.CAST.IMPL.WIDER.2012   通常の算術演算変換が実行される演算子のオペランドとして使用される複合式には、より広い基本タイプを持つ他のオペランドがあります。

10.8 必要(Required) はい

MISRA.ETYPE.COMP.CAST.EXPL.DIFFERENT.2012   複合式の値は、異なる基本タイプカテゴリーへのキャストです

MISRA.ETYPE.COMP.CAST.EXPL.WIDER.2012   複合式の値は、より広い基本タイプへのキャストです

11.1 必要(Required) はい

MISRA.CAST.FUNC_PTR.2012   関数を指すポインタと、別の非互換タイプとの間で実行された変換

11.2 必要(Required) はい

MISRA.CAST.INCOMPLETE_PTR_TO_ANY.2012   不完全なタイプ を指すポインタと、別のタイプとの間で実行された変換

11.3 必要(Required) はい

MISRA.CAST.OBJ_PTR_TO_OBJ_PTR.2012   オブジェクト タイプを指すポインタと、異なるオブジェクト タイプを指す別のポインタとの間のキャスト

11.4 推奨(Advisory) はい

MISRA.CAST.OBJ_PTR_TO_INT.2012   オブジェクトを指すポインタと、整数タイプとの間で実行された変換

11.5 推奨(Advisory) はい

MISRA.CAST.VOID_PTR_TO_OBJ_PTR.2012   void ポインタから、オブジェクトを指すポインタに実行された変換

11.6 必要(Required) はい

MISRA.CAST.VOID_PTR_TO_INT.2012   void を指すポインタと算術演算タイプとの間のキャスト

11.7 必要(Required) はい

MISRA.CAST.OBJ_PTR_TO_NON_INT.2012   オブジェクトを指すポインタと、非整数算術演算タイプとの間のキャスト

11.8 必要(Required) はい

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

11.9 必要(Required) はい

MISRA.LITERAL.NULL.PTR.CONST.2012   マクロ NULL は、唯一許可された整数 null ポインター定数のフォームです。

12.1 推奨(Advisory) はい

MISRA.EXPR.PARENS.2012   式内の演算子の優先度は明示的にする必要があります。

MISRA.EXPR.PARENS.SIZEOF.2012   sizeof 演算子のオペランドは括弧に入れる必要があります。

12.2 必要(Required) いいえ

MISRA.SHIFT.RANGE.2012   シフト演算子の右側のオペランドは範囲外です - 左側のオペランドの基本タイプのサイズ以上か、または負

12.3 推奨(Advisory) はい

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

12.4 推奨(Advisory) はい

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

12.5 必須(Mandatory) はい

MISRA.EXPR.SIZEOF.ARRAY_PARAM.2012_AMD1   sizeof 演算子に「配列型」として宣言された関数パラメータとなっているオペランドが含まれています。

13.2 必要(Required) いいえ

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

13.3 推奨(Advisory) はい

MISRA.INCR_DECR.SIDEEFF.2012   インクリメント (++) またはデクリメント (--) 演算子を含む完全な式では、インクリメントまたはデクリメント演算子によって生じる以外に他の副作用が存在してはなりません

13.4 推奨(Advisory) はい

MISRA.ASSIGN.SUBEXPR.2012   代入演算子の結果が使用されます

13.5 必要(Required) いいえ

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

13.6 必須(Mandatory) はい

MISRA.SIZEOF.SIDE_EFFECT   sizeof のオペランドに副作用があります

14.1 必要(Required) いいえ

MISRA.FOR.COUNTER.FLT   for ループのカウンターが浮動小数点タイプです

14.2 必要(Required) いいえ

14.3 必要(Required) いいえ

INVARIANT_CONDITION.GEN   不変な条件式

INVARIANT_CONDITION.UNREACH   不変な条件式

14.4 必要(Required) はい

MISRA.STMT.COND.NOT_BOOLEAN.2012   'if' ステートメントまたは 'loop' ステートメントの制御式が 'Essentially Boolean' 型ではありません

15.1 推奨(Advisory) はい

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

15.2 必要(Required) はい

MISRA.GOTO.AFTER_LABEL.2012   Goto は、同じ関数で前に宣言されたラベルにジャンプします。

15.3 必要(Required) はい

MISRA.GOTO.NESTED.2012   goto に参照されたラベルは、このブロック、または、それを囲むブロックの中にありません。

15.4 推奨(Advisory) はい

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

15.5 推奨(Advisory) はい

MISRA.RETURN.NOT_LAST   関数内で return が最後のステートメントになっていません

15.6 必要(Required) はい

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

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

15.7 必要(Required) はい

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

16.1 必要(Required) はい

MISRA.SWITCH.WELL_FORMED.2012   すべての switch ステートメントは形式が適切である必要があります。

16.2 必要(Required) はい

MISRA.SWITCH.WELL_FORMED.NESTED_LABEL.2012   switch ラベルは、最も近くで囲い込む複合ステートメントが switch ステートメントの本文の場合にのみ使用されます。

16.3 必要(Required) はい

MISRA.SWITCH.WELL_FORMED.BREAK.2012   条件なしの break ステートメントで各 switch 句を終了するべきです。

16.4 必要(Required) はい

MISRA.SWITCH.WELL_FORMED.DEFAULT.2012   各 switch ステートメントはデフォルトラベルを有するべきです。

16.5 必要(Required) はい

MISRA.SWITCH.WELL_FORMED.DEFAULT.FIRST_OR_LAST.2012   デフォルトのラベルが switch ステートメントの最初または最後の switch ラベルのいずれかとして表示されるべきです。

16.6 必要(Required) はい

MISRA.SWITCH.WELL_FORMED.TWO_CLAUSES.2012   各 switch ステートメントは少なくとも 2 つの switch 句を有するべきです。

16.7 必要(Required) はい

MISRA.SWITCH.COND.BOOL.2012   switch 文は基本的にブールデータ型を有しているべきではありません。

17.1 必要(Required) はい

MISRA.FUNC.VARARG   関数が可変数の引数を持っています

17.2 必要(Required) いいえ

MISRA.FUNC.RECUR   再帰関数

17.3 必須(Mandatory) はい

MISRA.FUNC.NODECL.CALL.2012   関数は暗黙的に宣言されました

17.4 必須(Mandatory) はい

FUNCRET.GEN   非 void 関数に戻り値がありません

FUNCRET.IMPLICIT   暗黙的に int を返す非 void 関数に戻り値がありません

17.5 推奨(Advisory) いいえ

17.7 必要(Required) はい

MISRA.FUNC.UNUSEDRET.2012   非 void 関数の戻り値を使用してください

17.8 推奨(Advisory) いいえ

MISRA.FUNC.MODIFIEDPAR.2012   関数パラメーターは変更してはなりません

18.1 必要(Required) いいえ

ABV.GENERAL   バッファオーバーフロー - 配列インデックスが範囲外

ABV.GENERAL.MULTIDIMENSION   バッファオーバーフロー - 配列インデックスが範囲外

ABV.STACK   バッファオーバーフロー - ローカル配列インデックスが範囲外

MISRA.PTR.ARITH.NOT_SAME.2012   ポインターオペランドの計算から得られるポインターは、そのポインターオペランドと同じ配列の要素をアドレス指定します

18.2 必要(Required) いいえ

MISRA.PTR.SUB   ポインターの減算は、同じ配列を指している場合にのみ適用されます

MISRA.PTR.SUB.OBJECT   ポインターの減算は、同じオブジェクトを指している場合にのみ適用されます

18.3 必要(Required) いいえ

MISRA.PTR.CMP.2008   比較演算子を使用したポインターの比較は、同じ配列を指していて、範囲内にある場合にのみ適用されます

MISRA.PTR.CMP.OBJECT.2008   比較演算子を使用したポインターの比較は、同じオブジェクトを指しており、範囲内である場合にのみ適用されます

18.4 推奨(Advisory) はい

MISRA.PTR.ARITH.2012   演算式にポインターが使用されています

18.5 推奨(Advisory) はい

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

18.6 必要(Required) いいえ

LOCRET.ARG   関数がローカル変数のアドレスを返しています

LOCRET.GLOB   関数がローカル変数のアドレスを返しています

LOCRET.RET   関数がローカル変数のアドレスを返しています

18.7 必要(Required) はい

MISRA.MEMB.FLEX_ARRAY.2012   柔軟な配列メンバーは宣言しないでください

19.1 必須(Mandatory) はい

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

19.2 推奨(Advisory) はい

MISRA.UNION   和集合が使用されています

20.1 推奨(Advisory) はい

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

20.2 必要(Required) はい

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

20.3 必要(Required) はい

MISRA.INCL.BAD   非標準の include ディレクティブです

20.4 必要(Required) はい

MISRA.DEFINE.WRONGNAME.C90.2012   マクロはキーワードと同じ名前で定義してはなりません

20.5 推奨(Advisory) はい

MISRA.UNDEF   定義のない使用です

20.6 必要(Required) はい

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

20.7 必要(Required) はい

20.8 必要(Required) はい

MISRA.ELIF.COND.NOT_BOOL.2012   #elif 条件が 0 または 1 ではありません

MISRA.IF.COND.NOT_BOOL.2012   #if 条件が 0 または 1 ではありません

20.9 必要(Required) はい

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

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

20.10 推奨(Advisory) はい

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

20.11 必要(Required) はい

MISRA.DEFINE.SHARP.ORDER.2012   複数の '#' または '##' の評価の順番が指定されていません

20.12 必要(Required) はい

MISRA.DEFINE.SHARP.REPLACE.2012   それ自身さらなるマクロ置換の影響を受ける、'#' または '##' 演算子のオペランドとして使用されるマクロパラメーターは、これらの演算子のオペランドとしてのみ使用される。

20.13 必要(Required) はい

MISRA.USE.UNKNOWNDIR   不明なプリプロセッサディレクティブが使用されています

20.14 必要(Required) はい

MISRA.ELIF.OTHERFILE   不適切なファイルでの #elif

MISRA.ELSE.OTHERFILE   不適切なファイルでの #else

MISRA.ENDIF.OTHERFILE   不適切なファイルでの #endif

21.1 必要(Required) はい

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

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

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

MISRA.UNDEF.WRONGNAME.UNDERSCORE   予約名が定義されていません

21.2 必要(Required) はい

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

MISRA.STDLIB.WRONGNAME.UNDERSCORE   予約名が言語エンティティの名前に使用されています

21.3 必要(Required) はい

MISRA.STDLIB.MEMORY   動的ヒープメモリ割り当ての使用

21.4 必要(Required) はい

MISRA.STDLIB.LONGJMP   setjmp マクロまたは longjmp 関数の使用

21.5 必要(Required) はい

MISRA.INCL.SIGNAL.2012   標準ヘッダーファイル signal.h は使用しない

MISRA.STDLIB.SIGNAL   signal.h の信号処理装置の使用

21.6 必要(Required) はい

MISRA.INCL.STDIO.2012   標準ヘッダーファイル stdio.h は使用しない

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

21.7 必要(Required) はい

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

21.8 必要(Required) はい

MISRA.STDLIB.ABORT.2012_AMD1   ライブラリ stdlib.h の 'abort'、'exit'、または 'system' の使用

21.9 必要(Required) はい

MISRA.STDLIB.BSEARCH.2012   ライブラリ stdlib.h の 'bsearch' または 'qsort' が使用されています

21.10 必要(Required) はい

MISRA.INCL.TIME.2012   標準ヘッダーファイル time.h は使用しない

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

21.13 必須(Mandatory) いいえ

MISRA.STDLIB.CTYPE.RANGE.2012_AMD1   ctype.h で関数に渡される値はすべて unsigned char として表現できるか、または値 EOF でなければなりません

21.14 必要(Required) いいえ

MISRA.MEMCMP.NTS.2012_AMD1   memcmp 関数は、null 以外で終わる文字列を比較するためにのみ使用しなければならない

MISRA.MEMCMP.NTS.GLOBAL.2012_AMD1   memcmp 関数は、null 以外で終わる文字列を比較するためにのみ使用しなければならない

21.15 必要(Required) はい

MISRA.STDLIB.INCOMPAT_ARGS.2012_AMD1   Memcpy、memmove、または memcmp へのポインタ引数は互換性のある型へのポインタではありません

21.16 必要(Required) はい

21.17 必須(Mandatory) いいえ

ABV.ANY_SIZE_ARRAY   バッファオーバーフロー - 配列インデックスが範囲外

ABV.GENERAL   バッファオーバーフロー - 配列インデックスが範囲外

ABV.GENERAL.MULTIDIMENSION   バッファオーバーフロー - 配列インデックスが範囲外

ABV.MEMBER   バッファオーバーフロー - 配列インデックスが範囲外

ABV.STACK   バッファオーバーフロー - ローカル配列インデックスが範囲外

ABV.UNKNOWN_SIZE   バッファオーバーフロー - 配列インデックスが範囲外

NNTS.MIGHT   バッファオーバーフロー - 非 NULL 終了文字列

NNTS.MUST   バッファオーバーフロー - 非 NULL 終了文字列

21.18 必須(Mandatory) いいえ

ABV.ANY_SIZE_ARRAY   バッファオーバーフロー - 配列インデックスが範囲外

ABV.GENERAL   バッファオーバーフロー - 配列インデックスが範囲外

ABV.GENERAL.MULTIDIMENSION   バッファオーバーフロー - 配列インデックスが範囲外

ABV.MEMBER   バッファオーバーフロー - 配列インデックスが範囲外

ABV.STACK   バッファオーバーフロー - ローカル配列インデックスが範囲外

ABV.UNKNOWN_SIZE   バッファオーバーフロー - 配列インデックスが範囲外

21.19 必須(Mandatory) いいえ

MISRA.STDLIB.ILLEGAL_WRITE.2012_AMD1   標準ライブラリ関数 localeconv、getenv、setlocale、または strerror が返すポインターは、必ずそれらが const-qualified 型を指すポインターを持つかのように使用する必要があります。

21.20 必須(Mandatory) いいえ

MISRA.STDLIB.ILLEGAL_REUSE.2012_AMD1   標準ライブラリ関数 asctime または同様の関数によって返されるポインタは、同じ関数の後続の呼び出しに続いては使用しません

22.1 必要(Required) いいえ

FREE.INCONSISTENT   メモリの解放が矛盾しています

MLK.MIGHT   メモリリークの可能性

MLK.MUST   メモリリーク

MLK.RET.MIGHT   メモリリークの可能性

MLK.RET.MUST   メモリリーク

RH.LEAK   リソースリーク

22.2 必須(Mandatory) いいえ

FMM.MIGHT   メモリの解放の不一致の可能性

FMM.MUST   メモリの解放の不一致

FNH.MIGHT   非ヒープメモリの解放の可能性

FNH.MUST   非ヒープメモリの解放

FUM.GEN.MIGHT   未割り当てメモリの解放の可能性

FUM.GEN.MUST   未割り当てメモリの解放

22.3 必要(Required) いいえ

MISRA.RESOURCES.FILE.OPEN_READ_WRITE.2012   同じファイルに対して複数のストリームが開かれています

22.4 必須(Mandatory) いいえ

MISRA.RESOURCES.FILE.READ_ONLY_WRITE.2012   読み取り専用として開かれたストリームに書き込んではなりません

22.5 必須(Mandatory) いいえ

MISRA.FILE_PTR.DEREF.2012   FILE オブジェクトへのポインターは逆参照してはなりません

MISRA.FILE_PTR.DEREF.CAST.2012   オブジェクトは FILE ポインターにキャストされており、これを逆参照してはなりません。

MISRA.FILE_PTR.DEREF.INDIRECT.2012   FILE オブジェクトへのポインターは、システム関数で間接的に逆参照してはなりません

MISRA.FILE_PTR.DEREF.RETURN.2012   FILE オブジェクト(関数の戻り値)へのポインターは逆参照してはなりません

22.6 必須(Mandatory) いいえ

MISRA.RESOURCES.FILE.USE_AFTER_CLOSE.2012   FILE を指し示すポインターの値は、関連するストリームが閉じられたあとは使用しないでください

22.7 必要(Required) いいえ

MISRA.STDLIB.EOF.BAD_CMP.2012_AMD1   マクロ EOF は、EOF を返すことができる標準ライブラリ関数からの未変更の戻り値とのみ比較されなければなりません。

22.8 必要(Required) いいえ

CXX.ERRNO.NOT_SET   ライブラリ関数を呼び出す前に、errno はゼロにリセットされていない

22.9 必要(Required) いいえ

CXX.ERRNO.NOT_CHECKED   ライブラリ関数を呼び出した後に、errno の条件チェックが欠落している

22.10 必要(Required) いいえ

CXX.ERRNO.INCORRECTLY_CHECKED   ライブラリ関数を呼び出した後に、errno の条件チェックは必要ない

MISRA C:2012 C99

ガイドライン カテゴリ Decidable (決定可能)ですか? チェッカー名および説明
Dir. 1.1 必要(Required) いいえ

Dir. 2.1 必要(Required) いいえ

Dir. 3.1 必要(Required) いいえ

Dir. 4.1 必要(Required) いいえ

ABV.ANY_SIZE_ARRAY   バッファオーバーフロー - 配列インデックスが範囲外

ABV.GENERAL   バッファオーバーフロー - 配列インデックスが範囲外

ABV.GENERAL.MULTIDIMENSION   バッファオーバーフロー - 配列インデックスが範囲外

ABV.ITERATOR   バッファオーバーフロー - 配列インデックスが範囲外の可能性

ABV.MEMBER   バッファオーバーフロー - 配列インデックスが範囲外

ABV.STACK   バッファオーバーフロー - ローカル配列インデックスが範囲外

ABV.UNICODE.BOUND_MAP   文字関数のマッピング時のバッファオーバーフロー

ABV.UNICODE.FAILED_MAP   関数のマッピングに失敗します

ABV.UNICODE.NNTS_MAP   文字関数のマッピング時のバッファオーバーフロー

ABV.UNICODE.SELF_MAP   関数のマッピングに失敗します

ABV.UNKNOWN_SIZE   バッファオーバーフロー - 配列インデックスが範囲外

DBZ.CONST   ゼロ定数による除算が発生しました

DBZ.CONST.CALL   値 '0' が除数としてこの値を使用できる関数に渡されます

DBZ.GENERAL   ゼロ除算が発生した可能性があります

DBZ.ITERATOR   ループ反復子でゼロ除算が発生した可能性があります

DBZ.ITERATOR.CALL   関数呼出しでゼロ除算が発生した可能性があります

NUM.OVERFLOW.DF   起こり得る数値のオーバーフローまたはラップアラウンド

UNINIT.CTOR.MIGHT   コンストラクタにおける未初期化の変数の可能性

UNINIT.CTOR.MUST   コンストラクタにおける未初期化の変数

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   未初期化の変数

Dir. 4.2 推奨(Advisory) いいえ

MISRA.ASM.ENCAPS   アセンブリ言語が分離されていません

Dir. 4.3 必要(Required) いいえ

MISRA.ASM.ENCAPS   アセンブリ言語が分離されていません

Dir. 4.4 推奨(Advisory) いいえ

Dir. 4.5 推奨(Advisory) いいえ

Dir. 4.6 推奨(Advisory) いいえ

MISRA.BUILTIN_NUMERIC   組み込み数値型が使用されています

Dir. 4.7 必要(Required) いいえ

SV.RVT.RETVAL_NOTTESTED   戻り値の無視

Dir. 4.8 推奨(Advisory) いいえ

Dir. 4.9 推奨(Advisory) いいえ

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

Dir. 4.10 必要(Required) いいえ

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

Dir. 4.11 必要(Required) いいえ

Dir. 4.12 必要(Required) いいえ

Dir. 4.13 推奨(Advisory) いいえ

Dir. 4.14 必要(Required) いいえ

ABV.TAINTED   未検証の入力によるバッファオーバーフロー

NNTS.TAINTED   未検証のユーザー入力が原因のバッファオーバーフロー - 非 NULL 終了文字列

SV.TAINTED.ALLOC_SIZE   メモリ割り当て時の未検証の整数の使用

SV.TAINTED.BINOP   バイナリ演算での未検証整数値の使用

SV.TAINTED.CALL.BINOP   バイナリ演算での未検証整数値の使用

SV.TAINTED.CALL.DEREF   未検証ポインターの逆参照

SV.TAINTED.CALL.INDEX_ACCESS   関数呼び出し時の配列インデックスとしての未検証の整数の使用

SV.TAINTED.CALL.LOOP_BOUND   関数呼び出しのループ条件での未検証の整数の使用

SV.TAINTED.DEREF   未検証ポインターの逆参照

SV.TAINTED.FMTSTR   書式文字列での未検証データの使用

SV.TAINTED.INDEX_ACCESS   配列インデックスとしての未検証の整数の使用

SV.TAINTED.INJECTION   コマンドインジェクション

SV.TAINTED.LOOP_BOUND   ループ条件での未検証の整数の使用

SV.TAINTED.PATH_TRAVERSAL   パストラバーサルでの未検証データの使用

SV.TAINTED.SECURITY_DECISION   セキュリティ決定

1.1 必要(Required) はい

1.2 推奨(Advisory) いいえ

MISRA.LANG.EXTENSIONS   言語拡張は使用するべきではありません

1.3 必要(Required) いいえ

2.1 必要(Required) いいえ

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

UNREACH.GEN   到達不能コード

UNREACH.RETURN   到達不能な void return文

2.2 必要(Required) いいえ

EFFECT   ステートメントの影響はありません

LV_UNUSED.GEN   ローカル変数は使用されません

VA_UNUSED.GEN   値を割り当て後に使用しません

VA_UNUSED.INIT   値を初期化後に使用しません

2.3 推奨(Advisory) はい

2.4 推奨(Advisory) はい

2.5 推奨(Advisory) はい

2.6 推奨(Advisory) はい

LA_UNUSED   ラベルが使用されていません

2.7 推奨(Advisory) はい

MISRA.FUNC.UNUSEDPAR.2012   関数に未使用のパラメーターがあります

3.1 必要(Required) はい

MISRA.TOKEN.BADCOM   コメントに不適切な文字列があります

3.2 必要(Required) はい

MISRA.TOKEN.CPCOM.MULTILINE.2012   //コメントでラインスプライシングが使用されています

4.1 必要(Required) はい

MISRA.TOKEN.UNTERMINATED.ESCAPE.2012   文字列リテラルに終端されていないエスケープシーケンスがあります

4.2 推奨(Advisory) はい

MISRA.CHAR.TRIGRAPH   3 文字表記の使用

5.1 必要(Required) はい

5.2 必要(Required) はい

MISRA.IDENT.DISTINCT.C99.2012   同一のスコープまたは同一の名前空間で宣言された識別子が区別されていません

5.3 必要(Required) はい

MISRA.VAR.HIDDEN   内部のスコープで宣言された識別子によって外部のスコープの識別子が非表示になっています

5.4 必要(Required) はい

MISRA.DEFINE.NOT_DISTINCT.C99.2012   識別子名が長すぎます

5.5 必要(Required) はい

5.6 必要(Required) はい

MISRA.TYPEDEF.NOT_UNIQUE.2012   Typedef 名がその他のエンティティ用に使用されています

5.7 必要(Required) はい

MISRA.CT.UNIQUE.ID.2012   識別子がタグ名と不整合です

5.8 必要(Required) はい

MISRA.IDENT.NONUNIQUE.EXTERNAL.2012   外部リンクを持つオブジェクトまたは関数を定義する識別子は一意でなければなりません。

5.9 推奨(Advisory) はい

MISRA.IDENT.NONUNIQUE.INTERNAL.2012   内部リンクを持つオブジェクトまたは関数を定義する識別子は一意でなければなりません。

6.1 必要(Required) はい

MISRA.BITFIELD.TYPE.2012   ビットフィールドの型は、ブール、符号付き/符号なし整数のいずれでもありません

6.2 必要(Required) はい

MISRA.BITFIELD.SIGNED   名前付きの符号付きビットフィールドの長さが 2 未満です

7.1 必要(Required) はい

MISRA.TOKEN.OCTAL.INT   8 進数の整数定数を使用しています

7.2 必要(Required) はい

MISRA.LITERAL.UNSIGNED.SUFFIX   'U' 添え字の付かない符号なし整数リテラルです

7.3 必要(Required) はい

MISRA.TOKEN.L.SUFFIX.FLOAT   浮動小数点定数では、小文字 "l" 接尾辞を使用

MISRA.TOKEN.L.SUFFIX.INT   整数定数では、小文字 "l" 接尾辞を使用

7.4 必要(Required) はい

MISRA.STRING_LITERAL.NON_CONST.2012   オブジェクトの種類が const-qualified char のポインターでない限り、文字列リテラルはオブジェクトに割り当てられません

8.2 必要(Required) はい

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

MISRA.FUNC.PROT_FORM.KR.2012   関数タイプはプロトタイプ形式です

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

MISRA.FUNC.UNNAMED.PARAMS   関数の宣言に名前のないパラメーターがあります

8.3 必要(Required) はい

8.4 必要(Required) はい

MISRA.FUNC.NOPROT.DEF.2012   関数は定義されていますが、プロトタイプがありません

8.5 必要(Required) はい

8.6 必要(Required) はい

8.7 推奨(Advisory) はい

8.8 必要(Required) はい

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

8.9 推奨(Advisory) はい

8.10 必要(Required) はい

MISRA.DECL.FUNC.INLINE.STATIC.2012   静的ストレージクラス(static)が付与されていないインライン関数の宣言

8.11 推奨(Advisory) はい

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

8.12 必要(Required) はい

MISRA.ENUM.IMPLICIT.VAL.NON_UNIQUE.2012   暗黙的列挙子値は一意ではありません

8.13 推奨(Advisory) いいえ

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

8.14 必要(Required) はい

MISRA.TYPE.RESTRICT.QUAL.2012   restrict 型修飾子は使用しない

9.1 必須(Mandatory) いいえ

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 必要(Required) はい

MISRA.INIT.BRACES.2012   集計または共用体の初期化子が波括弧で囲まれていません

9.3 必要(Required) はい

MISRA.INIT.PARTIAL.2012   配列が部分的に初期化されています

9.4 必要(Required) はい

MISRA.INIT.MULTIPLE.2012   オブジェクトの要素が複数回初期化されています

9.5 必要(Required) はい

MISRA.INIT.SIZE.IMPLICIT.2012   指定された初期化子が、配列のサイズが明示的に指定されない場合に、配列オブジェクトを初期化するために使用されます

10.1 必要(Required) はい

MISRA.ETYPE.INAPPR.OPERAND.BINOP.2012   バイナリ演算子へのオペランドには、不適切な基本タイプがあります

MISRA.ETYPE.INAPPR.OPERAND.INDEXPR.2012   インデックス式に、不適切な基本タイプがあります

MISRA.ETYPE.INAPPR.OPERAND.TERNOP.2012   三項演算子への最初のオペランドには、不適切な基本タイプがあります

MISRA.ETYPE.INAPPR.OPERAND.UNOP.2012   単項演算子へのオペランドには、不適切な基本タイプがあります

10.2 必要(Required) はい

MISRA.ETYPE.INAPPR.CHAR.2012   加算または減算演算で、基本的な文字タイプの不適切な使用法。

10.3 必要(Required) はい

MISRA.ETYPE.ASSIGN.2012   より狭い基本タイプ、または、異なる基本タイプカテゴリーのオブジェクトへの割り当て

10.4 必要(Required) はい

MISRA.ETYPE.CATEGORY.DIFFERENT.2012   通常の算術演算変換が実行される演算子のオペランドに、同じ基本タイプカテゴリーがありません。

10.5 推奨(Advisory) はい

MISRA.ETYPE.INAPPR.CAST.2012   式の値は、不適切な基本タイプへのキャストです

10.6 必要(Required) はい

MISRA.ETYPE.COMP.ASSIGN.2012   複合式の値は、より広い基本タイプを持つオブジェクトに割り当てられました。

10.7 必要(Required) はい

MISRA.ETYPE.COMP.CAST.IMPL.WIDER.2012   通常の算術演算変換が実行される演算子のオペランドとして使用される複合式には、より広い基本タイプを持つ他のオペランドがあります。

10.8 必要(Required) はい

MISRA.ETYPE.COMP.CAST.EXPL.DIFFERENT.2012   複合式の値は、異なる基本タイプカテゴリーへのキャストです

MISRA.ETYPE.COMP.CAST.EXPL.WIDER.2012   複合式の値は、より広い基本タイプへのキャストです

11.1 必要(Required) はい

MISRA.CAST.FUNC_PTR.2012   関数を指すポインタと、別の非互換タイプとの間で実行された変換

11.2 必要(Required) はい

MISRA.CAST.INCOMPLETE_PTR_TO_ANY.2012   不完全なタイプ を指すポインタと、別のタイプとの間で実行された変換

11.3 必要(Required) はい

MISRA.CAST.OBJ_PTR_TO_OBJ_PTR.2012   オブジェクト タイプを指すポインタと、異なるオブジェクト タイプを指す別のポインタとの間のキャスト

11.4 推奨(Advisory) はい

MISRA.CAST.OBJ_PTR_TO_INT.2012   オブジェクトを指すポインタと、整数タイプとの間で実行された変換

11.5 推奨(Advisory) はい

MISRA.CAST.VOID_PTR_TO_OBJ_PTR.2012   void ポインタから、オブジェクトを指すポインタに実行された変換

11.6 必要(Required) はい

MISRA.CAST.VOID_PTR_TO_INT.2012   void を指すポインタと算術演算タイプとの間のキャスト

11.7 必要(Required) はい

MISRA.CAST.OBJ_PTR_TO_NON_INT.2012   オブジェクトを指すポインタと、非整数算術演算タイプとの間のキャスト

11.8 必要(Required) はい

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

11.9 必要(Required) はい

MISRA.LITERAL.NULL.PTR.CONST.2012   マクロ NULL は、唯一許可された整数 null ポインター定数のフォームです。

12.1 推奨(Advisory) はい

MISRA.EXPR.PARENS.2012   式内の演算子の優先度は明示的にする必要があります。

MISRA.EXPR.PARENS.SIZEOF.2012   sizeof 演算子のオペランドは括弧に入れる必要があります。

12.2 必要(Required) いいえ

MISRA.SHIFT.RANGE.2012   シフト演算子の右側のオペランドは範囲外です - 左側のオペランドの基本タイプのサイズ以上か、または負

12.3 推奨(Advisory) はい

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

12.4 推奨(Advisory) はい

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

12.5 必須(Mandatory) はい

MISRA.EXPR.SIZEOF.ARRAY_PARAM.2012_AMD1   sizeof 演算子に「配列型」として宣言された関数パラメータとなっているオペランドが含まれています。

13.1 必要(Required) いいえ

13.2 必要(Required) いいえ

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

13.3 推奨(Advisory) はい

MISRA.INCR_DECR.SIDEEFF.2012   インクリメント (++) またはデクリメント (--) 演算子を含む完全な式では、インクリメントまたはデクリメント演算子によって生じる以外に他の副作用が存在してはなりません

13.4 推奨(Advisory) はい

MISRA.ASSIGN.SUBEXPR.2012   代入演算子の結果が使用されます

13.5 必要(Required) いいえ

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

13.6 必須(Mandatory) はい

MISRA.SIZEOF.SIDE_EFFECT   sizeof のオペランドに副作用があります

14.1 必要(Required) いいえ

MISRA.FOR.COUNTER.FLT   for ループのカウンターが浮動小数点タイプです

14.2 必要(Required) いいえ

14.3 必要(Required) いいえ

INVARIANT_CONDITION.GEN   不変な条件式

INVARIANT_CONDITION.UNREACH   不変な条件式

14.4 必要(Required) はい

MISRA.STMT.COND.NOT_BOOLEAN.2012   'if' ステートメントまたは 'loop' ステートメントの制御式が 'Essentially Boolean' 型ではありません

15.1 推奨(Advisory) はい

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

15.2 必要(Required) はい

MISRA.GOTO.AFTER_LABEL.2012   Goto は、同じ関数で前に宣言されたラベルにジャンプします。

15.3 必要(Required) はい

MISRA.GOTO.NESTED.2012   goto に参照されたラベルは、このブロック、または、それを囲むブロックの中にありません。

15.4 推奨(Advisory) はい

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

15.5 推奨(Advisory) はい

MISRA.RETURN.NOT_LAST   関数内で return が最後のステートメントになっていません

15.6 必要(Required) はい

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

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

15.7 必要(Required) はい

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

16.1 必要(Required) はい

MISRA.SWITCH.WELL_FORMED.2012   すべての switch ステートメントは形式が適切である必要があります。

16.2 必要(Required) はい

MISRA.SWITCH.WELL_FORMED.NESTED_LABEL.2012   switch ラベルは、最も近くで囲い込む複合ステートメントが switch ステートメントの本文の場合にのみ使用されます。

16.3 必要(Required) はい

MISRA.SWITCH.WELL_FORMED.BREAK.2012   条件なしの break ステートメントで各 switch 句を終了するべきです。

16.4 必要(Required) はい

MISRA.SWITCH.WELL_FORMED.DEFAULT.2012   各 switch ステートメントはデフォルトラベルを有するべきです。

16.5 必要(Required) はい

MISRA.SWITCH.WELL_FORMED.DEFAULT.FIRST_OR_LAST.2012   デフォルトのラベルが switch ステートメントの最初または最後の switch ラベルのいずれかとして表示されるべきです。

16.6 必要(Required) はい

MISRA.SWITCH.WELL_FORMED.TWO_CLAUSES.2012   各 switch ステートメントは少なくとも 2 つの switch 句を有するべきです。

16.7 必要(Required) はい

MISRA.SWITCH.COND.BOOL.2012   switch 文は基本的にブールデータ型を有しているべきではありません。

17.1 必要(Required) はい

MISRA.FUNC.VARARG   関数が可変数の引数を持っています

17.2 必要(Required) いいえ

MISRA.FUNC.RECUR   再帰関数

17.4 必須(Mandatory) はい

FUNCRET.GEN   非 void 関数に戻り値がありません

FUNCRET.IMPLICIT   暗黙的に int を返す非 void 関数に戻り値がありません

17.5 推奨(Advisory) いいえ

17.6 必須(Mandatory) はい

MISRA.FUNC.ARRAY.PARAM.STATIC.2012   配列パラメーターの宣言には、[] の間に static キーワードは含まれません

17.7 必要(Required) はい

MISRA.FUNC.UNUSEDRET.2012   非 void 関数の戻り値を使用してください

17.8 推奨(Advisory) いいえ

MISRA.FUNC.MODIFIEDPAR.2012   関数パラメーターは変更してはなりません

18.1 必要(Required) いいえ

ABV.GENERAL   バッファオーバーフロー - 配列インデックスが範囲外

ABV.GENERAL.MULTIDIMENSION   バッファオーバーフロー - 配列インデックスが範囲外

ABV.STACK   バッファオーバーフロー - ローカル配列インデックスが範囲外

MISRA.PTR.ARITH.NOT_SAME.2012   ポインターオペランドの計算から得られるポインターは、そのポインターオペランドと同じ配列の要素をアドレス指定します

18.2 必要(Required) いいえ

MISRA.PTR.SUB   ポインターの減算は、同じ配列を指している場合にのみ適用されます

MISRA.PTR.SUB.OBJECT   ポインターの減算は、同じオブジェクトを指している場合にのみ適用されます

18.3 必要(Required) いいえ

MISRA.PTR.CMP.2008   比較演算子を使用したポインターの比較は、同じ配列を指していて、範囲内にある場合にのみ適用されます

MISRA.PTR.CMP.OBJECT.2008   比較演算子を使用したポインターの比較は、同じオブジェクトを指しており、範囲内である場合にのみ適用されます

18.4 推奨(Advisory) はい

MISRA.PTR.ARITH.2012   演算式にポインターが使用されています

18.5 推奨(Advisory) はい

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

18.6 必要(Required) いいえ

LOCRET.ARG   関数がローカル変数のアドレスを返しています

LOCRET.GLOB   関数がローカル変数のアドレスを返しています

LOCRET.RET   関数がローカル変数のアドレスを返しています

18.7 必要(Required) はい

MISRA.MEMB.FLEX_ARRAY.2012   柔軟な配列メンバーは宣言しないでください

18.8 必要(Required) はい

MISRA.ARRAY.VAR_LENGTH.2012   変数の長さの配列種類は使用しないでください

19.1 必須(Mandatory) はい

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

19.2 推奨(Advisory) はい

MISRA.UNION   和集合が使用されています

20.1 推奨(Advisory) はい

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

20.2 必要(Required) はい

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

20.3 必要(Required) はい

MISRA.INCL.BAD   非標準の include ディレクティブです

20.4 必要(Required) はい

MISRA.DEFINE.WRONGNAME.C99.2012   マクロはキーワードと同じ名前で定義してはなりません

20.5 推奨(Advisory) はい

MISRA.UNDEF   定義のない使用です

20.6 必要(Required) はい

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

20.7 必要(Required) はい

20.8 必要(Required) はい

MISRA.ELIF.COND.NOT_BOOL.2012   #elif 条件が 0 または 1 ではありません

MISRA.IF.COND.NOT_BOOL.2012   #if 条件が 0 または 1 ではありません

20.9 必要(Required) はい

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

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

20.10 推奨(Advisory) はい

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

20.11 必要(Required) はい

MISRA.DEFINE.SHARP.ORDER.2012   複数の '#' または '##' の評価の順番が指定されていません

20.12 必要(Required) はい

MISRA.DEFINE.SHARP.REPLACE.2012   それ自身さらなるマクロ置換の影響を受ける、'#' または '##' 演算子のオペランドとして使用されるマクロパラメーターは、これらの演算子のオペランドとしてのみ使用される。

20.13 必要(Required) はい

MISRA.USE.UNKNOWNDIR   不明なプリプロセッサディレクティブが使用されています

20.14 必要(Required) はい

MISRA.ELIF.OTHERFILE   不適切なファイルでの #elif

MISRA.ELSE.OTHERFILE   不適切なファイルでの #else

MISRA.ENDIF.OTHERFILE   不適切なファイルでの #endif

21.1 必要(Required) はい

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

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

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

MISRA.UNDEF.WRONGNAME.UNDERSCORE   予約名が定義されていません

21.2 必要(Required) はい

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

MISRA.STDLIB.WRONGNAME.UNDERSCORE   予約名が言語エンティティの名前に使用されています

21.3 必要(Required) はい

MISRA.STDLIB.MEMORY   動的ヒープメモリ割り当ての使用

21.4 必要(Required) はい

MISRA.STDLIB.LONGJMP   setjmp マクロまたは longjmp 関数の使用

21.5 必要(Required) はい

MISRA.INCL.SIGNAL.2012   標準ヘッダーファイル signal.h は使用しない

MISRA.STDLIB.SIGNAL   signal.h の信号処理装置の使用

21.6 必要(Required) はい

MISRA.DEFINE.STDIO.WCHAR.2012   不適切なマクロ展開です

MISRA.INCL.STDIO.2012   標準ヘッダーファイル stdio.h は使用しない

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

MISRA.STDLIB.STDIO.WCHAR.2012   stdio.h からワイド文字と同等の識別子は使用しない

21.7 必要(Required) はい

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

21.8 必要(Required) はい

MISRA.STDLIB.ABORT.2012_AMD1   ライブラリ stdlib.h の 'abort'、'exit'、または 'system' の使用

21.9 必要(Required) はい

MISRA.STDLIB.BSEARCH.2012   ライブラリ stdlib.h の 'bsearch' または 'qsort' が使用されています

21.10 必要(Required) はい

MISRA.DEFINE.WCSFTIME.2012   'wcsftime' の名前を持つマクロは拡張しない

MISRA.INCL.TIME.2012   標準ヘッダーファイル time.h は使用しない

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

MISRA.STDLIB.WCSFTIME.2012   識別子 'wcsftime' は使用しない

21.11 必要(Required) はい

MISRA.INCL.TGMATH.2012   標準ヘッダーファイル tgmath.h は使用しない

21.12 推奨(Advisory) はい

MISRA.STDLIB.FENV.2012   fenv.h からの浮動小数点の例外機能機能が使用されています

MISRA.STDLIB.FENV.MACRO.2012   fenv.h からの浮動小数点の例外機能機能が使用されています

21.13 必須(Mandatory) いいえ

MISRA.STDLIB.CTYPE.RANGE.2012_AMD1   ctype.h で関数に渡される値はすべて unsigned char として表現できるか、または値 EOF でなければなりません

21.14 必要(Required) いいえ

MISRA.MEMCMP.NTS.2012_AMD1   memcmp 関数は、null 以外で終わる文字列を比較するためにのみ使用しなければならない

MISRA.MEMCMP.NTS.GLOBAL.2012_AMD1   memcmp 関数は、null 以外で終わる文字列を比較するためにのみ使用しなければならない

21.15 必要(Required) はい

MISRA.STDLIB.INCOMPAT_ARGS.2012_AMD1   Memcpy、memmove、または memcmp へのポインタ引数は互換性のある型へのポインタではありません

21.16 必要(Required) はい

21.17 必須(Mandatory) いいえ

ABV.ANY_SIZE_ARRAY   バッファオーバーフロー - 配列インデックスが範囲外

ABV.GENERAL   バッファオーバーフロー - 配列インデックスが範囲外

ABV.GENERAL.MULTIDIMENSION   バッファオーバーフロー - 配列インデックスが範囲外

ABV.MEMBER   バッファオーバーフロー - 配列インデックスが範囲外

ABV.STACK   バッファオーバーフロー - ローカル配列インデックスが範囲外

ABV.UNKNOWN_SIZE   バッファオーバーフロー - 配列インデックスが範囲外

NNTS.MIGHT   バッファオーバーフロー - 非 NULL 終了文字列

NNTS.MUST   バッファオーバーフロー - 非 NULL 終了文字列

21.18 必須(Mandatory) いいえ

ABV.ANY_SIZE_ARRAY   バッファオーバーフロー - 配列インデックスが範囲外

ABV.GENERAL   バッファオーバーフロー - 配列インデックスが範囲外

ABV.GENERAL.MULTIDIMENSION   バッファオーバーフロー - 配列インデックスが範囲外

ABV.MEMBER   バッファオーバーフロー - 配列インデックスが範囲外

ABV.STACK   バッファオーバーフロー - ローカル配列インデックスが範囲外

ABV.UNKNOWN_SIZE   バッファオーバーフロー - 配列インデックスが範囲外

21.19 必須(Mandatory) いいえ

MISRA.STDLIB.ILLEGAL_WRITE.2012_AMD1   標準ライブラリ関数 localeconv、getenv、setlocale、または strerror が返すポインターは、必ずそれらが const-qualified 型を指すポインターを持つかのように使用する必要があります。

21.20 必須(Mandatory) いいえ

MISRA.STDLIB.ILLEGAL_REUSE.2012_AMD1   標準ライブラリ関数 asctime または同様の関数によって返されるポインタは、同じ関数の後続の呼び出しに続いては使用しません

22.1 必要(Required) いいえ

FREE.INCONSISTENT   メモリの解放が矛盾しています

MLK.MIGHT   メモリリークの可能性

MLK.MUST   メモリリーク

MLK.RET.MIGHT   メモリリークの可能性

MLK.RET.MUST   メモリリーク

RH.LEAK   リソースリーク

22.2 必須(Mandatory) いいえ

FMM.MIGHT   メモリの解放の不一致の可能性

FMM.MUST   メモリの解放の不一致

FNH.MIGHT   非ヒープメモリの解放の可能性

FNH.MUST   非ヒープメモリの解放

FUM.GEN.MIGHT   未割り当てメモリの解放の可能性

FUM.GEN.MUST   未割り当てメモリの解放

22.3 必要(Required) いいえ

MISRA.RESOURCES.FILE.OPEN_READ_WRITE.2012   同じファイルに対して複数のストリームが開かれています

22.4 必須(Mandatory) いいえ

MISRA.RESOURCES.FILE.READ_ONLY_WRITE.2012   読み取り専用として開かれたストリームに書き込んではなりません

22.5 必須(Mandatory) いいえ

MISRA.FILE_PTR.DEREF.2012   FILE オブジェクトへのポインターは逆参照してはなりません

MISRA.FILE_PTR.DEREF.CAST.2012   オブジェクトは FILE ポインターにキャストされており、これを逆参照してはなりません。

MISRA.FILE_PTR.DEREF.INDIRECT.2012   FILE オブジェクトへのポインターは、システム関数で間接的に逆参照してはなりません

MISRA.FILE_PTR.DEREF.RETURN.2012   FILE オブジェクト(関数の戻り値)へのポインターは逆参照してはなりません

22.6 必須(Mandatory) いいえ

MISRA.RESOURCES.FILE.USE_AFTER_CLOSE.2012   FILE を指し示すポインターの値は、関連するストリームが閉じられたあとは使用しないでください

22.7 必要(Required) いいえ

MISRA.STDLIB.EOF.BAD_CMP.2012_AMD1   マクロ EOF は、EOF を返すことができる標準ライブラリ関数からの未変更の戻り値とのみ比較されなければなりません。

22.8 必要(Required) いいえ

CXX.ERRNO.NOT_SET   ライブラリ関数を呼び出す前に、errno はゼロにリセットされていない

22.9 必要(Required) いいえ

CXX.ERRNO.NOT_CHECKED   ライブラリ関数を呼び出した後に、errno の条件チェックが欠落している

22.10 必要(Required) いいえ

CXX.ERRNO.INCORRECTLY_CHECKED   ライブラリ関数を呼び出した後に、errno の条件チェックは必要ない

サポートのサマリー

サポート対象合計: 121 (C90)、128 (C99)