Klocwork C/C++ チェッカーおよび Community C/C++ チェッカーにマッピングされた AUTOSAR 18-10 標準
AUTOSAR C++14 分類基準を使用して、AUTOSAR C++14 Standard、リリース 18-10 とのコンプライアンスを確保することができます。AUTOSAR C++14 (18-10) 分類基準では、Klocwork C/C++ チェッカー、MISRA チェッカー、および Klocwork Community チェッカーの違反を検出します。
ガイドライン | チェッカー名および説明 |
---|---|
A0-1-2 (req.) |
MISRA.FUNC.UNUSEDRET 非 void 関数の戻り値が使用されていません |
A0-1-4 (req.) |
MISRA.FUNC.UNUSEDPAR 非仮想関数の仮引数が使用されていません |
A0-1-5 (req.) |
MISRA.FUNC.VIRTUAL.UNUSEDPAR 仮想関数セットの仮引数が使用されていません |
A0-4-2 (req.) |
AUTOSAR.TYPE.LONG_DOUBLE long double 型は使用してはなりません |
A2-5-1 (req.) |
MISRA.CHAR.TRIGRAPH 3 文字表記の使用 |
A2-5-2 (req.) |
MISRA.CHAR.DIGRAPH 2 文字表記の使用 |
A2-7-2 (req.) |
MISRA.TOKEN.COMMENTED.CODE コメントにはコメントアウトされたソースコードが含まれているようです |
A2-10-5 (adv.) |
MISRA.VAR.UNIQUE.STATIC 静的ストレージ指定の識別子がその他の識別子と不整合です |
A2-10-6 (req.) |
MISRA.TYPE.NAMECLASH.CPP.2008 ある名前空間の識別子が他の名前空間の識別子と同じスペルです |
A2-11-1 (req.) |
AUTOSAR.TYPE.QUAL.VOLATILE volatile 型修飾子は使用してはなりません |
A2-13-1 (req.) |
MISRA.TOKEN.WRONGESC.CPP.2008 リテラルに不正なエスケープ文字列があります |
A2-13-3 (req.) |
AUTOSAR.TYPE.WCHAR_T wchar_t 型は使用してはなりません |
A2-13-4 (req.) |
AUTOSAR.ADD.STR.TO.NON.CONST 文字列リテラルを非定数ポインターに割り当ててはなりません |
A2-13-5 (adv.) |
AUTOSAR.HEX.UPPER 16 進定数は大文字で記述する必要があります |
A3-1-1 (req.) |
AUTOSAR.ADD.ONEDEFRULE.FUNC 関数が一定義規則に違反しています AUTOSAR.ADD.ONEDEFRULE.VAR 変数が一定義規則に違反しています |
A3-1-3 (adv.) |
AUTOSAR.ADD.FILE.EXT ローカル実装ファイルにファイル拡張子 .cpp が付いていません |
A3-1-4 (req.) |
MISRA.DECL.ARRAY_SIZE 配列の宣言でサイズが不明です |
A3-1-5 (req.) |
AUTOSAR.FUNC.INLINE_DEF 関数定義をクラス定義内に配置できるのは、(1) その関数がインライン化される予定であるか、(2) それがメンバー関数テンプレートであるか、(3) それがクラステンプレートのメンバー関数である場合のみです |
A3-3-1 (req.) |
MISRA.LINKAGE.EXTERN 外部リンクを持つオブジェクトまたは関数の宣言がヘッダーファイルにありません |
A3-9-1 (req.) |
AUTOSAR.BUILTIN_NUMERIC 基本的な数値型の代わりに <cstdint> で提供される固定幅の整数型を使用する必要があります |
A4-5-1 (req.) |
AUTOSAR.ADD.ENUM.OP 列挙型を算術コンテキストで使用してはなりません |
A4-10-1 (req.) |
AUTOSAR.ADD.NULLPTR nullptr リテラルのみを null ポインター定数として使用する必要があります |
A5-0-1 (req.) |
AUTOSAR.ADD.EXPR.EVAL.MULTI.CALL 式の値は、標準で認められているどの評価順でも同じでなければなりません AUTOSAR.ADD.EXPR.EVAL.VOLATILE 式の値は、標準で認められているどの評価順でも同じでなければなりません |
A5-0-2 (req.) |
AUTOSAR.ADD.COND.NOT.BOOL if ステートメントおよび反復ステートメントの条件には bool 型を含める必要があります AUTOSAR.ADD.LOGIC.NOT_BOOL if ステートメントおよび反復ステートメントの条件には bool 型を含める必要があります |
A5-0-3 (req.) |
MISRA.PTR.TO_PTR_TO_PTR ポインタ宣言に 2 つ以上のレベルの間接指定があります |
A5-1-1 (req.) |
AUTOSAR.ADD.LITERAL 型の初期化を除いて、リテラル値を使用してはなりません |
A5-1-2 (req.) |
AUTOSAR.LAMBDA.IMPLICIT_CAPTURE 変数はラムダ式で暗黙的にキャプチャしてはなりません |
A5-1-3 (req.) |
AUTOSAR.LAMBDA.NO_PARAM_LIST パラメーターリスト (空の可能性がある) はすべてのラムダ式に含める必要があります |
A5-1-4 (req.) |
AUTOSAR.LAMBDA.REF_LIFETIME ラムダ式オブジェクトは、その参照キャプチャされたオブジェクトよりも長く存続してはなりません |
A5-1-6 (adv.) |
AUTOSAR.LAMBDA.IMPLICIT_RETURN_TYPE 非 void 戻り型ラムダ式の戻り型は明示的に指定する必要があります |
A5-1-7 (req.) |
AUTOSAR.LAMBDA.TYPE_OPERAND ラムダを decltype または typeid のオペランドにしてはなりません |
A5-1-8 (adv.) |
AUTOSAR.LAMBDA.NESTED ラムダ式を他のラムダ式内で定義してはなりません |
A5-2-1 (adv.) |
AUTOSAR.CAST.DYNAMIC dynamic_cast は使用してはなりません |
A5-2-2 (req.) |
AUTOSAR.CAST.CSTYLE 従来の C スタイルのキャストは使用してはなりません |
A5-2-3 (req.) |
MISRA.CAST.CONST キャスト演算により const または volatile がポインターまたは参照から除外されます。 |
A5-2-4 (req.) |
AUTOSAR.CAST.REINTERPRET reinterpret_cast は使用してはなりません |
A5-2-5 (req.) |
ABV.ANY_SIZE_ARRAY バッファオーバーフロー - 配列インデックスが範囲外 ABV.GENERAL バッファオーバーフロー - 配列インデックスが範囲外 ABV.GENERAL.MULTIDIMENSION バッファオーバーフロー - 配列インデックスが範囲外 ABV.ITERATOR バッファオーバーフロー - 配列インデックスが範囲外の可能性 ABV.MEMBER バッファオーバーフロー - 配列インデックスが範囲外 ABV.STACK バッファオーバーフロー - ローカル配列インデックスが範囲外 ABV.TAINTED 未検証の入力によるバッファオーバーフロー ABV.UNICODE.BOUND_MAP 文字関数のマッピング時のバッファオーバーフロー ABV.UNICODE.FAILED_MAP 関数のマッピングに失敗します ABV.UNICODE.NNTS_MAP 文字関数のマッピング時のバッファオーバーフロー ABV.UNICODE.SELF_MAP 関数のマッピングに失敗します ABV.UNKNOWN_SIZE バッファオーバーフロー - 配列インデックスが範囲外 |
A5-2-6 (req.) |
MISRA.LOGIC.POSTFIX 論理 'and' 式または論理 'or' 式のオペランドが後置式ではありません |
A5-3-2 (req.) |
NPD.CHECK.CALL.MIGHT ポインタを明示的に NULL チェックした後に逆参照する可能性のある関数に渡す可能性があります NPD.CHECK.CALL.MUST ポインタを明示的に NULL チェックした後に逆参照する可能性がある関数に渡します NPD.CHECK.MIGHT ポインタを明示的に NULL チェックした後に逆参照する可能性があります NPD.CHECK.MUST ポインタを明示的に NULL チェックした後に逆参照します NPD.CONST.CALL 逆参照する可能性のある関数に NULL を渡しています NPD.CONST.DEREF NULL は逆参照されます NPD.FUNC.CALL.MIGHT NULL を返す関数の戻り値が、これを逆参照する可能性のある別の関数に渡される可能性があります NPD.FUNC.CALL.MUST NULL を返す関数の戻り値が、これを逆参照する可能性がある別の関数に渡されます NPD.FUNC.MIGHT NULL を返す可能性のある関数の戻り値が逆参照される場合があります NPD.FUNC.MUST NULL を返す可能性がある関数の戻り値が逆参照されます NPD.GEN.CALL.MIGHT NULLポインタを逆参照する可能性がある関数に渡す場合があります NPD.GEN.CALL.MUST NULLポインタを逆参照する関数に渡します NPD.GEN.MIGHT NULLポインタを逆参照する可能性があります NPD.GEN.MUST NULLポインタを逆参照します |
A5-6-1 (req.) |
DBZ.CONST ゼロ定数による除算が発生しました DBZ.CONST.CALL 値 '0' が除数としてこの値を使用できる関数に渡されます DBZ.GENERAL ゼロ除算が発生した可能性があります DBZ.ITERATOR ループ反復子でゼロ除算が発生した可能性があります DBZ.ITERATOR.CALL 関数呼出しでゼロ除算が発生した可能性があります |
A5-10-1 (req.) |
AUTOSAR.VIRTUAL.PTR_COMPARE メンバー仮想関数を指すポインターのテストは、null ポインター定数との等価を確認する目的でのみ行う必要があります |
A5-16-1 (req.) |
AUTOSAR.TERNARY.NESTED 3 項条件演算子を部分式として使用してはなりません |
A6-2-1 (req.) |
AUTOSAR.ADD.ASSIGN.OP.SIDE.EFFECT move および copy 代入演算子は、副作用を発生させることなく基本クラスとクラスのデータメンバーの移動または個別コピーを行う必要があります |
A6-4-1 (req.) |
AUTOSAR.SWITCH.CASECOUNT switch ステートメントには、デフォルトのラベルとは異なる 2 つ以上の case 節を指定する必要があります |
A6-5-2 (req.) |
MISRA.FOR.COUNTER.FLT for ループのカウンターが浮動小数点タイプです MISRA.FOR.COUNTER.MANY for ループのカウンターが多すぎます |
A6-5-3 (adv.) |
AUTOSAR.DO do ステートメントは使用してはなりません |
A6-5-4 (adv.) |
MISRA.FOR.COUNTER.MANY for ループのカウンターが多すぎます |
A6-6-1 (req.) |
AUTOSAR.GOTO goto ステートメントは使用してはなりません |
A7-1-1 (req.) |
MISRA.VAR.NEEDS.CONST 変数は変更されませんが、const 修飾子なしで宣言されています |
A7-1-3 (req.) |
AUTOSAR.TYPEDEF.CVQ_EAST CV 修飾子は、typedef または using name である型の右側に置く必要があります |
A7-1-4 (req.) |
AUTOSAR.REGISTER register キーワードは使用してはなりません |
A7-1-5 (req.) |
AUTOSAR.ADD.AUTO.SPECIFIER ここに auto 指定子を使用してはなりません |
A7-1-6 (req.) |
AUTOSAR.TYPEDEF typedef 指定子は使用してはなりません |
A7-1-7 (req.) |
AUTOSAR.STYLE.SINGLE_DECL_PER_LINE 各式ステートメントと識別子宣言は、個別の行に配置する必要があります AUTOSAR.STYLE.SINGLE_STMT_PER_LINE 各式ステートメントと識別子宣言は、個別の行に配置する必要があります |
A7-1-8 (req.) |
AUTOSAR.DECL.NONTYPE_SPECIFIER 宣言では、型指定子以外の指定子は型指定子の前に置く必要があります |
A7-1-9 (req.) |
AUTOSAR.DECL.IN_DEFN クラス、構造体、または列挙をその型の定義で宣言してはなりません |
A7-2-2 (req.) |
AUTOSAR.ENUM.EXPLICIT_BASE_TYPE 列挙の基になるベース型は、明示的に定義する必要があります |
A7-2-3 (req.) |
AUTOSAR.ENUM.UNSCOPED 列挙は、スコープ付きの enum クラスとして宣言する必要があります |
A7-2-4 (req.) |
MISRA.ENUM.INIT 1 番目以外の列挙子が明示的に初期化されていますが、一部の要素が明示的に初期化されていません |
A7-3-1 (req.) |
MISRA.NS.USING_DECL 同じ名前空間での識別子に対する複数宣言はその識別子の using 宣言にまたがってはいけません |
A7-4-1 (req.) |
AUTOSAR.ASM asm 宣言は使用してはなりません |
A7-5-1 (req.) |
AUTOSAR.ADD.RTN.REF.CONST.PARAM const への参照によって渡されるパラメーターへの参照またはポインターを関数が返してはなりません |
A7-5-2 (req.) |
MISRA.FUNC.RECUR 再帰関数 |
A8-2-1 (req.) |
AUTOSAR.ADD.FUNC.TEMPLATE.TRAIL.RTN 関数テンプレートでは、戻り値型がパラメーターの型に依存する場合、後置戻り値型構文を使用する必要があります |
A8-4-1 (req.) |
MISRA.FUNC.VARARG 関数が可変数の引数を持っています |
A8-4-2 (req.) |
FUNCRET.GEN 非 void 関数に戻り値がありません |
A8-5-0 (req.) |
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 未初期化の変数 |
A8-5-1 (req.) |
CWARN.MEMBER.INIT.ORDER 初期化リストのメンバーが、クラスで宣言された順序でリストされません |
A8-5-3 (req.) |
AUTOSAR.ADD.AUTO.INIT.FORMAT auto 型の変数を {} または ={} ブレース初期化を使用して初期化してはなりません。 |
A8-5-4 (adv.) |
AUTOSAR.ADD.CTOR.INIT.LIST std::initializer_list 型のパラメーターを受け取るユーザー宣言コンストラクタがクラスに含まれる場合、特殊メンバー関数コンストラクタを除いて、そのコンストラクタが唯一のコンストラクタでなければなりません |
A9-5-1 (req.) |
AUTOSAR.UNION 和集合は使用してはなりません |
A10-2-1 (req.) |
AUTOSAR.ADD.REDEF.DERIVED.FUNC パブリックの、または保護された非仮想メンバー関数を派生クラスで再定義してはなりません。 |
A10-3-1 (req.) |
AUTOSAR.MEMB.VIRTUAL.SPEC 仮想関数宣言には 3 つの指定子 (1) virtual、(2) override、(3) final の内の 1 つのみが含まれていなければなりません |
A10-3-2 (req.) |
AUTOSAR.ADD.OVERRIDE.VIRTUAL.SPECIFIER オーバーライドする仮想関数はそれぞれ、override または final 指定子で宣言する必要があります |
A10-3-3 (req.) |
AUTOSAR.MEMB.VIRTUAL.FINAL 仮想関数は final クラスに含めてはなりません |
A10-3-5 (req.) |
AUTOSAR.ADD.ASSIGN.OP.VIRTUAL ユーザー定義の代入演算子は virtual であってはなりません |
A11-3-1 (req.) |
AUTOSAR.FRIEND_DECL フレンド宣言は使用してはなりません |
A12-1-1 (req.) |
MISRA.CTOR.BASE コンストラクタがその基本クラスのコンストラクタを明示的に呼び出していません |
A12-1-2 (req.) |
AUTOSAR.CTOR.NSDMI_INIT_LIST コンストラクタ内の NSDMI と非静的メンバー初期化子の両方を同じ型で使用してはなりません |
A12-1-4 (req.) |
AUTOSAR.CTOR.NO_EXPLICIT 基本型の単一の引数で呼び出せるコンストラクタはすべて、explicit と宣言する必要があります |
A12-4-2 (adv.) |
AUTOSAR.DTOR.NON_VIRTUAL クラスのパブリックデストラクタが非仮想的である場合、そのクラスは final と宣言する必要があります |
A12-6-1 (req.) |
AUTOSAR.ADD.CTOR.MEMBER.INIT このコンストラクタによって初期化されるクラスデータメンバーはすべて、メンバー初期化子を使用して初期化する必要があります |
A12-8-4 (req.) |
AUTOSAR.CTOR.MOVE.COPY_SEMANTICS 移動コンストラクタがコピーセマンティクスを使用してそのクラスメンバーと基本クラスを初期化してはなりません |
A12-8-5 (req.) |
CL.SELF-ASSIGN 解放済みメモリの使用 (二重解放) - operator= |
A12-8-7 (adv.) |
AUTOSAR.ASSIGN.REF_QUAL 代入演算子は、参照修飾子 & を使用して宣言する必要があります |
A13-1-2 (req.) |
AUTOSAR.OP.LITERAL.SUFFIX ユーザー定義のリテラル演算子のユーザー定義の接尾辞は、アンダースコアで始まり、その後に 1 字以上の英字が続く必要があります |
A13-2-1 (req.) |
AUTOSAR.ASSIGN.RETURN 代入演算子は "this" への参照を返す必要があります |
A13-2-2 (req.) |
AUTOSAR.OP.BINARY.RETVAL 2 進算術演算子とビット演算子は "prvalue" を返す必要があります |
A13-2-3 (req.) |
AUTOSAR.OP.RELATIONAL.RETVAL 関係演算子はブール値を返す必要があります |
A13-5-1 (req.) |
AUTOSAR.OP.INDEX.NON_CONST "operator[]" を非 const バージョンで多重定義する予定であれば、const バージョンも実装する必要があります |
A13-5-2 (req.) |
AUTOSAR.OP.CONV.NON_EXPLICIT ユーザー定義の変換演算子はすべて、explicit と定義する必要があります |
A13-5-3 (adv.) |
AUTOSAR.OP.CONV ユーザー定義の変換演算子は使用してはなりません |
A13-5-5 (req.) |
AUTOSAR.OP.COMPARE.MEMBER 比較演算子は非メンバー関数でなければなりません AUTOSAR.OP.COMPARE.NON_NOEXCEPT 比較演算子は noexcept でなければなりません AUTOSAR.OP.COMPARE.PARAMS 比較演算子のパラメーター型は同一でなければなりません |
A13-6-1 (req.) |
AUTOSAR.DIGIT_SEPARATORS 数字列の区切り子 ' は、(1) 10 進数を 3 桁ずつ、(2) 16 進数を 2 桁ずつ、(3) 2 進数を 4 桁ずつ区切る場合のみ使用する必要があります |
A14-5-3 (adv.) |
AUTOSAR.OP.TMPL.NON_MEMBER 非メンバージェネリック演算子は、クラス (構造体) 型、列挙型、または和集合型の宣言が含まれない名前空間でのみ宣言する必要があります |
A14-8-2 (req.) |
AUTOSAR.FUNC.TMPL.EXPLICIT_SPEC 関数テンプレートの明示的な指定は使用してはなりません |
A15-1-2 (req.) |
MISRA.THROW.PTR 例外オブジェクトがポインタになっています |
A15-1-4 (req.) |
MLK.MIGHT メモリリークの可能性 MLK.MUST メモリリーク MLK.RET.MIGHT メモリリークの可能性 MLK.RET.MUST メモリリーク |
A15-2-2 (req.) |
CL.MLK メモリリーク - デストラクタで発生 |
A15-3-3 (req.) |
MISRA.CATCH.ALL try-catch ブロックに省略記号例外ハンドラーがありません |
A15-3-5 (req.) |
MISRA.CATCH.BY_VALUE クラス タイプの例外オブジェクトが値によってキャッチされています |
A15-4-1 (req.) |
AUTOSAR.EXCPT.DYNAMIC_SPEC 動的な例外指定は使用してはなりません |
A15-4-2 (req.) |
AUTOSAR.EXCPT.NOEXCPT_THROW 関数を noexcept、noexcept(true)、または noexcept(<true condition>) と宣言する場合、その関数は例外を送出して終了してはなりません |
A15-5-1 (req.) |
AUTOSAR.EXCPT.SPECIAL_MEMBER_THROW ユーザー指定のクラスデストラクタ、割り当て解除関数、移動コンストラクタ、移動代入演算子、およびスワップ関数は、どれも例外を送出して終了してはなりません |
A16-0-1 (req.) |
MISRA.USE.DEFINE マクロが保護されずに定義されています |
A16-2-1 (req.) |
MISRA.INCL.SYMS ヘッダーファイル名に非標準文字が使用されています |
A17-0-1 (req.) |
MISRA.DEFINE.WRONGNAME 標準ライブラリからの名前がマクロ名に使用されています MISRA.DEFINE.WRONGNAME.UNDERSCORE 予約名がマクロ名に使用されています |
A18-0-2 (req.) |
MISRA.STDLIB.ATOI ライブラリ stdlib.h から 'atof'、'atoi' または 'atol' が使用されています |
A18-0-3 (req.) |
AUTOSAR.SETLOCALE ライブラリ <clocale> (locale.h) と setlocale 関数は使用してはなりません |
A18-1-1 (req.) |
AUTOSAR.ARRAY.CSTYLE C スタイルの配列は使用してはなりません |
A18-1-2 (req.) |
AUTOSAR.VECTOR.BOOL std::vector<bool> の特殊化は使用してはなりません |
A18-1-3 (req.) |
AUTOSAR.AUTO_PTR std::auto_ptr 型は使用してはなりません |
A18-5-1 (req.) |
AUTOSAR.STDLIB.MEMORY 関数 malloc、calloc、realloc、および free は使用してはなりません |
A18-5-2 (req.) |
AUTOSAR.OP.NEW_DELETE non-placement new 式または non-placement delete 式を使用してはなりません |
A18-5-3 (req.) |
FMM.MIGHT メモリの解放の不一致の可能性 FMM.MUST メモリの解放の不一致 |
A18-5-4 (req.) |
AUTOSAR.OP.DELETE.MISSING_VERSION プロジェクトにサイズ指定付きまたはサイズ指定なしの演算子 "delete" がグローバルに定義されている場合は、サイズ指定付きとサイズ指定なしの両方を定義する必要があります |
A18-5-11 (req.) |
AUTOSAR.OP.NEW_NO_DELETE "演算子 new" と "演算子 delete" は一緒に定義する必要があります |
A18-9-1 (req.) |
AUTOSAR.STDLIB.BIND std::bind は使用してはなりません |
A18-9-2 (req.) |
AUTOSAR.FORWARD 他の関数への値の転送は、(1) std::move (値が r 値参照の場合) か (2) std::forward (値が前方参照の場合) を使用して行う必要があります |
A18-9-3 (req.) |
AUTOSAR.STDLIB.MOVE.CONST const または const& と宣言されたオブジェクトで std::move を使用してはなりません |
A21-8-1 (req.) |
AUTOSAR.STDLIB.CCTYPE.UCHAR <cctype> で定義される文字処理関数の引数は、unsigned char として表現できなければなりません |
A26-5-1 (req.) |
AUTOSAR.STDLIB.RAND 疑似乱数は std::rand() を使用して生成してはなりません AUTOSAR.STDLIB.RANDOM_SHUFFLE 疑似乱数は std::rand() を使用して生成してはなりません |
A26-5-2 (req.) |
AUTOSAR.STDLIB.RANDOM.NBR_GEN_DEFAULT_INIT 乱数エンジンをデフォルトで初期化してはなりません |
A27-0-2 (adv.) |
NNTS.MIGHT バッファオーバーフロー - 非 NULL 終了文字列 NNTS.MUST バッファオーバーフロー - 非 NULL 終了文字列 NNTS.TAINTED 未検証のユーザー入力が原因のバッファオーバーフロー - 非 NULL 終了文字列 SV.UNBOUND_STRING_INPUT.CIN バインドされていない文字列入力についての cin の使用法 SV.UNBOUND_STRING_INPUT.FUNC バインドされていない文字列入力の使用法 |
A27-0-4 (req.) |
SV.BANNED.RECOMMENDED.ALLOCA 禁止が推奨されているAPI: スタック割り当て関数 SV.BANNED.RECOMMENDED.NUMERIC 禁止が推奨されているAPI: 安全でない数値化関数 SV.BANNED.RECOMMENDED.OEM 禁止が推奨されているAPI: OEM 文字ページ変換関数 SV.BANNED.RECOMMENDED.PATH 禁止が推奨されているAPI: 安全でないパス名操作関数 SV.BANNED.RECOMMENDED.SCANF 禁止が推奨されているAPI: 安全でない scanf 型関数 SV.BANNED.RECOMMENDED.SPRINTF 禁止が推奨されているAPI: 安全でない sprintf 型関数 SV.BANNED.RECOMMENDED.STRLEN 禁止が推奨されているAPI: 安全でない文字列長関数 SV.BANNED.RECOMMENDED.TOKEN 禁止が推奨されているAPI: 安全でないトークン作成関数 SV.BANNED.RECOMMENDED.WINDOW 禁止が推奨されているAPI: 安全でないウィンドウ関数 |
M0-1-1 (req.) |
UNREACH.ENUM enum が取りうる値が原因で、コードは到達不能になっています UNREACH.GEN 到達不能コード UNREACH.RETURN 到達不能な void return文 |
M0-1-2 (req.) |
CWARN.NOEFFECT.UCMP.GE 符号なし値と 0 との比較は、常に true になります CWARN.NOEFFECT.UCMP.GE.MACRO マクロ内で符号なし値と 0 との比較は、常に true になります CWARN.NOEFFECT.UCMP.LT 符号なし値と 0 との比較は、常に false になります CWARN.NOEFFECT.UCMP.LT.MACRO マクロ内で符号なし値と 0 との比較は、常に false になります |
M0-1-3 (req.) |
LV_UNUSED.GEN ローカル変数は使用されません |
M0-1-9 (req.) |
VA_UNUSED.GEN 値を割り当て後に使用しません VA_UNUSED.INIT 値を初期化後に使用しません |
M0-1-10 (adv.) |
UNUSED.FUNC.GEN 関数を定義していますが、使用していません |
M0-2-1 (req.) |
MISRA.ASSIGN.OVERLAP オブジェクトがオーバーラップするオブジェクトに割り当てられています |
M2-7-1 (req.) |
MISRA.TOKEN.BADCOM コメントに不適切な文字列があります |
M2-13-2 (req.) |
MISRA.TOKEN.OCTAL.ESCAPE 8 進数のエスケープ文字列の使用 MISRA.TOKEN.OCTAL.INT 8 進数の整数定数を使用しています |
M2-13-3 (req.) |
MISRA.LITERAL.UNSIGNED.SUFFIX 'U' 添え字の付かない符号なし整数リテラルです |
M2-13-4 (req.) |
MISRA.LITERAL.SUFFIX.CASE リテラルの添え字は小文字です |
M3-1-2 (req.) |
MISRA.DECL.FUNC_LOCAL 関数がローカルで宣言されています |
M3-2-1 (req.) |
MISRA.OBJ.TYPE.COMPAT 型がその他の宣言の型と互換性がありません |
M3-3-2 (req.) |
MISRA.FUNC.STATIC.REDECL 関数またはオブジェクトの再宣言に 'static' 修飾子がありません |
M3-4-1 (req.) |
MISRA.VAR.MIN.VIS 名前の可視性が高すぎます |
M3-9-1 (req.) |
MISRA.OBJ.TYPE.IDENT 型がその他の宣言の型と一致していません |
M3-9-3 (req.) |
MISRA.FLOAT.BIT.REPR 浮動小数点値のビット操作結果はストレージのレイアウトによって変わります |
M4-5-1 (req.) |
MISRA.LOGIC.OPERATOR.NOT_BOOL 論理演算ではない演算子のオペランドが実質的にはブール値です |
M4-5-3 (req.) |
MISRA.CHAR.OPERAND 型 'char' または 'wchar_t' の式が文字以外のオペランドで使用されています |
M4-10-1 (req.) |
MISRA.LITERAL.NULL.INT NULL が整数値として使用されています |
M4-10-2 (req.) |
MISRA.LITERAL.NULL.PTR リテラルのゼロが NULLポインタ定数として使用されています |
M5-0-2 (adv.) |
MISRA.EXPR.PARENS.INSUFFICIENT 式の演算子優先規則に制限された依存性が必要です MISRA.EXPR.PARENS.REDUNDANT 式の演算子優先規則に制限された依存性が必要です |
M5-0-3 (req.) |
MISRA.CVALUE.IMPL.CAST.CPP 暗黙の型変換で符号、型サイズ、型の違いにより情報の損失を起こす記述があります。 |
M5-0-4 (req.) |
MISRA.CONV.INT.SIGN 暗黙的な整数変換により符号が変わります |
M5-0-5 (req.) |
MISRA.CONV.FLOAT 暗黙的な浮動小数点変換です |
M5-0-6 (req.) |
MISRA.CONV.NUM.NARROWER 狭いタイプへの暗黙的な数値変換です |
M5-0-7 (req.) |
MISRA.CAST.FLOAT_INT 整数型への浮動小数点式のキャスト MISRA.CAST.INT_FLOAT 浮動小数点タイプへの複合式のキャスト |
M5-0-8 (req.) |
MISRA.CAST.FLOAT.WIDER より広い浮動小数点タイプへの浮動小数点式のキャスト MISRA.CAST.INT.WIDER より広い整数型への複合式のキャスト |
M5-0-9 (req.) |
MISRA.CAST.INT.SIGN 自明ではない複合式が別の符号を持つ型にキャストされています |
M5-0-10 (req.) |
MISRA.CAST.UNSIGNED_BITS unsigned char または short でのビット演算の結果は元の型にキャストできません |
M5-0-11 (req.) |
MISRA.CHAR.NOT_CHARACTER 文字でない値に 'char' が使用されています |
M5-0-12 (req.) |
MISRA.SIGNED_CHAR.NOT_NUMERIC 数値でない値に 'signed char' または 'unsigned char' が使用されています |
M5-0-14 (req.) |
MISRA.EXPR.COND.NOT_BOOLEAN 条件式の最初のオペランドがブール式ではありません |
M5-0-15 (req.) |
MISRA.PTR.ARITH 代数式または配列インデックス式でポインタが使用されています |
M5-0-16 (req.) |
MISRA.PTR.ARITH.NOT_SAME.2008 ポインターオペランドの計算から得られるポインターは、そのポインターオペランドと同じ配列の要素をアドレス指定します |
M5-0-20 (req.) |
MISRA.BITS.OPERAND ビット演算のオペランドが別の基底型を持っています |
M5-0-21 (req.) |
MISRA.BITS.NOT_UNSIGNED ビット演算のオペランドが符号なし整数ではありません MISRA.BITS.NOT_UNSIGNED.PREP ビット演算のオペランドが符号なし整数ではありません |
M5-2-2 (req.) |
MISRA.CAST.PTR.VRCLASS 仮想基本クラスを指すポインタから派生クラスを指すポインタへのキャストにおいて、'dynamic_cast' を用いていません |
M5-2-3 (adv.) |
MISRA.CAST.POLY.TYPE 多様性基本クラスから派生クラスへのキャストです |
M5-2-6 (req.) |
MISRA.CAST.FUNC_PTR.CPP キャストにより関数ポインタがその他のポインタ型に変換されます |
M5-2-8 (req.) |
MISRA.CAST.INT_TO_PTR 整数型または void を指すポインタを持つオブジェクトがポインタ型にキャストされています |
M5-2-9 (req.) |
MISRA.CAST.PTR_TO_INT ポインタと整数型間のキャスト |
M5-2-10 (req.) |
MISRA.INCR_DECR.OTHER 増分または減分の演算子がその他の演算子と混合して式で使用されています |
M5-2-11 (req.) |
MISRA.BIN_OP.OVERLOAD カンマ、|| または && 演算子が多重定義されています |
M5-2-12 (req.) |
MISRA.FUNC.ARRAY.PARAMS 配列タイプの関数引数がポインタに減退しています |
M5-3-1 (req.) |
MISRA.LOGIC.NOT_BOOL 論理演算のオペランドがブール値ではありません |
M5-3-2 (req.) |
MISRA.UMINUS.UNSIGNED 単項マイナス演算子が符号なしオペランドに対して使用されています。 |
M5-3-3 (req.) |
MISRA.UN_OP.OVERLOAD 単項の & 演算子が多重定義されています |
M5-3-4 (req.) |
MISRA.SIZEOF.SIDE_EFFECT sizeof のオペランドに副作用があります |
M5-8-1 (req.) |
MISRA.SHIFT.RANGE シフト演算子の右側のオペランドは範囲外 (左側のオペランドの最大ビット長以上か、または負) です |
M5-14-1 (req.) |
MISRA.LOGIC.SIDEEFF 論理 'and' 式または論理 'or' 式の右側のオペランドは副作用があります |
M5-18-1 (req.) |
MISRA.COMMA カンマ演算子が使用されています |
M5-19-1 (req.) |
MISRA.COMP.WRAPAROUND 条件内でラップアラウンドしています MISRA.ELIF.WRAPAROUND #elif ディレクティブでラップアラウンドします |
M6-2-1 (req.) |
MISRA.ASSIGN.COND 条件内で代入演算子が使用されています MISRA.ASSIGN.SUBEXPR 代入演算子は条件外の部分式に使用されています |
M6-2-2 (req.) |
MISRA.FLOAT_EQUAL 浮動小数点式のイコールがテストされています |
M6-2-3 (req.) |
MISRA.NULL.STMT 行上に NULL ステートメント以外のものがあるか、またはコメントが不適切な場所に記述されています |
M6-3-1 (req.) |
MISRA.STMT.NO_COMPOUND switch、while、do/while または for ステートメントのボディが複合ステートメントではありません |
M6-4-1 (req.) |
MISRA.IF.NO_COMPOUND if/else ステートメントのボディが複合ステートメントではありません |
M6-4-2 (req.) |
MISRA.IF.NO_ELSE if/else-if ステートメントのチェインが else で終了していないか、または空の else 句で終了しています |
M6-4-3 (req.) |
MISRA.SWITCH.NOT_WELL_FORMED switch ステートメントの形式が不適切です |
M6-4-4 (req.) |
MISRA.SWITCH.LABEL switch のラベルが switch ボディ内の入れ子複合ステートメント内に置かれています |
M6-4-5 (req.) |
MISRA.SWITCH.NO_BREAK switch 句の最後に break ステートメントまたは throw ステートメントがありません |
M6-4-6 (req.) |
MISRA.SWITCH.NODEFAULT switch ステートメントの最後に default 句がありません |
M6-4-7 (req.) |
MISRA.SWITCH.BOOL switch ステートメントの条件がブール式です |
M6-5-2 (req.) |
MISRA.FOR.COND.EQ ループカウンターに対して++ 演算子または -- 演算子を使用していませんが、ループカウンターがイコールかどうかで判定しています |
M6-5-3 (req.) |
MISRA.FOR.COND.CHANGE for ループのカウンターがループ条件セクション内で変更されています MISRA.FOR.STMT.CHANGE for ループのカウンターがループステートメント内で変更されています |
M6-5-4 (req.) |
MISRA.FOR.INCR for ループのカウンターが不適切な方法で変更されています |
M6-5-5 (req.) |
MISRA.FOR.LOOP_CONTROL.CHANGE.COND for ループの条件セクションでループ制御変数が変更されています MISRA.FOR.LOOP_CONTROL.CHANGE.EXPR for ループの式セクションでループ制御変数が変更されています |
M6-5-6 (req.) |
MISRA.FOR.LOOP_CONTROL.NOT_BOOLEAN ループ制御変数がブール値ではありません |
M6-6-1 (req.) |
MISRA.GOTO.NESTED 入れ子複合ステートメント内で宣言されたラベルに goto しています |
M6-6-2 (req.) |
MISRA.GOTO.AFTER.LABEL goto が制約なしで使用されています |
M6-6-3 (req.) |
MISRA.CONTINUE.ILL continue ステートメントが不適切な形式の for ループで使用されています |
M7-1-2 (req.) |
MISRA.PPARAM.NEEDS.CONST ポインタパラメーターを使用しないでアドレスされたオブジェクトを変更していますが、const を指すポインタとして宣言されていません |
M7-3-1 (req.) |
MISRA.NS.GLOBAL グローバル名前空間で関数、変数、または型が宣言されています MISRA.NS.GLOBAL.USING グローバル名前空間でのディレクティブまたは宣言の使用 |
M7-3-2 (req.) |
MISRA.NS.MAIN 'main' の名前の付いた非グローバル関数が定義されています |
M7-3-3 (req.) |
MISRA.NAMESPACE.UNMD ヘッダーファイルに名前のない名前空間があります |
M7-3-4 (req.) |
MISRA.NS.USING_DIR ディレクティブを使用しています |
M7-3-6 (req.) |
MISRA.NAMESPACE.DECL ヘッダーファイルに using 宣言があります MISRA.NAMESPACE.DIR ヘッダーファイルに using ディレクティブがあります MISRA.NS.USING.HEADER ヘッダーファイルでディレクティブまたは宣言が使用されています |
M7-4-2 (req.) |
MISRA.PRAGMA.ASM 不正なアセンブラ命令です |
M7-4-3 (req.) |
MISRA.ASM.ENCAPS アセンブリ言語が分離されていません |
M8-0-1 (req.) |
MISRA.DECL.MANY_DCLS 1 つの宣言に複数の宣言子があります |
M8-3-1 (req.) |
MISRA.SAME.DEFPARAMS オーバーライドする仮想関数とオーバーライドされる関数が異なるデフォルト引数を持っています |
M8-4-2 (req.) |
MISRA.FUNC.PARAMS.IDENT 関数の宣言と定義で使用される識別子が一致していません |
M8-4-4 (req.) |
MISRA.FUNC.ADDR & 演算子なしで関数のアドレスが使用されています |
M8-5-2 (req.) |
MISRA.INIT.BRACES 不適切な初期化子が配置を固定しています |
M9-3-1 (req.) |
MISRA.CONST.RET.NON_CONST 定数のメンバー関数が非定数のポインタをメンバー変数に返しています |
M9-3-3 (req.) |
MISRA.MEMB.NON_CONST 非定数のメンバー関数はどのメンバー変数も変更しません MISRA.MEMB.NON_STATIC 非スタティックメンバー関数は同じクラスのその他の非スタティックメンバーを使用しません |
M9-6-4 (req.) |
MISRA.BITFIELD.SIGNED 名前付きの符号付きビットフィールドの長さが 2 未満です |
M10-1-1 (adv.) |
MISRA.DERIVE.VIRTUAL クラスが仮想基本クラスから派生しています |
M10-1-2 (req.) |
MISRA.VIRTUAL.BASE.DIAMOND 基本クラスがダイヤモンド階層以外で仮想として使用されています |
M10-1-3 (req.) |
MISRA.BASE.VIRTUAL.NOTVIRTUAL 基本クラスが継承階層で仮想および非仮想の両方で使用されています |
M10-2-1 (adv.) |
MISRA.BASE.IDS.UNIQUE 継承階層でメンバー名が 2 回使用されています |
M10-3-3 (req.) |
MISRA.PUREVIRT.OVRD 純粋な仮想関数が純粋でない仮想関数をオーバーライドしています |
M11-0-1 (req.) |
MISRA.MEMB.NOT_PRIVATE 非 POD クラスのメンバー変数がプライベートではありません |
M12-1-1 (req.) |
MISRA.CTOR.DYNAMIC オブジェクトの動的タイプがそのコンストラクタのボディから使用されています MISRA.DTOR.DYNAMIC オブジェクトの動的タイプがそのデストラクタのボディから使用されています |
M14-5-3 (req.) |
MISRA.COPYASSIGN.TMPL コピー代入演算子は、単一の汎用パラメーターを持つテンプレートコピー代入演算子をクラスに持たせるときに定義する必要があります |
M14-6-1 (req.) |
MISRA.TEMPLMEM.NOQUAL インスタンス化されたテンプレートで、依存基本クラスで宣言されたメンバーが修飾子または 'this' なしで使用されています |
M15-0-3 (req.) |
MISRA.TRY.JUMP goto ステートメントまたは switch ステートメントでコントロールを try ブロックに転送できます |
M15-1-2 (req.) |
MISRA.THROW.NULL NULL が明示的にスローされています |
M15-1-3 (req.) |
MISRA.THROW.EMPTY 空のスロー式が catch ブロックに属していません |
M15-3-3 (req.) |
MISRA.CTOR.TRY.NON_STATIC コンストラクタまたはデストラクタの関数 try-catch ブロックが非スタティックなメンバーを参照しています |
M15-3-6 (req.) |
MISRA.CATCH.WRONGORD try-catch ブロックで基本例外クラスのハンドラーが派生例外クラスのハンドラーよりも先に置かれています |
M15-3-7 (req.) |
MISRA.CATCH.NOALL 省略記号例外ハンドラーが try-catch ブロックの最後に置かれていません |
M16-0-1 (req.) |
MISRA.INCL.INSIDE include ディレクティブの前にプリプロセッサ出力トークンがあります |
M16-0-2 (req.) |
MISRA.DEFINE.NOTGLOBAL グローバルレベル以外で定義されています MISRA.UNDEF.NOTGLOBAL グローバルレベル以外で定義されていません |
M16-0-5 (req.) |
MISRA.EXPANSION.DIRECTIVE マクロの引数内にディレクティブのようなトークンがあります |
M16-0-6 (req.) |
MISRA.DEFINE.NOPARS マクロパラメーターに括弧がありません |
M16-0-7 (req.) |
MISRA.ELIF.UNDEF #elif ディレクティブでマクロが定義されていません MISRA.IF.UNDEF #if ディレクティブでマクロが定義されていません |
M16-0-8 (req.) |
MISRA.USE.UNKNOWNDIR 不明なプリプロセッサディレクティブが使用されています |
M16-1-1 (req.) |
MISRA.ELIF.DEFINED #elif ディレクティブで不正な 'defined' が使用されています MISRA.IF.DEFINED #if ディレクティブで不正な 'defined' が使用されています |
M16-1-2 (req.) |
MISRA.ELIF.OTHERFILE 不適切なファイルでの #elif MISRA.ELSE.OTHERFILE 不適切なファイルでの #else MISRA.ENDIF.OTHERFILE 不適切なファイルでの #endif |
M16-2-3 (req.) |
MISRA.INCGUARD インクルードガードが入力されていません |
M16-3-1 (req.) |
MISRA.DEFINE.SHARP.MANY マクロ定義に # 演算子または ## 演算子がいくつか使用されています |
M16-3-2 (adv.) |
MISRA.DEFINE.SHARP マクロ定義に # 演算子または ## 演算子が使用されています |
M17-0-2 (req.) |
MISRA.UNDEF.WRONGNAME 標準ライブラリからの名前が定義されていません MISRA.UNDEF.WRONGNAME.UNDERSCORE 予約名が定義されていません |
M17-0-3 (req.) |
MISRA.STDLIB.WRONGNAME 標準ライブラリのマクロ、オブジェクトまたは関数の名前が再使用されています MISRA.STDLIB.WRONGNAME.UNDERSCORE 予約名が言語エンティティの名前に使用されています |
M17-0-5 (req.) |
MISRA.STDLIB.LONGJMP setjmp マクロまたは longjmp 関数の使用 |
M18-0-3 (req.) |
MISRA.STDLIB.ABORT ライブラリ stdlib.h から 'abort'、'exit'、'getenv' または 'system' が使用されています |
M18-0-4 (req.) |
MISRA.STDLIB.TIME ライブラリ time.h の時間処理関数の使用 |
M18-0-5 (req.) |
MISRA.STDLIB.CSTRING 'cstring' ライブラリからの関数が使用されています MISRA.STDLIB.CSTRING.MACRO 'cstring' ライブラリからのマクロが使用されています |
M18-7-1 (req.) |
MISRA.STDLIB.SIGNAL signal.h の信号処理装置の使用 |
M19-3-1 (req.) |
MISRA.STDLIB.ERRNO エラーインジケーター 'errno' が使用されています |
M27-0-1 (req.) |
MISRA.STDLIB.STDIO プロダクションコードで入力/出力ライブラリ stdio.h が使用されています |
サポートのサマリー:
- 実施される 228 個の規則
"MISRA"、"MISRA C" および、"MISRA C++" は、The MISRA Consortium Limited の登録商標です。