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 を使ってクラスがコンセプトに一致するか確認する |
現在、このルールに対する適用可能なチェッカーはありません。 |