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 個の規則