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