EN JP CN

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

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

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

注意

  • これらのチェッカーを使用するには、https://support.roguewave.com/downloads/ からダウンロードする必要があります。MISRA チェッカーを有効にする方法については、ダウンロードに含まれている readme ファイルを参照してください。
  • MISRA 規格の違反を検出するいくつかのデフォルトのチェッカーもあります。Klocwork チェッカーにマッピングされた MISRA-C 2004 規則 でリストされます。
  • オンライン ドキュメンテーションの MISRA チェッカーに関する情報は、最新のサービス リリースとパッチを反映しています。
指摘コード説明MISRA-C 規則導入改善
MISRA.ASM.ENCAPS アセンブリ言語が分離されていませんMISRA C 2.19.1 
MISRA.ASSIGN.COND条件内で代入演算子が使用されていますMISRA C 13.19.2 
MISRA.ASSIGN.OVERLAPオブジェクトは、オーバーラップするオブジェクトに割り当てられてはいけませんMISRA C 18.29.5 
MISRA.BITFIELD.SIGNED符号付きビットフィールドの長さが 1 ですMISRA C 6.59.19.2、10.4
MISRA.BITFIELD.SIGNED.UNNAMED名前のない符号付きビットフィールドの長さが 2 未満ですMISRA C 6.59.2 
MISRA.BITFIELD.TYPEビットフィールドの型は、符号付き/符号なし整数のいずれでもありませんMISRA C 6.49.19.2、11.0
MISRA.BITS.NOT_UNSIGNEDビット演算のオペランドは、符号なし整数ではありませんMISRA C 12.79.19.2、9.2 SR1、9.5、11.0
MISRA.BITS.NOT_UNSIGNED.PREP#if または #elif プリプロセッサディレクティブのビット演算のオペランドが符号なし整数ではありませんMISRA C 12.711.1 
MISRA.BUILTIN_NUMERIC組み込み数値型が使用されていますMISRA C 6.39.19.2、9.2 SR1、9.5
MISRA.CAST.CONSTキャスト演算により const 修飾子または volatile 修飾子がポインターまたは参照から除外されますMISRA C 11.59.19.2、10.4
MISRA.CAST.FLOAT自明ではない浮動型の式がより幅広い型にキャストされていますMISRA C 10.49.19.2
MISRA.CAST.FUNC_PTRキャストにより関数ポインターがその他のポインター型に変換されますMISRA C 11.19.19.2
MISRA.CAST.INT自明ではない整数式がより幅広い型または別の符号を持つ型にキャストされていますMISRA C 10.39.19.2、9.5
MISRA.CAST.PTRオブジェクト タイプを指すポインターとオブジェクト タイプを指す別のポインター間のキャストですMISRA C 11.49.1 
MISRA.CAST.PTR.UNRELATEDポインター型のオブジェクトを関連のない型にキャストしていますMISRA C 11.29.29.5
MISRA.CAST.PTR_TO_INTキャストによりポインターが整数型に変換されますMISRA C 11.39.19.2
MISRA.CAST.UNSIGNED_BITSunsigned char または short でのビット演算の結果は元の型にキャストできませんMISRA C 10.59.110.4
MISRA.CHAR.NOT_CHARACTER文字でない値に 'char' が使用されていますMISRA C 6.19.111.2
MISRA.CHAR.TRIGRAPH3 文字表記の使用MISRA C 4.29.19.2
MISRA.COMMAカンマ演算子が使用されていますMISRA C 12.109.1 
MISRA.COMP.WRAPAROUND条件内でラップアラウンドしていますMISRA C 12.119.29.5
MISRA.CONTINUEcontinue ステートメントが使用されていますMISRA C 14.59.1 
MISRA.CT.UNIQUE.ID識別子がタイプ名と不整合ですMISRA C 5.49.19.2、9.2 SR1
MISRA.CVALUE.IMPL.CAST式の値は別の型に暗黙的に変換できませんMISRA C 10.1、10.29.29.5、11.0、11.1
MISRA.DECL.ARRAY_SIZE配列の宣言でサイズが不明ですMISRA C 8.129.1 
MISRA.DECL.FUNC_LOCAL関数がローカルで宣言されていますMISRA C 8.69.19.2 SR1
MISRA.DECL.NO_TYPE宣言から型が抜けていますMISRA C 8.29.19.2 SR1
MISRA.DEFINE.BADEXP不適切なマクロ展開ですMISRA C 19.49.19.5
MISRA.DEFINE.FUNCマクロが関数のように定義されていますMISRA C 19.79.1 
MISRA.DEFINE.LONGNAMEマクロ名が長すぎますMISRA C 5.19.1 
MISRA.DEFINE.NOPARSマクロ パラメーターに括弧がありませんMISRA C 19.109.1 
MISRA.DEFINE.NOTGLOBALグローバル レベル以外で定義しますMISRA C 19.59.1 
MISRA.DEFINE.SHARPマクロ定義に # 演算子または ## 演算子が使用されていますMISRA C 19.139.1 
MISRA.DEFINE.SHARP.MANYマクロ定義に # 演算子または ## 演算子がいくつか使用されていますMISRA C 19.129.1 
MISRA.DEFINE.WRONGNAMEマクロ名が不適切ですMISRA C 20.19.19.2 SR2、9.5
MISRA.DEFINE.WRONGNAME.UNDERSCORE予約名がマクロ名に使用されていますMISRA C 20.19.2 SR2 
MISRA.ELIF.DEFINED#elif ディレクティブで不正な 'defined' が使用されていますMISRA C 19.149.1 
MISRA.ELIF.OTHERFILE不適切なファイルでの #elifMISRA C 19.179.1 
MISRA.ELIF.UNDEF#elif ディレクティブでマクロが定義されていませんMISRA C 19.119.1 
MISRA.ELIF.WRAPAROUND#elif ディレクティブでラップアラウンドしますMISRA C 12.119.1 
MISRA.ELSE.OTHERFILE不適切なファイルでの #elseMISRA C 19.179.1 
MISRA.ENDIF.OTHERFILE不適切なファイルでの #endifMISRA C 19.179.1 
MISRA.ENUM.INIT1 番目以外の列挙子が明示的に初期化されていますが、一部の要素が明示的に初期化されていませんMISRA C 9.39.1 
MISRA.EXPANSION.DIRECTIVEマクロの引数内にディレクティブのようなトークンがありますMISRA C 19.99.1 
MISRA.EXPANSION.NARGSマクロの引数がありませんMISRA C 19.89.19.2 SR2
MISRA.EXPANSION.UNSAFE安全ではないマクロの使用MISRA C 20.1、20.5、20.6、20.79.19.5
MISRA.EXPR.PARENS.INSUFFICIENT 式の演算子優先順位規則に制限された依存性が必要です。式の括弧の数が不足しています。 MISRA C 12.110.1.2 
MISRA.EXPR.PARENS.REDUNDANT 式の演算子優先順位規則に制限された依存性が必要です。式の括弧の数が多すぎます。 MISRA C 12.110.1.210.3、11.2
MISRA.FLOAT.BIT.REPR浮動小数点値のビット操作結果はストレージのレイアウトによって変わりますMISRA C 12.129.19.2 SR1、11.0
MISRA.FLOAT_EQUAL浮動小数点式のイコールがテストされていますMISRA C 13.39.1 
MISRA.FOR.CONDfor ループの条件ではループ カウンターの値が変わりませんMISRA C 13.59.19.2、9.2 SR1
MISRA.FOR.COND.FLT'for' ループの条件セクションで浮動小数点オブジェクトが使用されていますMISRA C 13.49.29.5
MISRA.FOR.COUNTER.FLTfor ループのカウンターが浮動小数点型ですMISRA C 13.49.2 
MISRA.FOR.INCR.CHANGEfor ループの増分式ではループ カウンターが変わりませんMISRA C 13.59.1 
MISRA.FOR.STMT.CHANGEfor ループのカウンターが loop ループ ステートメント内で変更されていますMISRA C 13.69.2 
MISRA.FUNC.ADDR& 演算子なしで関数のアドレスが使用されていますMISRA C 16.99.19.2 SR1
MISRA.FUNC.NO_PARAMSパラメーターのない関数に void パラメーター タイプがありませんMISRA C 16.59.1 
MISRA.FUNC.NOPROT.CALL関数が呼び出されていますが、プロトタイプがありませんMISRA C 8.19.29.2 SR1
MISRA.FUNC.NOPROT.DEF関数は定義されていますが、プロトタイプがありませんMISRA C 8.19.2 
MISRA.FUNC.PARAMS.IDENT関数の宣言と定義の識別子が一致していませんMISRA C 16.49.2 
MISRA.FUNC.RECUR再帰関数MISRA C 16.29.19.2、9.2 SR1
MISRA.FUNC.STATIC.REDECL関数またはオブジェクトの再宣言に 'static' 修飾子がありませんMISRA C 8.119.2 
MISRA.FUNC.UNMATCHED.PARAMS関数に渡される仮パラメーターと実際のパラメーターの数が一致しませんMISRA C 16.69.1 
MISRA.FUNC.UNNAMED.PARAMS関数の宣言に名前のないパラメーターがありますMISRA C 16.39.1 
MISRA.FUNC.VARARG関数が可変数の引数を持っていますMISRA C 16.19.1 
MISRA.GOTOgoto ステートメントが使用されていますMISRA C 14.49.1 
MISRA.IDENT.LONG識別子が 31 文字以上ですMISRA C 5.19.19.2
MISRA.IF.DEFINED#if ディレクティブで不正な 'defined' が使用されていますMISRA C 19.149.1 
MISRA.IF.NO_COMPOUNDif/else ステートメントのボディが複合ステートメントではありませんMISRA C 14.99.1 
MISRA.IF.NO_ELSEif/else-if ステートメントのチェインが else で終了していませんMISRA C 14.109.110.4
MISRA.IF.UNDEF#if ディレクティブでマクロが定義されていませんMISRA C 19.119.1 
MISRA.IF.WRAPAROUND#if ディレクティブでラップアラウンドしますMISRA C 12.119.1 
MISRA.INCGUARDインクルード ガードが入力されていませんMISRA C 19.159.1 
MISRA.INCL.BAD非標準の include ディレクティブですMISRA C 19.39.19.2、11.1
MISRA.INCL.INSIDEinclude ディレクティブの前にプリプロセッサ出力トークンがありますMISRA C 19.19.1 
MISRA.INCL.SYMSヘッダー ファイル名に非標準文字が使用されていますMISRA C 19.29.1 
MISRA.INCL.UNSAFE安全でないヘッダーが含まれていますMISRA C 20.1、20.8、20.9、20.129.1 
MISRA.INCOMPLETE.STRUCT不完全な構造タイプが使用されていますMISRA C 18.19.2 
MISRA.INCOMPLETE.STRUCT.UNNAMED名前のない不完全な構造タイプが使用されていますMISRA C 18.19.2 
MISRA.INCOMPLETE.UNION名前のない不完全な共用体型が使用されていますMISRA C 18.19.2 
MISRA.INCOMPLETE.UNION.UNNAMED名前のない不完全な共用体型が使用されていますMISRA C 18.19.2 
MISRA.INCR_DECR.OTHER増分または減分の演算子がその他の演算子と混合して式で使用されていますMISRA C 12.139.19.2
MISRA.INIT.BRACES不適切な初期化子が配置を固定していますMISRA C 9.29.1 
MISRA.ITER.ONETERM反復ステートメントに複数の break または for ループ終端への複数の goto がありますMISRA C 14.69.1 
MISRA.LITERAL.UNSIGNED.SUFFIX'U' 添え字の付かない符号なし整数リテラルですMISRA C 10.69.19.5、10.2
MISRA.LOGIC.OPERAND.NOT_BOOL論理演算のオペランドは実質的にはブール値ではありませんMISRA C 12.69.19.2 SR1、9.5
MISRA.LOGIC.OPERATOR.NOT_BOOL論理演算ではない演算子のオペランドが実質的にはブール値ですMISRA C 12.69.19.2 SR1、10.4
MISRA.LOGIC.PRIMARY論理 'and' 式または論理 'or' 式のオペランドが 1 次式ではありませんMISRA C 12.59.2 SR2 
MISRA.LOGIC.SIDEEFF論理 'and' 式または論理 'or' 式の右側のオペランドは副作用がありますMISRA C 12.49.210.4
MISRA.LOGIC.SIDEEFF.COND条件式の分岐式に副作用がありますMISRA C 12.49.2 
MISRA.NULL.STMT行上に null ステートメント以外のものがあるか、またはコメントが不適切な場所に記述されていますMISRA C 14.39.19.2
MISRA.OBJ.TYPE.COMPAT型がその他の宣言の型と互換性がありませんMISRA C 8.49.111.0
MISRA.OBJ.TYPE.IDENT型がその他の宣言の型と一致していませんMISRA C 8.39.19.2
MISRA.ONEDEFRULE.FUNCヘッダー ファイルでグローバル関数が定義されていますMISRA C 8.59.1 
MISRA.ONEDEFRULE.VARヘッダー ファイルでグローバル変数が定義されていますMISRA C 8.59.1 
MISRA.PPARAM.NEEDS.CONSTポインター パラメーターを使用しないでアドレス指定されたオブジェクトを変更していますが、const を指すポインターとして宣言されていませんMISRA C 16.79.19.2 SR1、9.5、10.4
MISRA.PRAGMAドキュメントにない pragma ディレクティブですMISRA C 3.49.1 
MISRA.PTR.ARITH代数式または配列インデックス式でポインターが使用されていますMISRA C 17.1、17.49.1 
MISRA.PTR.TO_PTR_TO_PTRポインター宣言に 2 つ以上のレベルの間接指定がありますMISRA C 17.59.19.2
MISRA.RETURN.NOT_LAST関数内で return が最後のステートメントになっていませんMISRA C 14.79.19.2 SR2、9.5
MISRA.SHIFT.RANGEシフト演算子の右側のオペランドは範囲外 (左側のオペランドの最大ビット長以上か、または負) ですMISRA C 12.89.19.2
MISRA.SIGNED_CHAR.NOT_NUMERIC数値でない値に 'signed char' または 'unsigned char' が使用されていますMISRA C 6.29.19.2
MISRA.SIZEOF.SIDE_EFFECTsizeof のオペランドに副作用がありますMISRA C 12.39.1 
MISRA.STDLIB.ABORT'abort'、'exit'、'getenv' または 'system' が使用されていますMISRA C 20.119.1 
MISRA.STDLIB.ATOI'atof'、'atoi'、または 'atol' が使用されていますMISRA C 20.109.1 
MISRA.STDLIB.ERRNOエラー インジケーター 'errno' が使用されていますMISRA C 20.59.1 
MISRA.STDLIB.LONGJMPsetjmp マクロまたは longjmp 関数の使用MISRA C 20.79.1 
MISRA.STDLIB.MEMORY動的ヒープ メモリ割り当ての使用MISRA C 20.49.1 
MISRA.STDLIB.SIGNALsignal.h の信号処理装置の使用MISRA C 20.89.1 
MISRA.STDLIB.STDIOプロダクション コードで入力/出力ライブラリ stdio.h が使用されていますMISRA C 20.99.1 
MISRA.STDLIB.TIMEライブラリ time.h の時間処理関数の使用MISRA C 20.129.1 
MISRA.STDLIB.WRONGNAME標準ライブラリのマクロ、オブジェクトまたは関数の名前が再使用されていますMISRA C 20.29.19.2 SR2
MISRA.STDLIB.WRONGNAME.UNDERSCORE予約名が言語エンティティの名前に使用されていますMISRA C 20.29.2 SR2 
MISRA.STMT.NO_COMPOUNDswitch、while、do/while または for ステートメントのボディが複合ステートメントではありませんMISRA C 14.89.1 
MISRA.STMT.NO_EFFECTそのステートメントは副作用がなく、制御フローを変更しませんMISRA C 14.29.19.2、9.2 SR1
MISRA.SWITCH.BOOLswitch ステートメントの条件がブール式ですMISRA C 15.49.1 
MISRA.SWITCH.LABELswitch のラベルが switch ボディ内部の入れ子複合ステートメント内に属していますMISRA C 15.19.1 
MISRA.SWITCH.NO_BREAKswitch 句の最後に break ステートメントまたは throw ステートメントがありませんMISRA C 15.29.19.2
MISRA.SWITCH.NO_CASEswitch ステートメントに case 句がありませんMISRA C 15.59.19.2
MISRA.SWITCH.NODEFAULTswitch ステートメントの最後に default 句がありませんMISRA C 15.39.29.2 SR1
MISRA.TOKEN.BADCOMコメントに不適切な文字列がありますMISRA C 2.39.1 
MISRA.TOKEN.CPCOMC++ スタイルのコメントですMISRA C 2.29.1 
MISRA.TOKEN.OCTAL.ESCAPE8 進数のエスケープ シーケンスの使用MISRA C 7.19.1 
MISRA.TOKEN.OCTAL.INT8 進数の整数定数を使用していますMISRA C 7.19.110.4
MISRA.TOKEN.WRONGESCリテラルに不正なエスケープ シーケンスがありますMISRA C 4.19.1 
MISRA.TYPE.NAMECLASH型および変数/関数が同じ名前ですMISRA C 5.69.19.2、9.2 SR2、9.5
MISRA.TYPEDEF.NOT_UNIQUEtypedef の名前が固有ではありませんMISRA C 5.39.19.2、9.5
MISRA.UMINUS.UNSIGNED単項マイナスのオペランドに符号がありませんMISRA C 12.99.1 
MISRA.UNDEFUndef の使用MISRA C 19.69.1 
MISRA.UNDEF.NOTGLOBAL非グローバルレベルの undefMISRA C 19.59.1 
MISRA.UNDEF.WRONGNAME標準ライブラリからの名前が定義されていませんMISRA C 20.29.19.5
MISRA.UNDEF.WRONGNAME.UNDERSCORE予約名が定義されていませんMISRA C 20.29.2 SR2 
MISRA.UNION共用体が使用されていますMISRA C 18.49.1 
MISRA.VAR.HIDDEN変数宣言によって、上位スコープでの宣言が見えなくされていますMISRA C 5.29.29.2 SR1, 9.5, 10.1, 10.2
MISRA.VAR.MIN.VIS名前の表示が広すぎますMISRA C 8.79.19.2 SR2、10.1
MISRA.VAR.UNIQUE識別子がその他の識別子と不整合ですMISRA C 5.79.29.2 SR2
MISRA.VAR.UNIQUE.STATIC静的ストレージ指定の識別子がその他の識別子と不整合ですMISRA C 5.59.2 
MISRA.ZERO_EQ.IMPLICIT非ブール式が暗黙的にゼロに対してテストされていますMISRA C 13.29.19.2 SR1

サポートのサマリー

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