C++ コア ガイドライン

以下の表は、C++コアガイドラインとKlocworkチェッカーの対応関係を示しています。

ガイドライン チェッカー名および説明
C.1: 関連データを構造体 (struct または class) に整理する

現在、このルールに対する適用可能なチェッカーはありません。

C.2: クラスに不変条件がある場合は class を使用し、データメンバが独立して変化できる場合は struct を使用する

現在、このルールに対する適用可能なチェッカーはありません。

C.3: インターフェースと実装の区別をクラスで表現する

現在、このルールに対する適用可能なチェッカーはありません。

C.4: クラスの内部表現に直接アクセスする必要がある場合のみメンバ関数にする

MISRA.MEMB.NON_STATIC  非スタティックメンバー関数は同じクラスのその他の非スタティックメンバーを使用しません

C.5: ヘルパー関数はそれがサポートするクラスと同じ名前空間に置く

現在、このルールに対する適用可能なチェッカーはありません。

C.7: クラスや enum の定義とその型の変数宣言を同一文に書かない

現在、このルールに対する適用可能なチェッカーはありません。

C.8: 非パブリックメンバがある場合は struct ではなく class を使用する

現在、このルールに対する適用可能なチェッカーはありません。

C.9: メンバの公開を最小限にする

MISRA.MEMB.NOT_PRIVATE  非 POD クラスのメンバー変数がプライベートではありません

C.10: クラス階層より具体的な型を優先する

現在、このルールに対する適用可能なチェッカーはありません。

C.11: 具体的な型を正規にする

現在、このルールに対する適用可能なチェッカーはありません。

C.12: コピーや移動が可能な型のデータメンバを const や参照にしない

現在、このルールに対する適用可能なチェッカーはありません。

C.20: デフォルト操作の定義を避けられるなら避ける

現在、このルールに対する適用可能なチェッカーはありません。

C.21: コピー・移動・デストラクタのいずれかを定義または =delete する場合はすべて定義または =delete する

現在、このルールに対する適用可能なチェッカーはありません。

C.22: デフォルト操作を一貫させる

現在、このルールに対する適用可能なチェッカーはありません。

C.30: オブジェクト破棄時に明示的なアクションが必要な場合はデストラクタを定義する

現在、このルールに対する適用可能なチェッカーはありません。

C.31: クラスが取得したすべてのリソースはデストラクタで解放しなければならない

CL.MLK  メモリリーク - デストラクタで発生

CL.MLK.ASSIGN  メモリリーク - 代入演算子

CL.MLK.VIRTUAL  メモリリーク - デストラクタで発生している可能性

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

MLK.MUST  メモリリーク

RH.LEAK  リソースリーク

C.32: クラスが生ポインタ (T*) や参照 (T&) を持つ場合、それが所有しているかどうかを検討する

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

MLK.MUST  メモリリーク

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

MLK.RET.MUST  メモリリーク

C.33: クラスに所有ポインタメンバがある場合はデストラクタを定義する

CL.MLK  メモリリーク - デストラクタで発生

CL.MLK.ASSIGN  メモリリーク - 代入演算子

CL.MLK.VIRTUAL  メモリリーク - デストラクタで発生している可能性

C.35: 基底クラスのデストラクタはパブリック仮想関数またはプロテクト非仮想関数のいずれかにする

CWARN.DTOR.NONVIRT.DELETE  仮想メソッドを持ち、仮想デストラクタを持たないクラスのオブジェクトの式を削除しています

C.36: デストラクタは失敗してはならない

MISRA.DTOR.THROW  デストラクタにスローします

C.37: デストラクタを noexcept にする

MISRA.DTOR.THROW  デストラクタにスローします

C.40: クラスに不変条件がある場合はコンストラクタを定義する

現在、このルールに対する適用可能なチェッカーはありません。

C.41: コンストラクタは完全に初期化されたオブジェクトを生成しなければならない

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

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

C.42: コンストラクタが有効なオブジェクトを構築できない場合は例外をスローする

現在、このルールに対する適用可能なチェッカーはありません。

C.43: コピー可能なクラスにはデフォルトコンストラクタを確保する

現在、このルールに対する適用可能なチェッカーはありません。

C.44: デフォルトコンストラクタはシンプルで非スローであることを優先する

現在、このルールに対する適用可能なチェッカーはありません。

C.45: データメンバの初期化のみを行うデフォルトコンストラクタを定義しない。メンバ初期化子を使用する

現在、このルールに対する適用可能なチェッカーはありません。

C.46: 単一引数コンストラクタはデフォルトで explicit と宣言する

AUTOSAR.CTOR.NO_EXPLICIT  基本型の単一の引数で呼び出せるコンストラクタはすべて、explicit と宣言する必要があります

MISRA.CTOR.NOT_EXPLICIT  組み込み型の引数を持つコンストラクタが '明示的に' 宣言されていません

C.47: データメンバはメンバ宣言の順序で定義・初期化する

CERT.OOP.CTOR.INIT_ORDER  コンストラクターメンバー初期化子を正規の順序で作成します

CWARN.MEMBER.INIT.ORDER  初期化リストのメンバーが、クラスで宣言された順序でリストされません

C.48: 定数初期化子にはコンストラクタのメンバ初期化子よりクラス内初期化子を優先する

現在、このルールに対する適用可能なチェッカーはありません。

C.49: コンストラクタでは代入より初期化を優先する

現在、このルールに対する適用可能なチェッカーはありません。

C.50: 初期化中に仮想的な振る舞いが必要な場合はファクトリ関数を使用する

現在、このルールに対する適用可能なチェッカーはありません。

C.51: クラスの全コンストラクタ共通の処理を表すには委譲コンストラクタを使用する

現在、このルールに対する適用可能なチェッカーはありません。

C.52: さらなる明示的な初期化が不要な派生クラスにコンストラクタをインポートするには継承コンストラクタを使用する

現在、このルールに対する適用可能なチェッカーはありません。

C.60: コピー代入は非仮想にし、パラメータを const& で受け取り、非 const& を返す

CL.SELF-ASSIGN  解放済みメモリの使用 (二重解放) - operator=

CL.SHALLOW.ASSIGN  解放済みメモリの使用 (二重解放) - 演算子 = での浅いコピー

CL.SHALLOW.COPY  解放済みメモリの使用 (二重解放) - コピーコンストラクタでの浅いコピー

C.61: コピー操作はコピーを行う

現在、このルールに対する適用可能なチェッカーはありません。

C.62: コピー代入を自己代入に対して安全にする

CL.SELF-ASSIGN  解放済みメモリの使用 (二重解放) - operator=

C.63: ムーブ代入は非仮想にし、パラメータを && で受け取り、非 const& を返す

CL.FFM.ASSIGN  解放済みメモリの使用 (二重解放) - operator= が無いため

CL.FFM.COPY  解放済みメモリの使用 (二重解放) - コピーコンストラクタが無いため

C.64: ムーブ操作はムーブを行い、移動元を有効な状態に残す

現在、このルールに対する適用可能なチェッカーはありません。

C.65: ムーブ代入を自己代入に対して安全にする

現在、このルールに対する適用可能なチェッカーはありません。

C.66: ムーブ操作を noexcept にする

現在、このルールに対する適用可能なチェッカーはありません。

C.67: ポリモーフィックなクラスはパブリックなコピー・ムーブを抑制する

CL.SHALLOW.ASSIGN  解放済みメモリの使用 (二重解放) - 演算子 = での浅いコピー

CL.SHALLOW.COPY  解放済みメモリの使用 (二重解放) - コピーコンストラクタでの浅いコピー

C.80: デフォルトのセマンティクスを明示的に使用する場合は =default を使用する

現在、このルールに対する適用可能なチェッカーはありません。

C.81: デフォルト動作を無効にする (代替を用意しない) 場合は =delete を使用する

現在、このルールに対する適用可能なチェッカーはありません。

C.82: コンストラクタやデストラクタで仮想関数を呼び出さない

CERT.OOP.CTOR.VIRTUAL_FUNC  コンストラクタまたは、デストラクタから仮想関数を呼出してはならない

CL.MLK.VIRTUAL  メモリリーク - デストラクタで発生している可能性

MISRA.CTOR.DYNAMIC  オブジェクトの動的タイプがそのコンストラクタのボディから使用されています

MISRA.DTOR.DYNAMIC  オブジェクトの動的タイプがそのデストラクタのボディから使用されています

C.83: 値に類似した型では noexcept の swap 関数の提供を検討する

現在、このルールに対する適用可能なチェッカーはありません。

C.84: swap 関数は失敗してはならない

現在、このルールに対する適用可能なチェッカーはありません。

C.85: swap を noexcept にする

現在、このルールに対する適用可能なチェッカーはありません。

C.86: == はオペランドの型に関して対称で noexcept にする

現在、このルールに対する適用可能なチェッカーはありません。

C.87: 基底クラスの == に注意する

現在、このルールに対する適用可能なチェッカーはありません。

C.89: hash を noexcept にする

現在、このルールに対する適用可能なチェッカーはありません。

C.90: memset や memcpy ではなくコンストラクタと代入演算子を使用する

現在、このルールに対する適用可能なチェッカーはありません。

C.100: コンテナを定義する際は STL に従う

現在、このルールに対する適用可能なチェッカーはありません。

C.101: コンテナに値セマンティクスを与える

現在、このルールに対する適用可能なチェッカーはありません。

C.102: コンテナにムーブ操作を与える

現在、このルールに対する適用可能なチェッカーはありません。

C.103: コンテナに初期化子リストコンストラクタを与える

現在、このルールに対する適用可能なチェッカーはありません。

C.104: コンテナに空を設定するデフォルトコンストラクタを与える

現在、このルールに対する適用可能なチェッカーはありません。

C.109: リソースハンドルがポインタセマンティクスを持つ場合は * と -> を提供する

現在、このルールに対する適用可能なチェッカーはありません。

C.120: 本質的に階層的な構造を持つコンセプトを表すためにクラス階層を使用する

現在、このルールに対する適用可能なチェッカーはありません。

C.121: 基底クラスをインターフェースとして使用する場合は純粋抽象クラスにする

現在、このルールに対する適用可能なチェッカーはありません。

C.122: インターフェースと実装を完全に分離する必要がある場合は抽象クラスをインターフェースとして使用する

現在、このルールに対する適用可能なチェッカーはありません。

C.126: 抽象クラスには通常ユーザ定義コンストラクタは不要である

現在、このルールに対する適用可能なチェッカーはありません。

C.127: 仮想関数を持つクラスは仮想またはプロテクトのデストラクタを持つ

CWARN.DTOR.NONVIRT.DELETE  仮想メソッドを持ち、仮想デストラクタを持たないクラスのオブジェクトの式を削除しています

C.128: 仮想関数は virtual・override・final のいずれか一つだけを指定する

AUTOSAR.MEMB.VIRTUAL.SPEC  仮想関数宣言には 3 つの指定子 (1) virtual、(2) override、(3) final の内の 1 つのみが含まれていなければなりません

C.129: クラス階層を設計する際は実装継承とインターフェース継承を区別する

現在、このルールに対する適用可能なチェッカーはありません。

C.130: ポリモーフィックなクラスのディープコピーにはコピー構築・代入よりも仮想 clone 関数を優先する

現在、このルールに対する適用可能なチェッカーはありません。

C.131: 自明なゲッタやセッタを避ける

現在、このルールに対する適用可能なチェッカーはありません。

C.132: 理由なく関数を仮想にしない

現在、このルールに対する適用可能なチェッカーはありません。

C.133: プロテクトデータを避ける

現在、このルールに対する適用可能なチェッカーはありません。

C.134: 非 const データメンバはすべて同じアクセスレベルにする

現在、このルールに対する適用可能なチェッカーはありません。

C.135: 複数の異なるインターフェースを表すには多重継承を使用する

現在、このルールに対する適用可能なチェッカーはありません。

C.136: 実装属性の結合を表すには多重継承を使用する

現在、このルールに対する適用可能なチェッカーはありません。

C.137: 過度に汎用な基底クラスを避けるには仮想基底を使用する

現在、このルールに対する適用可能なチェッカーはありません。

C.138: using を使って派生クラスとその基底クラスのオーバーロードセットを作成する

現在、このルールに対する適用可能なチェッカーはありません。

C.139: クラスへの final の使用は控えめにする

現在、このルールに対する適用可能なチェッカーはありません。

C.140: 仮想関数とオーバーライダに異なるデフォルト引数を指定しない

MISRA.SAME.DEFPARAMS  オーバーライドする仮想関数とオーバーライドされる関数が異なるデフォルト引数を持っています

C.145: ポリモーフィックなオブジェクトにはポインタや参照を通じてアクセスする

現在、このルールに対する適用可能なチェッカーはありません。

C.146: クラス階層のナビゲーションが避けられない場合は dynamic_cast を使用する

現在、このルールに対する適用可能なチェッカーはありません。

C.147: 必要なクラスが見つからないことをエラーとみなす場合は参照型への dynamic_cast を使用する

現在、このルールに対する適用可能なチェッカーはありません。

C.148: 必要なクラスが見つからないことを有効な代替とみなす場合はポインタ型への dynamic_cast を使用する

現在、このルールに対する適用可能なチェッカーはありません。

C.149: new で生成したオブジェクトの delete 忘れを防ぐために unique_ptr または shared_ptr を使用する

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

MLK.MUST  メモリリーク

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

MLK.RET.MUST  メモリリーク

C.150: unique_ptr が所有するオブジェクトを構築するには make_unique() を使用する

現在、このルールに対する適用可能なチェッカーはありません。

C.151: shared_ptr が所有するオブジェクトを構築するには make_shared() を使用する

現在、このルールに対する適用可能なチェッカーはありません。

C.152: 派生クラスオブジェクトの配列へのポインタを基底クラスへのポインタに代入しない

現在、このルールに対する適用可能なチェッカーはありません。

C.153: キャストより仮想関数を優先する

現在、このルールに対する適用可能なチェッカーはありません。

C.160: 慣用的な使い方を模倣するように演算子を定義する

現在、このルールに対する適用可能なチェッカーはありません。

C.161: 対称な演算子には非メンバ関数を使用する

現在、このルールに対する適用可能なチェッカーはありません。

C.162: おおよそ同等な操作をオーバーロードする

現在、このルールに対する適用可能なチェッカーはありません。

C.163: おおよそ同等な操作のみオーバーロードする

現在、このルールに対する適用可能なチェッカーはありません。

C.164: 暗黙の変換演算子を避ける

AUTOSAR.OP.CONV.NON_EXPLICIT  ユーザー定義の変換演算子はすべて、explicit と定義する必要があります

C.165: カスタマイズポイントには using を使用する

現在、このルールに対する適用可能なチェッカーはありません。

C.166: 単項 & はスマートポインタと参照のシステムの一部としてのみオーバーロードする

MISRA.UN_OP.OVERLOAD  単項の & 演算子が多重定義されています

C.167: 慣用的な意味を持つ操作には演算子を使用する

現在、このルールに対する適用可能なチェッカーはありません。

C.168: オーバーロード演算子はオペランドの名前空間に定義する

現在、このルールに対する適用可能なチェッカーはありません。

C.170: ラムダをオーバーロードしたい場合はジェネリックラムダを使用する

現在、このルールに対する適用可能なチェッカーはありません。

C.180: メモリ節約のために union を使用する

現在、このルールに対する適用可能なチェッカーはありません。

C.181: 裸の union を避ける

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

C.182: タグ付き union を実装するには匿名 union を使用する

現在、このルールに対する適用可能なチェッカーはありません。

C.183: 型パニングに union を使用しない

現在、このルールに対する適用可能なチェッカーはありません。

CP.1: コードはマルチスレッドプログラムの一部として実行されると仮定する

現在、このルールに対する適用可能なチェッカーはありません。

CP.2: データ競合を避ける

CERT.CONC.ATOMIC_TWICE_EXPR  1 つの式でアトミック変数を 2 回参照しないでください

CERT.CONC.LIB_FUNC_USE  ライブラリ関数の使用時には競合状態を避けてください

CONC.DBL_LOCK  二重ロック

CONC.DBL_UNLOCK  二重ロック解除

CONC.DL  デッドロック

CONC.NO_LOCK  変数に欠落しているロック

SV.TOCTOU.FILE_ACCESS  ファイル アクセス時の作成日時/使用日時の競合状態

CP.3: 書き込み可能データの明示的な共有を最小化する

現在、このルールに対する適用可能なチェッカーはありません。

CP.4: スレッドよりタスクの観点で考える

現在、このルールに対する適用可能なチェッカーはありません。

CP.8: 同期に volatile を使おうとしない

現在、このルールに対する適用可能なチェッカーはありません。

CP.9: 可能な限りツールを使って並行コードを検証する

現在、このルールに対する適用可能なチェッカーはありません。

CP.20: RAII を使用し、普通の lock()/unlock() を使わない

CERT.CONC.MUTEX.DESTROY_WHILE_LOCKED  ロックされている間はミューテックスを破棄しないでください

CONC.DBL_LOCK  二重ロック

CONC.DBL_UNLOCK  二重ロック解除

CONC.NO_LOCK  変数に欠落しているロック

CP.21: 複数のミューテックスを取得するには std::lock() または std::scoped_lock を使用する

CONC.DL  デッドロック

CP.22: ロックを保持したまま未知のコードを呼び出さない

CONC.DL  デッドロック

CP.23: join するスレッドをスコープ付きコンテナとして考える

現在、このルールに対する適用可能なチェッカーはありません。

CP.24: スレッドをグローバルコンテナとして考える

現在、このルールに対する適用可能なチェッカーはありません。

CP.25: std::thread より gsl::joining_thread を優先する

現在、このルールに対する適用可能なチェッカーはありません。

CP.26: スレッドを detach() しない

INFINITE_LOOP.GLOBAL  無限ループ

INFINITE_LOOP.LOCAL  無限ループ

CP.31: スレッド間で少量のデータを渡す場合は参照やポインタではなく値を使用する

現在、このルールに対する適用可能なチェッカーはありません。

CP.32: 無関係なスレッド間で所有権を共有するには shared_ptr を使用する

現在、このルールに対する適用可能なチェッカーはありません。

CP.40: コンテキストスイッチを最小化する

現在、このルールに対する適用可能なチェッカーはありません。

CP.41: スレッドの生成と破棄を最小化する

現在、このルールに対する適用可能なチェッカーはありません。

CP.42: 条件なしで待機しない

CERT.CONC.UNSAFE_COND_VAR  条件変数の使用時に、スレッドセーフと活性を維持します

CERT.CONC.WAKE_IN_LOOP  擬似的にループを起動する可能性のあるラップ関数

INFINITE_LOOP.GLOBAL  無限ループ

INFINITE_LOOP.LOCAL  無限ループ

INFINITE_LOOP.MACRO  無限ループ

CP.43: クリティカルセクションで費やす時間を最小化する

現在、このルールに対する適用可能なチェッカーはありません。

CP.44: lock_guard と unique_lock には名前を付けることを忘れない

現在、このルールに対する適用可能なチェッカーはありません。

CP.45: std::mutex でないミューテックスをロックしない

現在、このルールに対する適用可能なチェッカーはありません。

CP.50: ミューテックスはそれが保護するデータとともに定義する

現在、このルールに対する適用可能なチェッカーはありません。

CP.51: コルーチンとなるラムダでキャプチャを使用しない

UFM.USE.MIGHT  解放済みメモリの使用の可能性

UFM.USE.MUST  解放済みメモリの使用

CP.52: 一時停止点をまたいでロックやその他の同期プリミティブを保持しない

現在、このルールに対する適用可能なチェッカーはありません。

CP.53: コルーチンのパラメータを参照渡しにしない

現在、このルールに対する適用可能なチェッカーはありません。

CP.60: 並行タスクから値を返すには future を使用する

現在、このルールに対する適用可能なチェッカーはありません。

CP.61: 並行タスクを起動するには async() を使用する

現在、このルールに対する適用可能なチェッカーはありません。

CP.100: 絶対に必要な場合以外はロックフリープログラミングを使用しない

現在、このルールに対する適用可能なチェッカーはありません。

CP.101: ハードウェアとコンパイラの組み合わせを信用しない

現在、このルールに対する適用可能なチェッカーはありません。

CP.102: 文献を慎重に調査する

現在、このルールに対する適用可能なチェッカーはありません。

CP.110: 初期化のためのダブルチェックロックを自前で実装しない

CXX.STATIC.OBJ.RECURSION  静的オブジェクトの初期化中に関数を再入力しないでください

CP.111: ダブルチェックロックが本当に必要な場合は慣用的なパターンを使用する

現在、このルールに対する適用可能なチェッカーはありません。

CP.200: volatile は非 C++ メモリとの通信のみに使用する

現在、このルールに対する適用可能なチェッカーはありません。

CPL.1: C より C++ を優先する

AUTOSAR.ARRAY.CSTYLE  C スタイルの配列は使用してはなりません

MISRA.STDLIB.CSTRING  'cstring' ライブラリからの関数が使用されています

MISRA.STDLIB.CSTRING.MACRO  'cstring' ライブラリからのマクロが使用されています

SV.BANNED.RECOMMENDED.SCANF  禁止が推奨されているAPI: 安全でない scanf 型関数

SV.BANNED.RECOMMENDED.SPRINTF  禁止が推奨されているAPI: 安全でない sprintf 型関数

SV.BANNED.RECOMMENDED.STRLEN  禁止が推奨されているAPI: 安全でない文字列長関数

SV.BANNED.RECOMMENDED.TOKEN  禁止が推奨されているAPI: 安全でないトークン作成関数

SV.BANNED.REQUIRED.CONCAT  禁止が必須とされているAPI: 安全でない文字列連結関数

SV.BANNED.REQUIRED.COPY  禁止が必須とされているAPI: 安全でないバッファコピー関数

SV.BANNED.REQUIRED.GETS  禁止が必須とされているAPI: 安全でないストリーム読み取り関数

SV.BANNED.REQUIRED.SPRINTF  禁止が必須とされているAPI: 安全でない sprintf 型関数

SV.UNBOUND_STRING_INPUT.CIN  バインドされていない文字列入力についての cin の使用法

SV.UNBOUND_STRING_INPUT.FUNC  バインドされていない文字列入力の使用法

CPL.2: C を使用しなければならない場合は C と C++ の共通サブセットを使用し、C コードを C++ としてコンパイルする

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

MISRA.SIGNED_CHAR.NOT_NUMERIC  数値でない値に 'signed char' または 'unsigned char' が使用されています

PORTING.CAST.PTR.SIZE  サイズに互換性がない可能性がある型への式のキャストの可能性

PORTING.UNSIGNEDCHAR.OVERFLOW.FALSE  'char' 型の符号によっては関係式が常に false になる場合があります

CPL.3: インターフェースに C を使用しなければならない場合は、呼び出し側のコードは C++ ラッパーを使って C++ で記述する

SV.CODE_INJECTION.SHELL_EXEC  シェル実行へのコマンドインジェクション

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

Con.1: デフォルトでオブジェクトを不変にする

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

SV.LPP.CONST  危険な関数についての安全でないマクロの使用

Con.2: デフォルトでメンバ関数を const にする

MISRA.MEMB.NON_CONST  非定数のメンバー関数はどのメンバー変数も変更しません

Con.3: デフォルトでポインタと参照を const へのものにする

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

Con.4: 構築後に値が変化しないオブジェクトの定義には const を使用する

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

MISRA.VAR.NEEDS.CONST  変数は変更されませんが、const 修飾子なしで宣言されています

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

Con.5: コンパイル時に計算できる値には constexpr を使用する

現在、このルールに対する適用可能なチェッカーはありません。

E.1: 設計の早い段階でエラー処理戦略を策定する

RETVOID.GEN  非 void 関数が void 値を返しています

RETVOID.IMPLICIT  暗黙的な int 関数によって void 値が返されます

SV.RVT.RETVAL_NOTTESTED  戻り値の無視

E.2: 関数が割り当てられたタスクを実行できないことを通知するには例外をスローする

現在、このルールに対する適用可能なチェッカーはありません。

E.3: 例外はエラー処理のみに使用する

現在、このルールに対する適用可能なチェッカーはありません。

E.4: 不変条件を中心にエラー処理戦略を設計する

INVARIANT_CONDITION.GEN  不変な条件式

INVARIANT_CONDITION.UNREACH  不変な条件式

E.5: コンストラクタで不変条件を確立し、できない場合はスローする

現在、このルールに対する適用可能なチェッカーはありません。

E.6: リークを防ぐために RAII を使用する

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

MLK.MUST  メモリリーク

RH.LEAK  リソースリーク

E.7: 事前条件を明記する

現在、このルールに対する適用可能なチェッカーはありません。

E.8: 事後条件を明記する

現在、このルールに対する適用可能なチェッカーはありません。

E.12: 関数からスローして抜け出すことが不可能または許容できない場合は noexcept を使用する

AUTOSAR.EXCPT.NOEXCPT_THROW  関数を noexcept、noexcept(true)、または noexcept(<true condition>) と宣言する場合、その関数は例外を送出して終了してはなりません

E.13: オブジェクトの直接の所有者である間にスローしない

現在、このルールに対する適用可能なチェッカーはありません。

E.14: 例外には目的に合わせて設計したユーザ定義型を使用する (組み込み型は使わない)

現在、このルールに対する適用可能なチェッカーはありません。

E.15: 値でスローし、階層からの例外は参照でキャッチする

MISRA.CATCH.BY_VALUE  クラス タイプの例外オブジェクトが値によってキャッチされています

MISRA.THROW.PTR  例外オブジェクトがポインタになっています

E.16: デストラクタ・解放・swap・例外型のコピー/ムーブ構築は絶対に失敗してはならない

AUTOSAR.EXCPT.SPECIAL_MEMBER_THROW  ユーザー指定のクラスデストラクタ、割り当て解除関数、移動コンストラクタ、移動代入演算子、およびスワップ関数は、どれも例外を送出して終了してはなりません

MISRA.DTOR.THROW  デストラクタにスローします

E.17: すべての関数ですべての例外をキャッチしようとしない

現在、このルールに対する適用可能なチェッカーはありません。

E.18: 明示的な try/catch の使用を最小化する

現在、このルールに対する適用可能なチェッカーはありません。

E.19: 適切なリソースハンドルが利用できない場合はクリーンアップを表すために final_action オブジェクトを使用する

現在、このルールに対する適用可能なチェッカーはありません。

E.25: 例外をスローできない場合はリソース管理のために RAII をシミュレートする

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

MLK.MUST  メモリリーク

RH.LEAK  リソースリーク

E.26: 例外をスローできない場合はフェイルファストを検討する

現在、このルールに対する適用可能なチェッカーはありません。

E.27: 例外をスローできない場合はエラーコードを体系的に使用する

SV.RVT.RETVAL_NOTTESTED  戻り値の無視

E.28: グローバル状態 (errno など) に基づくエラー処理を避ける

現在、このルールに対する適用可能なチェッカーはありません。

E.30: 例外仕様を使用しない

現在、このルールに対する適用可能なチェッカーはありません。

E.31: catch 節を適切な順序にする

MISRA.CATCH.NOALL  省略記号例外ハンドラーが try-catch ブロックの最後に置かれていません

MISRA.CATCH.WRONGORD  try-catch ブロックで基本例外クラスのハンドラーが派生例外クラスのハンドラーよりも先に置かれています

ES.5: スコープを小さく保つ

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

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

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

ES.6: for 文の初期化子と条件式で名前を宣言してスコープを制限する

現在、このルールに対する適用可能なチェッカーはありません。

ES.7: 一般的でローカルな名前は短く、特殊でグローバルな名前は長くする

現在、このルールに対する適用可能なチェッカーはありません。

ES.8: よく似た名前を避ける

現在、このルールに対する適用可能なチェッカーはありません。

ES.9: ALL_CAPS の名前を避ける

現在、このルールに対する適用可能なチェッカーはありません。

ES.10: 宣言ごとに名前を 1 つだけ宣言する

MISRA.DECL.MANY_DCLS  1 つの宣言に複数の宣言子があります

ES.11: 型名の冗長な繰り返しを避けるために auto を使用する

現在、このルールに対する適用可能なチェッカーはありません。

ES.12: ネストされたスコープで名前を再利用しない

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

ES.20: オブジェクトは必ず初期化する

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

ES.21: 使用する前に変数 (または定数) を導入しない

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

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

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

ES.22: 初期化する値が決まるまで変数を宣言しない

UNINIT.HEAP.MIGHT  未初期化のヒープの使用の可能性

UNINIT.HEAP.MUST  未初期化のヒープの使用

UNINIT.STACK.MIGHT  未初期化の変数の可能性

UNINIT.STACK.MUST  未初期化の変数

ES.23: {} 初期化子構文を優先する

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

ES.24: ポインタを保持するには unique_ptr<T> を使用する

現在、このルールに対する適用可能なチェッカーはありません。

ES.25: 後で値を変更するつもりがない限り、オブジェクトを const または constexpr と宣言する

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

MISRA.VAR.NEEDS.CONST  変数は変更されませんが、const 修飾子なしで宣言されています

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

ES.26: 無関係な 2 つの目的に変数を使用しない

現在、このルールに対する適用可能なチェッカーはありません。

ES.27: スタック上の配列には std::array または stack_array を使用する

現在、このルールに対する適用可能なチェッカーはありません。

ES.28: 複雑な初期化、特に const 変数の初期化にはラムダを使用する

UNINIT.STACK.MIGHT  未初期化の変数の可能性

UNINIT.STACK.MUST  未初期化の変数

ES.30: プログラムテキストの操作にマクロを使用しない

現在、このルールに対する適用可能なチェッカーはありません。

ES.31: 定数や関数にマクロを使用しない

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

ES.32: すべてのマクロ名に ALL_CAPS を使用する

現在、このルールに対する適用可能なチェッカーはありません。

ES.33: マクロを使用しなければならない場合は一意の名前を付ける

現在、このルールに対する適用可能なチェッカーはありません。

ES.34: (C スタイルの) 可変引数関数を定義しない

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

SV.FMT_STR.PRINT_FORMAT_MISMATCH.BAD  互換性がない print 関数パラメーターの型

SV.FMT_STR.PRINT_FORMAT_MISMATCH.UNDESIRED  予期しない print 関数パラメーターの型

SV.FMT_STR.PRINT_PARAMS_WRONGNUM.FEW  print 関数呼び出しの引数が少なすぎます

SV.FMT_STR.PRINT_PARAMS_WRONGNUM.MANY  print 関数呼び出しの引数が多すぎます

SV.FMT_STR.SCAN_FORMAT_MISMATCH.BAD  互換性がない scan 関数パラメーターの型

SV.FMT_STR.SCAN_FORMAT_MISMATCH.UNDESIRED  予期しない scan 関数パラメーターの型

SV.FMT_STR.SCAN_PARAMS_WRONGNUM.FEW  scan 関数呼び出しの引数が少なすぎます

SV.FMT_STR.SCAN_PARAMS_WRONGNUM.MANY  scan 関数呼び出しの引数が多すぎます

ES.40: 複雑な式を避ける

ASSIGCOND.CALL  割り当て条件 (呼び出し)

ASSIGCOND.GEN  割り当て条件

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

MISRA.INCR_DECR.OTHER  増分または減分の演算子がその他の演算子と混合して式で使用されています

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

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

MISRA.LOGIC.SIDEEFF.COND  条件式の分岐式に副作用があります

SEMICOL  セミコロンの位置を確認してください

ES.41: 演算子の優先順位に迷ったら括弧を付ける

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

MISRA.EXPR.PARENS.INSUFFICIENT  式の演算子優先規則に制限された依存性が必要です

ES.42: ポインタの使用をシンプルでわかりやすく保つ

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

ES.43: 評価順序が未定義な式を避ける

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

MISRA.LOGIC.SIDEEFF.COND  条件式の分岐式に副作用があります

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

ES.44: 関数引数の評価順序に依存しない

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

ES.45: 「マジック定数」を避け、シンボリック定数を使用する

CXX.USE.MAGIC_NUMBER  マジックナンバーの使用

HCC  ハードコードされた資格情報の使用

HCC.PWD  ハードコードされたパスワードの使用

HCC.USER  ハードコードされたユーザー名の使用

ES.46: 精度が失われる (縮小・切り捨て) 算術変換を避ける

MISRA.CAST.INT  自明ではない整数式が広い型または別の符号を持つ型にキャストされています

MISRA.CAST.UNSIGNED_BITS  unsigned char または short でのビット演算の結果は元の型にキャストできません

MISRA.CONV.INT.SIGN  暗黙的な整数変換により符号が変わります

MISRA.CVALUE.IMPL.CAST.CPP  暗黙の型変換で符号、型サイズ、型の違いにより情報の損失を起こす記述があります。

MISRA.UMINUS.UNSIGNED  単項マイナス演算子が符号なしオペランドに対して使用されています。

NUM.OVERFLOW  オーバーフローの可能性

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

PRECISION.LOSS  精度の損失

PRECISION.LOSS.CALL  関数呼び出し中の精度の損失

PRECISION.LOSS.INIT  初期化中の精度の損失

ES.47: 0 や NULL ではなく nullptr を使用する

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

NPD.CONST.CALL  逆参照する可能性のある関数に NULL を渡しています

NPD.CONST.DEREF  NULL は逆参照されます

ES.48: キャストを避ける

AUTOSAR.CAST.CSTYLE  従来の C スタイルのキャストは使用してはなりません

AUTOSAR.CAST.REINTERPRET  reinterpret_cast は使用してはなりません

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

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

MISRA.CAST.INT  自明ではない整数式が広い型または別の符号を持つ型にキャストされています

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

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

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

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

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

PORTING.CAST.FLTPNT  非浮動小数点タイプへの浮動小数点式のキャスト

PORTING.CAST.PTR.FLTPNT  非浮動小数点型のポインタへの浮動小数点式のポインタのキャスト

PORTING.CAST.PTR.SIZE  サイズに互換性がない可能性がある型への式のキャストの可能性

ES.49: キャストを使用しなければならない場合は名前付きキャストを使用する

AUTOSAR.CAST.CSTYLE  従来の C スタイルのキャストは使用してはなりません

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

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

ES.50: const を除去するキャストをしない

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

ES.55: 範囲チェックの必要性を排除する

現在、このルールに対する適用可能なチェッカーはありません。

ES.56: オブジェクトを明示的に移動する必要がある場合のみ std::move() を記述する

AUTOSAR.STDLIB.MOVE.CONST  const または const& と宣言されたオブジェクトで std::move を使用してはなりません

UFM.USE.MIGHT  解放済みメモリの使用の可能性

UFM.USE.MUST  解放済みメモリの使用

ES.60: リソース管理関数の外で new と delete を避ける

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

MLK.MUST  メモリリーク

UFM.FFM.MIGHT  解放済みメモリの使用 (二重解放)の可能性

UFM.FFM.MUST  解放済みメモリの解放

ES.61: 配列は delete[]、非配列は delete で削除する

CL.FMM  メモリの解放の不一致 - デストラクタで発生

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

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

ES.62: 異なる配列へのポインタを比較しない

CWARN.BAD.PTR.ARITH  不良なポインタ算術演算

MISRA.PTR.ARITH  代数式または配列インデックス式でポインタが使用されています

ES.63: スライスしない

CL.SHALLOW.ASSIGN  解放済みメモリの使用 (二重解放) - 演算子 = での浅いコピー

CL.SHALLOW.COPY  解放済みメモリの使用 (二重解放) - コピーコンストラクタでの浅いコピー

ES.64: 構築には T{e} 記法を使用する

現在、このルールに対する適用可能なチェッカーはありません。

ES.65: 無効なポインタを間接参照しない

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 ポインターが逆参照されます

RNPD.CALL  NULL チェック前のポインタの、関数呼び出しにおける逆参照は問題となる可能性があります

RNPD.DEREF  NULL チェック前のポインタの逆参照は問題となる可能性があります

UFM.DEREF.MIGHT  解放済みメモリの逆参照の可能性

UFM.DEREF.MUST  解放済みメモリの逆参照

ES.70: 選択肢がある場合は if 文より switch 文を優先する

MISRA.SWITCH.NO_BREAK  switch 句の最後に break ステートメントまたは throw ステートメントがありません

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

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

ES.71: 選択肢がある場合は for 文より範囲 for 文を優先する

現在、このルールに対する適用可能なチェッカーはありません。

ES.72: 明確なループ変数がある場合は while 文より for 文を優先する

現在、このルールに対する適用可能なチェッカーはありません。

ES.73: 明確なループ変数がない場合は for 文より while 文を優先する

現在、このルールに対する適用可能なチェッカーはありません。

ES.74: for 文の初期化子部分でループ変数を宣言することを優先する

現在、このルールに対する適用可能なチェッカーはありません。

ES.75: do 文を避ける

現在、このルールに対する適用可能なチェッカーはありません。

ES.76: goto を避ける

AUTOSAR.GOTO  goto ステートメントは使用してはなりません

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

ES.77: ループ内の break と continue の使用を最小限にする

現在、このルールに対する適用可能なチェッカーはありません。

ES.78: switch 文の暗黙のフォールスルーに依存しない

MISRA.SWITCH.NO_BREAK  switch 句の最後に break ステートメントまたは throw ステートメントがありません

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

ES.79: default は一般的なケースのみを処理するために使用する

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

ES.80: switch の条件を再解釈するためにキャストを使用しない

現在、このルールに対する適用可能なチェッカーはありません。

ES.81: 無条件ジャンプで終わるループ本体を記述しない

現在、このルールに対する適用可能なチェッカーはありません。

ES.82: switch のケースに変数を宣言しない

CERT.DCL.SWITCH.VAR_BEFORE_CASE  switch ステートメント内では最初の case ラベルより前で変数を宣言しないでください

ES.83: for ループ変数として複合式を使用しない

現在、このルールに対する適用可能なチェッカーはありません。

ES.84: 名前のないローカル変数を宣言しようとしない

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

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

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

ES.85: 空の文を見えるようにする

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

SEMICOL  セミコロンの位置を確認してください

ES.86: 生の for ループの本体内でループ制御変数を変更しない

MISRA.FOR.BODY.LOOP_CTR_MODIFIED  ループカウンターをループ本体で変更しないでください

MISRA.FOR.BODY.LOOP_CTR_MODIFIED.MIGHT  ループカウンターをループ本体で変更しないでください

MISRA.FOR.STMT.CHANGE  for ループのカウンターがループステートメント内で変更されています

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

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

ES.87: 条件式に冗長な == や != を追加しない

現在、このルールに対する適用可能なチェッカーはありません。

ES.100: 符号付き算術と符号なし算術を混在させない

MISRA.CAST.INT.SIGN  自明ではない複合式が別の符号を持つ型にキャストされています

MISRA.CONV.INT.SIGN  暗黙的な整数変換により符号が変わります

ES.101: ビット操作には符号なし型を使用する

MISRA.BITS.NOT_UNSIGNED  ビット演算のオペランドが符号なし整数ではありません

MISRA.BITS.NOT_UNSIGNED.PREP  ビット演算のオペランドが符号なし整数ではありません

MISRA.SHIFT.RANGE  シフト演算子の右側のオペランドは範囲外 (左側のオペランドの最大ビット長以上か、または負) です

ES.102: 算術には符号付き型を使用する

現在、このルールに対する適用可能なチェッカーはありません。

ES.103: オーバーフローしない

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

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

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

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

ABV.NON_ARRAY  非配列オブジェクトが配列として使用される

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

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

NUM.OVERFLOW  オーバーフローの可能性

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

ES.104: アンダーフローしない

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

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

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

RN.INDEX  負の値のチェック前のインデックスの使用は問題となる可能性があります

ES.105: 整数をゼロで除算しない

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

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

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

DBZ.GENERAL.FLOAT  浮動小数点数のゼロ除算が発生した可能性があります

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

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

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

ES.106: 符号なし型を使って負の値を避けようとしない

MISRA.CAST.INT.SIGN  自明ではない複合式が別の符号を持つ型にキャストされています

MISRA.CONV.INT.SIGN  暗黙的な整数変換により符号が変わります

MISRA.UMINUS.UNSIGNED  単項マイナス演算子が符号なしオペランドに対して使用されています。

ES.107: 添字に符号なし型を使用しない

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

CXX.SUSPICIOUS_INDEX_CHECK  境界チェック後のインデックスの不審な使用

CXX.SUSPICIOUS_INDEX_CHECK.CALL  境界チェック後の関数呼び出しでのインデックスの不審な使用

CXX.SUSPICIOUS_INDEX_CHECK.ZERO  ゼロのインデックスチェック後のインデックスの不審な使用

RABV.CHECK  境界チェック前のインデックスの不審な使用

RN.INDEX  負の値のチェック前のインデックスの使用は問題となる可能性があります

Enum.1: マクロより列挙を優先する

現在、このルールに対する適用可能なチェッカーはありません。

Enum.2: 関連する名前付き定数の集合を表すには列挙を使用する

現在、このルールに対する適用可能なチェッカーはありません。

Enum.3: 通常の enum よりスコープ付き enum を優先する

AUTOSAR.ENUM.UNSCOPED  列挙は、スコープ付きの enum クラスとして宣言する必要があります

Enum.4: 安全でシンプルな使用のために列挙の操作を定義する

現在、このルールに対する適用可能なチェッカーはありません。

Enum.5: 列挙子に ALL_CAPS を使用しない

現在、このルールに対する適用可能なチェッカーはありません。

Enum.6: 無名列挙を避ける

現在、このルールに対する適用可能なチェッカーはありません。

Enum.7: 必要な場合のみ列挙の基底型を指定する

現在、このルールに対する適用可能なチェッカーはありません。

Enum.8: 必要な場合のみ列挙子の値を指定する

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

F.1: 意味のある操作は慎重に命名した関数としてパッケージ化する

現在、このルールに対する適用可能なチェッカーはありません。

F.2: 関数は単一の論理操作を実行する

現在、このルールに対する適用可能なチェッカーはありません。

F.3: 関数を短くシンプルに保つ

現在、このルールに対する適用可能なチェッカーはありません。

F.4: 関数が非常に短くかつ時間的にクリティカルな場合は inline と宣言する

現在、このルールに対する適用可能なチェッカーはありません。

F.5: 関数が非常に小さくかつ時間的にクリティカルな場合は constexpr と宣言する

現在、このルールに対する適用可能なチェッカーはありません。

F.6: 関数がスローしてはならない場合は noexcept と宣言する

RETVOID.GEN  非 void 関数が void 値を返しています

RETVOID.IMPLICIT  暗黙的な int 関数によって void 値が返されます

VOIDRET  void 関数が戻り値を返しています

F.7: 汎用的な用途にはスマートポインタではなく T* または T& 引数を使用する

NPD.CHECK.CALL.MIGHT  ポインタを明示的に NULL チェックした後に逆参照する可能性のある関数に渡す可能性があります

NPD.CHECK.CALL.MUST  ポインタを明示的に NULL チェックした後に逆参照する可能性がある関数に渡します

NPD.CHECK.MIGHT  ポインタを明示的に NULL チェックした後に逆参照する可能性があります

NPD.CHECK.MUST  ポインタを明示的に NULL チェックした後に逆参照します

NPD.FUNC.MIGHT  NULL を返す可能性のある関数の戻り値が逆参照される場合があります

NPD.FUNC.MUST  NULL を返す可能性がある関数の戻り値が逆参照されます

F.8: 純粋関数を優先する

現在、このルールに対する適用可能なチェッカーはありません。

F.9: 未使用のパラメータは無名にする

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

F.10: 操作を再利用できる場合は名前を付ける

現在、このルールに対する適用可能なチェッカーはありません。

F.11: 1 か所でのみ必要なシンプルな関数オブジェクトには無名ラムダを使用する

現在、このルールに対する適用可能なチェッカーはありません。

F.15: シンプルで慣用的な情報の受け渡し方法を優先する

現在、このルールに対する適用可能なチェッカーはありません。

F.16: in パラメータは安価にコピーできる型は値渡し、それ以外は const 参照渡しにする

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

F.17: in-out パラメータは非 const 参照渡しにする

現在、このルールに対する適用可能なチェッカーはありません。

F.18: will-move-from パラメータは X&& で渡して std::move する

現在、このルールに対する適用可能なチェッカーはありません。

F.19: forward パラメータは TP&& で渡して std::forward のみ適用する

現在、このルールに対する適用可能なチェッカーはありません。

F.20: out 出力値には出力パラメータより戻り値を優先する

現在、このルールに対する適用可能なチェッカーはありません。

F.21: 複数の out 値を返す場合は構造体を返すことを優先する

現在、このルールに対する適用可能なチェッカーはありません。

F.22: T* または owner<T*> を使って単一オブジェクトを指定する

現在、このルールに対する適用可能なチェッカーはありません。

F.23: null が有効な値でないことを示すには not_null<T> を使用する

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 ポインターが逆参照されます

RNPD.CALL  NULL チェック前のポインタの、関数呼び出しにおける逆参照は問題となる可能性があります

RNPD.DEREF  NULL チェック前のポインタの逆参照は問題となる可能性があります

F.24: 半開区間シーケンスを指定するには span<T> または span_p<T> を使用する

現在、このルールに対する適用可能なチェッカーはありません。

F.25: C スタイル文字列を指定するには zstring または not_null<zstring> を使用する

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

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

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

F.26: ポインタが必要な場所で所有権を移譲するには unique_ptr<T> を使用する

現在、このルールに対する適用可能なチェッカーはありません。

F.27: 所有権を共有するには shared_ptr<T> を使用する

現在、このルールに対する適用可能なチェッカーはありません。

F.42: 位置のみを示すために T* を返す

現在、このルールに対する適用可能なチェッカーはありません。

F.43: ローカルオブジェクトへのポインタや参照を (直接・間接問わず) 返さない

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

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

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

F.44: コピーが望ましくなくオブジェクトを返さない選択肢がある場合は T& を返す

現在、このルールに対する適用可能なチェッカーはありません。

F.45: T&& を返さない

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

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

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

F.46: main() の戻り値の型は int にする

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

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

F.47: 代入演算子は T& を返す

現在、このルールに対する適用可能なチェッカーはありません。

F.48: std::move(local) を返さない

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

F.49: const T を返さない

現在、このルールに対する適用可能なチェッカーはありません。

F.51: 選択肢がある場合はオーバーロードよりデフォルト引数を優先する

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

F.52: ローカルで使用するラムダでは参照キャプチャを優先する

現在、このルールに対する適用可能なチェッカーはありません。

F.53: 非ローカルで使用するラムダでは参照キャプチャを避ける

AUTOSAR.LAMBDA.REF_LIFETIME  ラムダ式オブジェクトは、その参照キャプチャされたオブジェクトよりも長く存続してはなりません

F.54: this やクラスデータメンバをキャプチャするラムダでは [=] を使用しない

AUTOSAR.LAMBDA.IMPLICIT_CAPTURE  変数はラムダ式で暗黙的にキャプチャしてはなりません

F.55: va_arg 引数を使用しない

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

VA.LIST.INDETERMINATE  不定値を持つ va_list に対する va_arg() の呼び出し

F.56: 不必要な条件のネストを避ける

現在、このルールに対する適用可能なチェッカーはありません。

I.1: インターフェースを明示的にする

現在、このルールに対する適用可能なチェッカーはありません。

I.2: 非 const グローバル変数を避ける

現在、このルールに対する適用可能なチェッカーはありません。

I.3: シングルトンを避ける

現在、このルールに対する適用可能なチェッカーはありません。

I.4: インターフェースを正確かつ強い型付きにする

現在、このルールに対する適用可能なチェッカーはありません。

I.5: 事前条件があれば明記する

現在、このルールに対する適用可能なチェッカーはありません。

I.6: 事前条件の表現には Expects() を優先する

現在、このルールに対する適用可能なチェッカーはありません。

I.7: 事後条件を明記する

現在、このルールに対する適用可能なチェッカーはありません。

I.8: 事後条件の表現には Ensures() を優先する

現在、このルールに対する適用可能なチェッカーはありません。

I.9: インターフェースがテンプレートの場合、コンセプトを使ってパラメータを文書化する

現在、このルールに対する適用可能なチェッカーはありません。

I.10: 必要なタスクの実行失敗を通知するには例外を使用する

RETVOID.GEN  非 void 関数が void 値を返しています

RETVOID.IMPLICIT  暗黙的な int 関数によって void 値が返されます

SV.RVT.RETVAL_NOTTESTED  戻り値の無視

VOIDRET  void 関数が戻り値を返しています

I.11: 生ポインタ (T*) や参照 (T&) で所有権を移譲しない

現在、このルールに対する適用可能なチェッカーはありません。

I.12: null であってはならないポインタは not_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 ポインターが逆参照されます

RNPD.CALL  NULL チェック前のポインタの、関数呼び出しにおける逆参照は問題となる可能性があります

RNPD.DEREF  NULL チェック前のポインタの逆参照は問題となる可能性があります

I.13: 配列を単一ポインタとして渡さない

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

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

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

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

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

I.22: グローバルオブジェクトの複雑な初期化を避ける

UNINIT.HEAP.MIGHT  未初期化のヒープの使用の可能性

UNINIT.HEAP.MUST  未初期化のヒープの使用

UNINIT.STACK.MIGHT  未初期化の変数の可能性

UNINIT.STACK.MUST  未初期化の変数

I.23: 関数の引数の数を少なく保つ

現在、このルールに対する適用可能なチェッカーはありません。

I.24: 引数の順序を入れ替えても同じ引数で呼び出せる隣接パラメータを避ける

現在、このルールに対する適用可能なチェッカーはありません。

I.25: クラス階層よりも空の抽象クラスをインターフェースとして優先する

現在、このルールに対する適用可能なチェッカーはありません。

I.26: クロスコンパイラ ABI が必要な場合は C スタイルのサブセットを使用する

現在、このルールに対する適用可能なチェッカーはありません。

I.27: 安定したライブラリ ABI のためには Pimpl イディオムを検討する

現在、このルールに対する適用可能なチェッカーはありません。

I.30: ルール違反をカプセル化する

SV.LPP.CONST  危険な関数についての安全でないマクロの使用

SV.LPP.VAR  危険な関数についての安全でないパラメーターの使用

NL.1: コードで明確に示せることはコメントに書かない

現在、このルールに対する適用可能なチェッカーはありません。

NL.2: コメントには意図を記述する

現在、このルールに対する適用可能なチェッカーはありません。

NL.3: コメントを簡潔に保つ

現在、このルールに対する適用可能なチェッカーはありません。

NL.4: 一貫したインデントスタイルを維持する

現在、このルールに対する適用可能なチェッカーはありません。

NL.5: 名前に型情報を埋め込むことを避ける

現在、このルールに対する適用可能なチェッカーはありません。

NL.7: 名前の長さをそのスコープの長さにおおよそ比例させる

現在、このルールに対する適用可能なチェッカーはありません。

NL.8: 一貫した命名スタイルを使用する

現在、このルールに対する適用可能なチェッカーはありません。

NL.9: ALL_CAPS はマクロ名にのみ使用する

現在、このルールに対する適用可能なチェッカーはありません。

NL.10: アンダースコア区切りスタイルの名前を優先する

現在、このルールに対する適用可能なチェッカーはありません。

NL.11: リテラルを読みやすくする

現在、このルールに対する適用可能なチェッカーはありません。

NL.15: スペースは控えめに使用する

現在、このルールに対する適用可能なチェッカーはありません。

NL.16: 慣用的なクラスメンバ宣言の順序を使用する

現在、このルールに対する適用可能なチェッカーはありません。

NL.17: K&R 派生のレイアウトを使用する

現在、このルールに対する適用可能なチェッカーはありません。

NL.18: C++ スタイルの宣言子レイアウトを使用する

現在、このルールに対する適用可能なチェッカーはありません。

NL.19: 紛らわしい名前を避ける

現在、このルールに対する適用可能なチェッカーはありません。

NL.20: 同一行に 2 つの文を置かない

現在、このルールに対する適用可能なチェッカーはありません。

NL.21: 宣言ごとに名前を 1 つだけ宣言する

現在、このルールに対する適用可能なチェッカーはありません。

NL.25: 引数の型として void を使用しない

現在、このルールに対する適用可能なチェッカーはありません。

NL.26: 慣用的な const 記法を使用する

現在、このルールに対する適用可能なチェッカーはありません。

NL.27: コードファイルには .cpp、インターフェースファイルには .h サフィックスを使用する

現在、このルールに対する適用可能なチェッカーはありません。

P.1: アイデアをコードで直接表現する

現在、このルールに対する適用可能なチェッカーはありません。

P.2: ISO 標準 C++ で記述する

現在、このルールに対する適用可能なチェッカーはありません。

P.3: 意図を表現する

現在、このルールに対する適用可能なチェッカーはありません。

P.4: プログラムは静的に型安全であることが理想である

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

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

MISRA.CAST.INT  自明ではない整数式が広い型または別の符号を持つ型にキャストされています

MISRA.CAST.INT.SIGN  自明ではない複合式が別の符号を持つ型にキャストされています

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

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

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

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

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

PORTING.CAST.FLTPNT  非浮動小数点タイプへの浮動小数点式のキャスト

PORTING.CAST.PTR.FLTPNT  非浮動小数点型のポインタへの浮動小数点式のポインタのキャスト

PORTING.CAST.PTR.SIZE  サイズに互換性がない可能性がある型への式のキャストの可能性

PRECISION.LOSS  精度の損失

PRECISION.LOSS.CALL  関数呼び出し中の精度の損失

PRECISION.LOSS.INIT  初期化中の精度の損失

P.5: 実行時チェックよりコンパイル時チェックを優先する

INVARIANT_CONDITION.GEN  不変な条件式

INVARIANT_CONDITION.UNREACH  不変な条件式

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

UNREACH.GEN  到達不能コード

UNREACH.RETURN  到達不能な void return文

UNREACH.SIZEOF  アーキテクチャに関連した到達不能コード

P.6: コンパイル時にチェックできないものは実行時にチェックできるようにする

現在、このルールに対する適用可能なチェッカーはありません。

P.7: 実行時エラーを早期に検出する

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

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

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

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

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

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

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

DBZ.GENERAL.FLOAT  浮動小数点数のゼロ除算が発生した可能性があります

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

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

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

NPD.FUNC.MIGHT  NULL を返す可能性のある関数の戻り値が逆参照される場合があります

NPD.FUNC.MUST  NULL を返す可能性がある関数の戻り値が逆参照されます

NPD.GEN.MIGHT  NULLポインタを逆参照する可能性があります

NPD.GEN.MUST  null ポインターが逆参照されます

NUM.OVERFLOW  オーバーフローの可能性

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

SV.RVT.RETVAL_NOTTESTED  戻り値の無視

P.8: いかなるリソースもリークしない

CL.MLK  メモリリーク - デストラクタで発生

CL.MLK.ASSIGN  メモリリーク - 代入演算子

CL.MLK.VIRTUAL  メモリリーク - デストラクタで発生している可能性

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

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

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

MLK.MUST  メモリリーク

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

MLK.RET.MUST  メモリリーク

RH.LEAK  リソースリーク

P.9: 時間や空間を無駄にしない

現在、このルールに対する適用可能なチェッカーはありません。

P.10: 可変データより不変データを優先する

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

SV.LPP.CONST  危険な関数についての安全でないマクロの使用

SV.LPP.VAR  危険な関数についての安全でないパラメーターの使用

P.11: 煩雑な構造はコード全体に広げるのではなくカプセル化する

現在、このルールに対する適用可能なチェッカーはありません。

P.12: 適切なサポートツールを使用する

現在、このルールに対する適用可能なチェッカーはありません。

P.13: 適切なサポートライブラリを使用する

現在、このルールに対する適用可能なチェッカーはありません。

Per.1: 理由なく最適化しない

現在、このルールに対する適用可能なチェッカーはありません。

Per.2: 時期尚早に最適化しない

現在、このルールに対する適用可能なチェッカーはありません。

Per.3: パフォーマンスクリティカルでないものを最適化しない

現在、このルールに対する適用可能なチェッカーはありません。

Per.4: 複雑なコードが必ずしもシンプルなコードより速いと思わない

現在、このルールに対する適用可能なチェッカーはありません。

Per.5: 低レベルなコードが必ずしも高レベルなコードより速いと思わない

現在、このルールに対する適用可能なチェッカーはありません。

Per.6: 計測なしにパフォーマンスについて主張しない

現在、このルールに対する適用可能なチェッカーはありません。

Per.7: 最適化を可能にするように設計する

現在、このルールに対する適用可能なチェッカーはありません。

Per.10: 静的型システムを活用する

現在、このルールに対する適用可能なチェッカーはありません。

Per.11: 計算を実行時からコンパイル時に移す

現在、このルールに対する適用可能なチェッカーはありません。

Per.12: 冗長なエイリアスを排除する

現在、このルールに対する適用可能なチェッカーはありません。

Per.13: 冗長な間接参照を排除する

現在、このルールに対する適用可能なチェッカーはありません。

Per.14: 割り当てと解放の数を最小化する

現在、このルールに対する適用可能なチェッカーはありません。

Per.15: クリティカルなブランチで割り当てを行わない

現在、このルールに対する適用可能なチェッカーはありません。

Per.16: コンパクトなデータ構造を使用する

現在、このルールに対する適用可能なチェッカーはありません。

Per.17: 時間クリティカルな構造体の最もよく使われるメンバを最初に宣言する

現在、このルールに対する適用可能なチェッカーはありません。

Per.18: 空間は時間である

現在、このルールに対する適用可能なチェッカーはありません。

Per.19: メモリに予測可能な方法でアクセスする

現在、このルールに対する適用可能なチェッカーはありません。

Per.30: クリティカルパスでのコンテキストスイッチを避ける

現在、このルールに対する適用可能なチェッカーはありません。

Pro.bounds: 境界安全プロファイル

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  バッファオーバーフロー - 配列インデックスが範囲外

CWARN.ALIGNMENT  不正確なポインタのスケーリングが使用されています

CWARN.BAD.PTR.ARITH  不良なポインタ算術演算

CXX.ITER.END.BEGIN  範囲の終わりを表す反復子が範囲の始まりの前にあります

CXX.SUSPICIOUS_INDEX_CHECK  境界チェック後のインデックスの不審な使用

CXX.SUSPICIOUS_INDEX_CHECK.CALL  境界チェック後の関数呼び出しでのインデックスの不審な使用

CXX.SUSPICIOUS_INDEX_CHECK.ZERO  ゼロのインデックスチェック後のインデックスの不審な使用

ITER.ADVANCE.NONADJACENT  反復子間の距離は 1 より大きい値にする

ITER.CONTAINER.MODIFIED  無効な反復子の使用

ITER.END.OUTPARAM.MIGHT  出力反復子としての 'end' の使用

ITER.END.OUTPARAM.MUST  出力反復子としての 'end' の使用

ITER.INAPPROPRIATE  コンテナーオブジェクトが不適切な反復子の使用

ITER.INAPPROPRIATE.MULTIPLE  コンテナーオブジェクトが不適切な反復子の使用

MISRA.PTR.ARITH  代数式または配列インデックス式でポインタが使用されています

RABV.CHECK  境界チェック前のインデックスの不審な使用

RN.INDEX  負の値のチェック前のインデックスの使用は問題となる可能性があります

SV.STRBO.BOUND_COPY.OVERFLOW  バインドされた文字列コピーでのバッファオーバーフロー

SV.STRBO.BOUND_COPY.UNTERM  次の文字列演算でバッファオーバーフローの可能性があります

SV.STRBO.BOUND_SPRINTF  バインドされた sprintf でのバッファオーバーフロー

SV.STRBO.UNBOUND_COPY  バインドされていない文字列コピーでのバッファオーバーフロー

SV.STRBO.UNBOUND_SPRINTF  バインドされていない sprintf でのバッファオーバーフロー

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

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

Pro.lifetime: ライフタイム安全プロファイル

AUTOSAR.LAMBDA.REF_LIFETIME  ラムダ式オブジェクトは、その参照キャプチャされたオブジェクトよりも長く存続してはなりません

CERT.MEM.SMART_PTR.OWNED  複数のスマートポインターでのポインター所有権の共有

CERT.MEM.SMART_PTR.OWNED.THIS  基礎となるリソースが無関係なスマートポインターによって既に所有されている可能性がある

CL.FFM.ASSIGN  解放済みメモリの使用 (二重解放) - operator= が無いため

CL.FFM.COPY  解放済みメモリの使用 (二重解放) - コピーコンストラクタが無いため

CL.SELF-ASSIGN  解放済みメモリの使用 (二重解放) - operator=

CL.SHALLOW.ASSIGN  解放済みメモリの使用 (二重解放) - 演算子 = での浅いコピー

CL.SHALLOW.COPY  解放済みメモリの使用 (二重解放) - コピーコンストラクタでの浅いコピー

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

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

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

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 ポインターが逆参照されます

RNPD.CALL  NULL チェック前のポインタの、関数呼び出しにおける逆参照は問題となる可能性があります

RNPD.DEREF  NULL チェック前のポインタの逆参照は問題となる可能性があります

SV.INCORRECT_RESOURCE_HANDLING.URH  安全でないリソース処理

UFM.DEREF.MIGHT  解放済みメモリの逆参照の可能性

UFM.DEREF.MUST  解放済みメモリの逆参照

UFM.FFM.MIGHT  解放済みメモリの使用 (二重解放)の可能性

UFM.FFM.MUST  解放済みメモリの解放

UFM.RETURN.MIGHT  解放済みメモリの戻り値への使用の可能性

UFM.RETURN.MUST  解放済みメモリの戻り値への使用

UFM.USE.MIGHT  解放済みメモリの使用の可能性

UFM.USE.MUST  解放済みメモリの使用

Pro.type: 型安全プロファイル

AUTOSAR.CAST.CSTYLE  従来の C スタイルのキャストは使用してはなりません

AUTOSAR.CAST.REINTERPRET  reinterpret_cast は使用してはなりません

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

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

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

MISRA.CAST.INT  自明ではない整数式が広い型または別の符号を持つ型にキャストされています

MISRA.CAST.INT.SIGN  自明ではない複合式が別の符号を持つ型にキャストされています

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

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

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

MISRA.CAST.UNSIGNED_BITS  unsigned char または short でのビット演算の結果は元の型にキャストできません

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

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

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

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

PORTING.CAST.FLTPNT  非浮動小数点タイプへの浮動小数点式のキャスト

PORTING.CAST.PTR.FLTPNT  非浮動小数点型のポインタへの浮動小数点式のポインタのキャスト

PORTING.CAST.PTR.SIZE  サイズに互換性がない可能性がある型への式のキャストの可能性

PRECISION.LOSS  精度の損失

PRECISION.LOSS.CALL  関数呼び出し中の精度の損失

PRECISION.LOSS.INIT  初期化中の精度の損失

R.1: リソースハンドルと RAII を使ってリソースを自動的に管理する

CL.MLK  メモリリーク - デストラクタで発生

CL.MLK.ASSIGN  メモリリーク - 代入演算子

CL.MLK.VIRTUAL  メモリリーク - デストラクタで発生している可能性

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

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

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

MLK.MUST  メモリリーク

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

MLK.RET.MUST  メモリリーク

RH.LEAK  リソースリーク

R.2: インターフェースでは生ポインタは個々のオブジェクトを示すためにのみ使用する

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

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

R.3: 生ポインタ (T*) は非所有である

UFM.DEREF.MIGHT  解放済みメモリの逆参照の可能性

UFM.DEREF.MUST  解放済みメモリの逆参照

UFM.USE.MIGHT  解放済みメモリの使用の可能性

UFM.USE.MUST  解放済みメモリの使用

R.4: 生参照 (T&) は非所有である

現在、このルールに対する適用可能なチェッカーはありません。

R.5: スコープ付きオブジェクトを優先し、不必要にヒープ割り当てしない

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

MLK.MUST  メモリリーク

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

MLK.RET.MUST  メモリリーク

R.6: 非 const グローバル変数を避ける

現在、このルールに対する適用可能なチェッカーはありません。

R.10: malloc() と free() を避ける

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

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

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

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

R.11: new と delete の明示的な呼び出しを避ける

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

MLK.MUST  メモリリーク

UFM.FFM.MIGHT  解放済みメモリの使用 (二重解放)の可能性

UFM.FFM.MUST  解放済みメモリの解放

R.12: 明示的なリソース割り当ての結果はただちにマネージャオブジェクトに渡す

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

MLK.MUST  メモリリーク

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

MLK.RET.MUST  メモリリーク

R.13: 単一の式文中で明示的なリソース割り当てを最大 1 回行う

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

MLK.MUST  メモリリーク

R.14: [] パラメータを避け span を使用する

現在、このルールに対する適用可能なチェッカーはありません。

R.15: マッチした割り当て・解放のペアは常にオーバーロードする

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

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

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

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

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

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

R.20: 所有権を表すには unique_ptr または shared_ptr を使用する

現在、このルールに対する適用可能なチェッカーはありません。

R.21: 所有権を共有する必要がない限り shared_ptr より unique_ptr を優先する

現在、このルールに対する適用可能なチェッカーはありません。

R.22: shared_ptr を作成するには make_shared() を使用する

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

MLK.MUST  メモリリーク

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

MLK.RET.MUST  メモリリーク

R.23: unique_ptr を作成するには make_unique() を使用する

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

MLK.MUST  メモリリーク

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

MLK.RET.MUST  メモリリーク

R.24: shared_ptr の循環を断ち切るには std::weak_ptr を使用する

現在、このルールに対する適用可能なチェッカーはありません。

R.30: ライフタイムセマンティクスを明示的に表現する場合のみスマートポインタをパラメータとして受け取る

現在、このルールに対する適用可能なチェッカーはありません。

R.31: 非標準のスマートポインタを持つ場合は std の基本パターンに従う

現在、このルールに対する適用可能なチェッカーはありません。

R.32: 関数が widget の所有権を引き受けることを表すには unique_ptr<widget> パラメータを使用する

現在、このルールに対する適用可能なチェッカーはありません。

R.33: 関数が widget を付け替えることを表すには unique_ptr<widget>& パラメータを使用する

現在、このルールに対する適用可能なチェッカーはありません。

R.34: 共有所有権を表すには shared_ptr<widget> パラメータを使用する

現在、このルールに対する適用可能なチェッカーはありません。

R.35: 関数が共有ポインタを付け替える可能性があることを表すには shared_ptr<widget>& パラメータを使用する

現在、このルールに対する適用可能なチェッカーはありません。

R.36: オブジェクトへの参照カウントを保持する可能性があることを表すには const shared_ptr<widget>& パラメータを使用する

現在、このルールに対する適用可能なチェッカーはありません。

R.37: エイリアスされたスマートポインタから取得したポインタや参照を渡さない

CERT.MEM.SMART_PTR.OWNED  複数のスマートポインターでのポインター所有権の共有

CERT.MEM.SMART_PTR.OWNED.THIS  基礎となるリソースが無関係なスマートポインターによって既に所有されている可能性がある

SF.1: コードファイルには .cpp、インターフェースファイルには .h サフィックスを使用する

現在、このルールに対する適用可能なチェッカーはありません。

SF.2: ヘッダファイルにオブジェクト定義や非インライン関数定義を含めない

MISRA.ONEDEFRULE.FUNC  ヘッダーファイルでグローバル関数が定義されています

MISRA.ONEDEFRULE.VAR  ヘッダーファイルでグローバル変数が定義されています

SF.3: 複数のソースファイルで使用する宣言にはヘッダファイルを使用する

MISRA.LINKAGE.EXTERN  外部リンクを持つオブジェクトまたは関数の宣言がヘッダーファイルにありません

SF.4: ファイル内の他の宣言の前にヘッダファイルをインクルードする

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

SF.5: .cpp ファイルはそのインターフェースを定義する .h ファイルをインクルードしなければならない

現在、このルールに対する適用可能なチェッカーはありません。

SF.6: using namespace ディレクティブは移行・基盤ライブラリ・ローカルスコープ内のみに使用する

MISRA.NS.USING_DIR  ディレクティブを使用しています

SF.7: ヘッダファイルのグローバルスコープで using namespace を記述しない

MISRA.NAMESPACE.DECL  ヘッダーファイルに using 宣言があります

MISRA.NAMESPACE.DIR  ヘッダーファイルに using ディレクティブがあります

MISRA.NS.USING.HEADER  ヘッダーファイルでディレクティブまたは宣言が使用されています

SF.8: すべての .h ファイルに #include ガードを使用する

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

SF.9: ソースファイル間の循環依存を避ける

現在、このルールに対する適用可能なチェッカーはありません。

SF.10: 暗黙的にインクルードされた名前への依存を避ける

現在、このルールに対する適用可能なチェッカーはありません。

SF.11: ヘッダファイルは自己完結的にする

現在、このルールに対する適用可能なチェッカーはありません。

SF.12: インクルードするファイルからの相対パスには引用符形式の #include を優先する

現在、このルールに対する適用可能なチェッカーはありません。

SF.13: ヘッダをインクルードする際はポータブルなヘッダ識別子を使用する

現在、このルールに対する適用可能なチェッカーはありません。

SF.20: 論理構造を表現するために名前空間を使用する

現在、このルールに対する適用可能なチェッカーはありません。

SF.21: ヘッダで無名 (匿名) 名前空間を使用しない

MISRA.NAMESPACE.UNMD  ヘッダーファイルに名前のない名前空間があります

SF.22: すべての内部・非公開エンティティに無名 (匿名) 名前空間を使用する

現在、このルールに対する適用可能なチェッカーはありません。

SL.1: 可能な限り標準ライブラリを使用する

現在、このルールに対する適用可能なチェッカーはありません。

SL.2: 他のライブラリより標準ライブラリを優先する

現在、このルールに対する適用可能なチェッカーはありません。

SL.3: 名前空間 std に非標準エンティティを追加しない

CERT.DCL.STD_NS_MODIFIED  標準名前空間を変更しないでください

SL.4: 標準ライブラリを型安全な方法で使用する

SV.FMT_STR.PRINT_FORMAT_MISMATCH.BAD  互換性がない print 関数パラメーターの型

SV.FMT_STR.PRINT_PARAMS_WRONGNUM.FEW  print 関数呼び出しの引数が少なすぎます

SV.FMT_STR.PRINT_PARAMS_WRONGNUM.MANY  print 関数呼び出しの引数が多すぎます

SV.FMT_STR.SCAN_FORMAT_MISMATCH.BAD  互換性がない scan 関数パラメーターの型

SL.chrono.1: 時間の長さを表すには std::chrono::duration を使用する

現在、このルールに対する適用可能なチェッカーはありません。

SL.chrono.2: 特定の時点を表すには std::chrono::time_point を使用する

現在、このルールに対する適用可能なチェッカーはありません。

SL.con.1: C 配列の代わりに STL の array または vector を使用することを優先する

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

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

AUTOSAR.ARRAY.CSTYLE  C スタイルの配列は使用してはなりません

SL.con.2: 特別な理由がない限りデフォルトで STL の vector を使用することを優先する

現在、このルールに対する適用可能なチェッカーはありません。

SL.con.3: 境界エラーを避ける

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

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

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

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

ABV.NON_ARRAY  非配列オブジェクトが配列として使用される

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

CXX.ITER.END.BEGIN  範囲の終わりを表す反復子が範囲の始まりの前にあります

ITER.ADVANCE.NONADJACENT  反復子間の距離は 1 より大きい値にする

ITER.CONTAINER.MODIFIED  無効な反復子の使用

ITER.END.OUTPARAM.MIGHT  出力反復子としての 'end' の使用

ITER.END.OUTPARAM.MUST  出力反復子としての 'end' の使用

ITER.INAPPROPRIATE  コンテナーオブジェクトが不適切な反復子の使用

ITER.INAPPROPRIATE.MULTIPLE  コンテナーオブジェクトが不適切な反復子の使用

RABV.CHECK  境界チェック前のインデックスの不審な使用

RN.INDEX  負の値のチェック前のインデックスの使用は問題となる可能性があります

SL.con.4: 自明なコピーができない引数に memset や memcpy を使用しない

現在、このルールに対する適用可能なチェッカーはありません。

SL.io.1: 必要な場合のみ文字レベルの入力を使用する

現在、このルールに対する適用可能なチェッカーはありません。

SL.io.2: 読み込み時は常に不正な入力を考慮する

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

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

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

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

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

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

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

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

SL.io.3: I/O には iostream を優先する

現在、このルールに対する適用可能なチェッカーはありません。

SL.io.10: printf ファミリの関数を使用する場合を除き、cout と printf の同期に注意する

現在、このルールに対する適用可能なチェッカーはありません。

SL.io.50: endl を避ける

現在、このルールに対する適用可能なチェッカーはありません。

SL.regex.1: 入力が本質的にテキストベースの場合のみ正規表現を使用する

現在、このルールに対する適用可能なチェッカーはありません。

SL.str.1: 文字シーケンスを所有するには std::string を使用する

現在、このルールに対する適用可能なチェッカーはありません。

SL.str.2: 文字シーケンスを参照するには std::string_view または gsl::string_span を使用する

現在、このルールに対する適用可能なチェッカーはありません。

SL.str.3: C スタイルのヌル終端文字シーケンスを参照するには zstring または czstring を使用する

現在、このルールに対する適用可能なチェッカーはありません。

SL.str.4: 単一の文字を参照するには char* を使用する

現在、このルールに対する適用可能なチェッカーはありません。

SL.str.5: 文字を表さないバイト値を参照するには std::byte を使用する

現在、このルールに対する適用可能なチェッカーはありません。

SL.str.10: ロケール依存の文字列操作が必要な場合は std::string を使用する

現在、このルールに対する適用可能なチェッカーはありません。

SL.str.11: 文字列を変更する必要がある場合は std::string_view ではなく gsl::string_span を使用する

現在、このルールに対する適用可能なチェッカーはありません。

SL.str.12: 標準ライブラリの文字列を意図する文字列リテラルには s サフィックスを使用する

現在、このルールに対する適用可能なチェッカーはありません。

T.1: テンプレートを使ってコードの抽象化レベルを上げる

現在、このルールに対する適用可能なチェッカーはありません。

T.2: 多くの引数型に適用されるアルゴリズムを表現するためにテンプレートを使用する

現在、このルールに対する適用可能なチェッカーはありません。

T.3: コンテナと範囲を表現するためにテンプレートを使用する

現在、このルールに対する適用可能なチェッカーはありません。

T.4: 構文木の操作を表現するためにテンプレートを使用する

現在、このルールに対する適用可能なチェッカーはありません。

T.5: ジェネリックと OO の技術を組み合わせてそれぞれの強みを活かす

現在、このルールに対する適用可能なチェッカーはありません。

T.10: すべてのテンプレート引数にコンセプトを指定する

現在、このルールに対する適用可能なチェッカーはありません。

T.11: 可能な限り標準のコンセプトを使用する

現在、このルールに対する適用可能なチェッカーはありません。

T.12: ローカル変数には auto よりコンセプト名を優先する

現在、このルールに対する適用可能なチェッカーはありません。

T.13: シンプルな単一型引数のコンセプトには省略記法を優先する

現在、このルールに対する適用可能なチェッカーはありません。

T.20: 意味のあるセマンティクスを持たないコンセプトを避ける

現在、このルールに対する適用可能なチェッカーはありません。

T.21: コンセプトには完全な操作のセットを要求する

現在、このルールに対する適用可能なチェッカーはありません。

T.22: コンセプトに公理を指定する

現在、このルールに対する適用可能なチェッカーはありません。

T.23: 新しい使用パターンを追加することで精緻化されたコンセプトをより一般的なケースと区別する

現在、このルールに対する適用可能なチェッカーはありません。

T.24: セマンティクスのみが異なるコンセプトを区別するにはタグクラスまたはトレイトを使用する

現在、このルールに対する適用可能なチェッカーはありません。

T.25: 補完的な制約を避ける

現在、このルールに対する適用可能なチェッカーはありません。

T.26: 単純な構文よりも使用パターンに基づいてコンセプトを定義することを優先する

現在、このルールに対する適用可能なチェッカーはありません。

T.30: 小さな差異を表現するためのコンセプト否定は控えめに使用する

現在、このルールに対する適用可能なチェッカーはありません。

T.31: 小さな差異を表現するためのコンセプト論理和は控えめに使用する

現在、このルールに対する適用可能なチェッカーはありません。

T.40: アルゴリズムに操作を渡すには関数オブジェクトを使用する

現在、このルールに対する適用可能なチェッカーはありません。

T.41: テンプレートのコンセプトには本質的なプロパティのみを要求する

現在、このルールに対する適用可能なチェッカーはありません。

T.42: 記法を簡略化し実装の詳細を隠すためにテンプレートエイリアスを使用する

現在、このルールに対する適用可能なチェッカーはありません。

T.43: エイリアスの定義には typedef より using を優先する

AUTOSAR.TYPEDEF  typedef 指定子は使用してはなりません

T.44: 可能な場合はクラステンプレートの引数型を推論するために関数テンプレートを使用する

現在、このルールに対する適用可能なチェッカーはありません。

T.46: テンプレート引数は少なくとも準正規であることを要求する

現在、このルールに対する適用可能なチェッカーはありません。

T.47: 一般的な名前を持つ高い視認性の制約なしテンプレートを避ける

現在、このルールに対する適用可能なチェッカーはありません。

T.48: コンパイラがコンセプトをサポートしていない場合は enable_if で模倣する

現在、このルールに対する適用可能なチェッカーはありません。

T.49: 可能な限り型消去を避ける

現在、このルールに対する適用可能なチェッカーはありません。

T.60: テンプレートのコンテキスト依存を最小化する

現在、このルールに対する適用可能なチェッカーはありません。

T.61: メンバを過度にパラメータ化しない (SCARY)

現在、このルールに対する適用可能なチェッカーはありません。

T.62: テンプレートに依存しないクラステンプレートメンバは非テンプレート基底クラスに置く

現在、このルールに対する適用可能なチェッカーはありません。

T.64: クラステンプレートの代替実装を提供するには特殊化を使用する

現在、このルールに対する適用可能なチェッカーはありません。

T.65: 関数の代替実装を提供するにはタグディスパッチを使用する

現在、このルールに対する適用可能なチェッカーはありません。

T.67: 不規則な型の代替実装を提供するには特殊化を使用する

現在、このルールに対する適用可能なチェッカーはありません。

T.68: テンプレート内では曖昧さを避けるために () ではなく {} を使用する

現在、このルールに対する適用可能なチェッカーはありません。

T.69: テンプレート内でカスタマイズポイントとして意図しない限り、修飾なしの非メンバ関数呼び出しをしない

MISRA.TEMPLMEM.NOQUAL  インスタンス化されたテンプレートで、依存基本クラスで宣言されたメンバーが修飾子または 'this' なしで使用されています

T.80: クラス階層を単純にテンプレート化しない

現在、このルールに対する適用可能なチェッカーはありません。

T.81: 階層と配列を混在させない

現在、このルールに対する適用可能なチェッカーはありません。

T.82: 仮想関数が望ましくない場合は階層を線形化する

現在、このルールに対する適用可能なチェッカーはありません。

T.83: メンバ関数テンプレートを virtual と宣言しない

現在、このルールに対する適用可能なチェッカーはありません。

T.84: ABI 安定したインターフェースを提供するには非テンプレートのコア実装を使用する

現在、このルールに対する適用可能なチェッカーはありません。

T.100: さまざまな型の可変個引数を受け取る関数が必要な場合は可変引数テンプレートを使用する

現在、このルールに対する適用可能なチェッカーはありません。

T.101: 可変引数テンプレートへの引数の渡し方

現在、このルールに対する適用可能なチェッカーはありません。

T.102: 可変引数テンプレートの引数の処理方法

現在、このルールに対する適用可能なチェッカーはありません。

T.120: 本当に必要な場合のみテンプレートメタプログラミングを使用する

現在、このルールに対する適用可能なチェッカーはありません。

T.121: テンプレートメタプログラミングは主にコンセプトのエミュレートに使用する

現在、このルールに対する適用可能なチェッカーはありません。

T.122: コンパイル時に型を計算するにはテンプレート (通常はテンプレートエイリアス) を使用する

現在、このルールに対する適用可能なチェッカーはありません。

T.123: コンパイル時に値を計算するには constexpr 関数を使用する

現在、このルールに対する適用可能なチェッカーはありません。

T.124: 標準ライブラリの TMP 機能を優先して使用する

現在、このルールに対する適用可能なチェッカーはありません。

T.125: 標準ライブラリの TMP 機能を超える必要がある場合は既存のライブラリを使用する

現在、このルールに対する適用可能なチェッカーはありません。

T.140: 再利用の可能性がある操作にはすべて名前を付ける

現在、このルールに対する適用可能なチェッカーはありません。

T.141: 1 か所でのみ必要なシンプルな関数オブジェクトには無名ラムダを使用する

現在、このルールに対する適用可能なチェッカーはありません。

T.142: 記法を簡略化するためにテンプレート変数を使用する

現在、このルールに対する適用可能なチェッカーはありません。

T.143: 意図せず非ジェネリックなコードを書かない

現在、このルールに対する適用可能なチェッカーはありません。

T.144: 関数テンプレートを特殊化しない

MISRA.FUNC.SPEC.OVRLD  関数呼び出し用の実行可能関数に多重定義されたテンプレートとその明示的な特殊化が含まれています

T.150: static_assert を使ってクラスがコンセプトに一致するか確認する

現在、このルールに対する適用可能なチェッカーはありません。