このリリースでは、コード解析機能の拡張および AUTOSAR C++ 14 コーディング標準のサポート拡充に重点が置かれました。
IDE のサポート
以下のサポートが追加されました。
Eclipse 4.9
コンプライアンス パックの拡張
Automotive Compliance Pack が拡張され、AUTOSAR C++14 コーディング ガイドラインのコンプライアンス推進に役立つようになりました。
- "AUTOSAR C++ 14 Coding Guidelines" テスト コンフィギュレーションが更新され、AUTOSAR C++ 14 Coding Guidelines バージョン 18.10 へのコンプライアンス推進に役立つようになりました。
- "AUTOSAR C++ 14 Coding Guidelines" テスト コンフィギュレーションの大幅な拡張が行われ、標準を推進するための新しいルールが追加されました。
コンプライアンス パックを使用するには、専用のライセンス機能を有効化する必要があります。コンプライアンス パック ライセンスの詳細については、Parasoft 製品サポートにご連絡ください。
静的解析のパフォーマンス改善
C/C++test の静的コード解析機能が拡張され、パフォーマンスが改善しました。C/C++ テストは、インクリメンタルな CI ビルドでの解析時間を短縮するよう最適化され、コードの変更から静的解析結果の確認までのフィードバック サイクルが短縮されました。また、最適化により、IDE でローカルに実行される解析がスピードアップし、デスクトップでのソフトウェア開発の加速に役立ちます。詳細は「インクリメンタルな静的解析」を参照してください。
追加または更新された解析ルール
このリリースでは、新規静的解析ルールが追加され、コンプライアンス標準のカバー範囲が拡張されました。詳細については「新規ルール」、「Updated Rules」、および「Removed Rules」を参照してください。
フロー解析の改善
- 実行パス中で発見されたときに常に解析対象とする関数を指定できるようになりました。詳細は「フロー解析の設定」を参照してください。
- セットアップの問題のレポートが改善されました。
解決済みのバグおよび FR
バグ/FR ID | 説明 |
---|---|
CPP-36917 | MISRA2012-13_2_f (MISRA2004-12_2_f) が違反を誤検出する |
CPP-38031 | MISRA2012-RULE-11_1_a: 多次元配列の要素が初期化されている場合の誤検出 |
CPP-39310 | error: 'visibility' was not declared in this scope |
CPP-39915 | MISRA2004-10_6 (MISRA2012-RULE-7_2) ルールが巨大な配列の初期化で使用されている符号付き値に対して違反を誤検出する |
CPP-40091 | MISRA2012-RULE-10_3_b (CODSTA-163_b) が ARM v7.8 コンパイラで違反を誤検出する |
CPP-40400 | [RW] 呼び出しでのデフォルト引数の使用を検出するためのプロパティを追加 (Argument ノード) |
CPP-40561 | [CERTC] ルールの拡張: Understand the type issues associated with variadic functions (scanf) |
CPP-41278 | 列挙定数がシフト演算子の RHS オペランドとして使用されている場合、MISRA2004-12_8 (MISRA-038) が違反を検出しない |
CPP-41279 | 関数にコメントがない場合、METRICS-19 が違反を検出しない |
CPP-41829 | line 160: internal error: assertion failed at: "error.c", line 1123 |
CPP-42436 | ブロックのコンテキストで if 文 (またはその他) が誤って検出される (C のみ) |
CPP-42458 | [VS] ソリューション フォルダー内のテスト プロジェクトのサポート改善 |
CPP-42462 | line 66: internal error: assertion failed at: "scope_stk.c", line 5106 |
CPP-42467 | コマンド ライン オプション -edg.restrict_keyword_enabled の読み取りエラー |
CPP-42524 | MISRA-071_b (MISRA2012-RULE-17_3) はビルトイン関数の呼び出しに対して違反をレポートするべきではない |
CPP-42551 | [RW] RuleWizard が誤ったバージョン番号を表示する |
CPP-42577 | GNU GCC 8 _attribute_((fallthrough)) でパース エラー |
CPP-42578 | テンプレート コードを解析するカスタム ルールで cwc がクラッシュする |
CPP-42663 | PB.33_b: packed 属性内で定義された列挙型に対して違反を誤検出する |
CPP-42687 | C++test がユーザー定義リテラルを処理できない |
CPP-42795 | 括弧付きの 'cppmode' タグの効果がない |
CPP-42859 | [DOCS] ライセンス エディション名の修正 |
CPP-42878 | 匿名共用体を含む構造体へのポインター型のパラメーターに対して MISRA2004-16_7 が違反を誤検出する |
CPP-42879 | 匿名共用体を含む構造体へのポインター型のパラメーターに対して CODSTA-132 が違反を誤検出する |
CPP-42901 | IAR EWARM __packed でパース エラー |
CPP-42936 | RW で a->b 式の 'b' が匿名共用他のメンバーであるとき、a.b として検出される |
CPP-42951 | OPT-03 (AUTOSAR A0-1-4) が属性 unused' (c++11) をサポートしていない |
CPP-43007 | Intel icc 18: BDF ファイルからリンカー オプションが抽出されない |
CPP-43010 | 代入演算子関数を使用してループ カウンターを初期化している場合、CODSTA-52 (JSF-198) が違反を誤検出する |
CPP-43080 | METRICS-29, -33 は定義されインスタンス化されたテンプレート関数に対してだけ違反を検出するべきである |
CPP-43103 | カスタム ルールで cwc が終了コード 4 でクラッシュする |
CPP-43105 | [RW] a.b, a->b, a.*b, a->*b ノードの 'OperatorName' プロパティの拡張 |
CPP-43299 | [DOCS] CPPTEST_REPORT_ENUM が実際には 3 つの引数を要求する |
CPP-43407 | [TEST_EDITOR] スクロールおよびサイズ変更時のウィジェットの動作の改善 |
FA-5720 | BD-PB-OVERFNZT の誤検出 |
FA-6283 | BD-PB-OVERFNZT の誤検出 |
FA-6745 | 終了関数が認識されない |
FA-6758 | グラフ構築時に現在のブロックが ScopeBlock エラーではない |
FA-6801 | BD-PB-OVERFNZT の誤検出 |
FA-6807 | BD-RES-LEAKS の誤検出 |
FA-6811 | 負数に設定されていないインデックスに対して BD-PB-ARRAY が違反を検出する |
FA-6857 | BD-PB-EOFCOMP ルールは fputs メソッドもカバーするべき |
FA-6974 | BD-PB-STDEXC の誤検出 |
FA-6976 | bool/int 比較評価に対して BD-PB-NP が違反を誤検出する |
新規ルール
以下のルールが追加されました。
ルール ID | ヘッダー |
---|---|
AUTOSAR-A0_1_6-a | プロジェクトに未使用の型宣言が含まれていてはならない |
AUTOSAR-A0_4_2-a | long double 型を使用してはならない |
AUTOSAR-A0_4_4-a | ライブラリ関数に渡される値を検証する |
AUTOSAR-A10_3_1-a | メンバー関数の宣言では virtual、override、final のいずれか 1 つだけを指定するべきである |
AUTOSAR-A10_3_5-a | ユーザー定義の代入演算子は virtual であってはならない |
AUTOSAR-A10_4_1-a | 抽象クラスから階層を開始する |
AUTOSAR-A11_0_1-a | 非 POD 型はクラスとして定義するべきである |
AUTOSAR-A11_0_2-a | 構造体には、public データ メンバーだけを含めるべきであり、基底であったり継承を行ったりするべきではない |
AUTOSAR-A12_0_2-a | パディング ビットを含む可能性があるクラスのオブジェクトを C の標準ライブラリ関数で比較してはならない |
AUTOSAR-A12_4_2-a | クラスの public なデストラクターが非 virtual である場合、クラスを final 宣言するべきである |
AUTOSAR-A12_7_1-a | 振る舞いが同等なら、特別なメンバー =default を定義する |
AUTOSAR-A12_8_3-a | 移動元オブジェクトの値に依存しない |
AUTOSAR-A13_1_2-a | ユーザー定義リテラル演算子のユーザー定義の接尾辞は、アンダースコアで始まり 1 文字以上の文字が続く必要がある |
AUTOSAR-A13_1_3-a | ユーザー定義のリテラル演算子は、渡されたパラメーターの変換だけを行う必要がある |
AUTOSAR-A13_2_2-a | 2 項算術演算子およびビット演算子は 'prvalue' を返す必要がある |
AUTOSAR-A13_2_3-a | 関係演算子はブール値を返す必要がある |
AUTOSAR-A13_5_3-a | ユーザ定義の変換関数を使用しない |
AUTOSAR-A13_5_4-a | == と != など 2 つの演算子が反対の意味を持つ場合、両方を定義するのが適切である |
AUTOSAR-A13_5_4-b | When two operators are opposites (such as == and !=) both will be defined and one will be defined in terms of the other |
AUTOSAR-A13_5_5-a | 混合モードの算術をサポートするには、メンバ演算子ではなくメンバでない演算子を使う |
AUTOSAR-A13_6_1-a | 桁区切り ' は一貫性をもって使用する |
AUTOSAR-A14_5_1-a | 1 つのジェネリック パラメータを持つテンプレート コンストラクタがある場合、コピー コンストラクタを宣言する |
AUTOSAR-A14_7_2-a | テンプレートの特殊化は、一次テンプレートまたは特殊化が宣言されたユーザー定義型と同じファイルに宣言する |
AUTOSAR-A14_8_2-a | オーバーロードされた関数テンプレートを明示的に特殊化してはならない |
AUTOSAR-A15_0_2-a | リソースが解放されていることを確認する |
AUTOSAR-A15_1_1-a | std::exception のインスタンスだけを例外として使用する |
AUTOSAR-A15_1_5-a | 実行境界を越えて例外をスローしてはならない |
AUTOSAR-A15_4_2-a | 例外をスローしないよう宣言された関数から例外をスローしてはならない |
AUTOSAR-A15_5_1-a | デストラクタ、割り当て解除、スワップから例外をスローしてはならない |
AUTOSAR-A15_5_1-b | すべてのユーザー定義のムーブ コンストラクターおよびムーブ代入演算子は、例外で終了してはならない |
AUTOSAR-A16_2_2-a | ファイルは、コンパイルに必要な宣言および定義を含むヘッダーだけを直接的にインクルードするべきである |
AUTOSAR-A16_6_1-a | #error ディレクティブを使用してはならない |
AUTOSAR-A16_7_1-a | #pragma ディレクティブを使用してはならない |
AUTOSAR-A17_1_1-b | C 標準ライブラリの使用をラップする |
AUTOSAR-A17_6_1-a | 標準の名前空間 std および posix を変更してはならない |
AUTOSAR-A18_1_4-a | オブジェクトの配列の要素を指すポインターを単一のオブジェクト型のスマート ポインターに渡してはならない |
AUTOSAR-A18_1_6-a | ユーザー定義型のすべての std::hash 特殊化は、noexcept 関数呼び出し演算子を持つ必要がある |
AUTOSAR-A18_5_10-a | 不適切なストレージ容量を持つポインターまたは作成されるオブジェクトに対して適切にアラインされていないポインターを配置 new に渡さない |
AUTOSAR-A18_5_10-b | 配置 new アロケーション関数にオブジェクトの配列を渡す場合、オーバーヘッドを使用するべきである |
AUTOSAR-A18_5_11-a | 演算子 new を記述した場合は演算子 delete を記述する |
AUTOSAR-A18_5_11-b | 演算子 new[] を記述した場合は演算子 delete[] を記述する |
AUTOSAR-A18_5_3-c | Properly deallocate dynamically allocated resources |
AUTOSAR-A18_5_4-a | サイズ指定付きとサイズ指定なしの両方のバージョンの delete 演算子を定義する |
AUTOSAR-A18_5_5-c | new ハンドラーを適切に定義する |
AUTOSAR-A18_5_8-a | new または malloc ではなく、宣言によって割り当てる |
AUTOSAR-A18_5_9-a | ユーザー定義の new 演算子は、割り当てが失敗した場合、std::bad_alloc 例外をスローするべきである |
AUTOSAR-A18_9_2-a | std::forward を使用して前方ユニバーサル参照を行う |
AUTOSAR-A18_9_3-a | Do not use std::move on objects declared with the const or consttype |
AUTOSAR-A2_10_1-a | ローカルまたは関数プロトタイプ スコープで宣言された識別子は、グローバルまたは名前空間のスコープで宣言された識別子を隠蔽してはならない |
AUTOSAR-A2_10_1-b | 内側のローカル スコープで宣言された識別子は、外側のローカル スコープで宣言された識別子を隠蔽してはならない |
AUTOSAR-A2_10_1-c | ローカル スコープで宣言された識別子は、クラス スコープで宣言された識別子を隠ぺいしてはならない |
AUTOSAR-A2_10_1-d | クラス スコープで宣言された識別子は、グローバルまたは名前空間のスコープで宣言された識別子を隠ぺいしてはならない |
AUTOSAR-A2_10_1-e | 内部クラスのスコープで宣言された識別子は、外側のクラスのスコープで宣言された識別子を隠ぺいしてはならない |
AUTOSAR-A2_10_5-a | 静的記憶域期間を持つオブジェクトや関数識別子は、再使用すべきでない |
AUTOSAR-A2_10_5-b | 静的記憶域期間を持つオブジェクトや関数識別子は、再使用すべきでない |
AUTOSAR-A2_10_6-a | 型を参照する識別子は、同じスコープにあるオブジェクトまたは関数を参照してはならない |
AUTOSAR-A2_10_6-b | 型を参照する識別子は、同じスコープにあるオブジェクトまたは関数を参照してはならない |
AUTOSAR-A2_10_6-c | 型を参照する識別子は、同じスコープにあるオブジェクトまたは関数を参照してはならない |
AUTOSAR-A2_13_1-a | ISO/IEC 14882:2003 で定義されたエスケープ シーケンスだけを使用する |
AUTOSAR-A2_13_2-a | エンコーディング接頭辞が異なる文字列リテラルを結合してはならない |
AUTOSAR-A2_13_3-a | wchar_t 型を使用してはならない |
AUTOSAR-A2_13_4-a | 文字列リテラルを変更してはならない |
AUTOSAR-A2_13_5-a | 16 進定数はすべて大文字で表記する |
AUTOSAR-A2_13_6-a | ユニバーサル文字名は、文字または文字列リテラルの内部でだけ使用する |
AUTOSAR-A2_3_1-a | ISO の C 規格で定義されている文字だけを使用する |
AUTOSAR-A2_5_2-a | The following digraphs will not be used %%,::%:%:%: |
AUTOSAR-A2_7_1-a | // コメントで行の結合を使用してはならない |
AUTOSAR-A2_7_2-a | コード セクションを \"コメント アウト\" してはならない |
AUTOSAR-A20_8_1-a | すでに所有されているポインター値を関連がないスマート ポインターに格納しない |
AUTOSAR-A20_8_2-a | スレッドにオブジェクトへのポインターを渡す場合はスマート ポインターを使用する |
AUTOSAR-A20_8_3-a | スレッドにオブジェクトへのポインターを渡す場合はスマート ポインターを使用する |
AUTOSAR-A20_8_4-a | ローカル オブジェクトに対して 'std::shared_ptr' ではなく 'std::unique_ptr' を使用することを検討する |
AUTOSAR-A20_8_5-a | 'std::unique_ptr' によって所有されるオブジェクトの構築には 'std::make_unique' を使用する |
AUTOSAR-A20_8_6-a | new を直接使用するのではなく、できるだけ 'std::make_shared' を使用する |
AUTOSAR-A20_8_7-a | shared_ptr の循環参照を避ける |
AUTOSAR-A21_8_1-a | ctype.h ライブラリ関数に誤った値を渡してはならない |
AUTOSAR-A23_0_2-a | コンテナーを反復処理中に変更しない |
AUTOSAR-A23_0_2-b | 有効な参照、ポインター、イテレーターを使用して basic_string の要素を参照する |
AUTOSAR-A25_1_1-a | 述語を純粋関数にする |
AUTOSAR-A25_4_1-a | 等しい値に対して true を返す比較関数を連想コンテナに使用しない |
AUTOSAR-A26_5_1-a | 疑似乱数の生成に rand() 関数を使用しない |
AUTOSAR-A26_5_2-a | 疑似乱数生成器に適切なシードを指定する |
AUTOSAR-A27_0_1-c | 汚染されたデータによるバッファー オーバーフローを避ける |
AUTOSAR-A27_0_1-d | 不正な書式制限の定義によるバッファー オーバーフローを避ける |
AUTOSAR-A27_0_1-e | 汚染されたデータによるバッファー読み込み時のオーバーフローを避ける |
AUTOSAR-A27_0_1-f | 汚染されたデータによるバッファー書き込み時のオーバーフローを避ける |
AUTOSAR-A27_0_1-g | コマンド インジェクションから防御する |
AUTOSAR-A27_0_1-h | フォーマット文字列からサニタイズされていないユーザー入力を除外する |
AUTOSAR-A27_0_2-c | 配列ではなく vector や string を使用する |
AUTOSAR-A27_0_2-d | 配列の境界を超えてアクセスしてはならない |
AUTOSAR-A27_0_2-e | 汚染されたデータによるバッファー オーバーフローを避ける |
AUTOSAR-A27_0_2-f | 汚染されたデータによるバッファー書き込み時のオーバーフローを避ける |
AUTOSAR-A27_0_2-g | バッファ オーバーフローの原因になる可能性があるため、安全ではない文字列関数を使用しないようにする |
AUTOSAR-A27_0_3-a | 間にフラッシュまたは位置付けの処理を呼び出さずに交互にストリームの入力と出力を行ってはならない |
AUTOSAR-A3_1_2-a | ヘッダー ファイルにはファイル拡張子 \".h\"、\".hpp\" または \".hxx\" を付けるべきである |
AUTOSAR-A3_1_5-a | テンプレートではないクラス定義でメンバ関数を定義してはいけない |
AUTOSAR-A3_1_6-a | 小さいアクセサ関数やミューテータ関数はインラインにする |
AUTOSAR-A3_8_1-a | 解放されたリソースを使用してはならない |
AUTOSAR-A3_8_1-b | 自動記憶域のオブジェクトのアドレスを関数から返してはいけない |
AUTOSAR-A3_8_1-c | 自動記憶域のオブジェクトのアドレスを、オブジェクトが存在しなくなった後にも存在し続ける可能性がある別のオブジェクトに代入してはならない |
AUTOSAR-A3_8_1-d | 解放済みのラップされたオブジェクトを指してはならない |
AUTOSAR-A4_7_1-h | 整数のオーバーフローを避ける |
AUTOSAR-A5_0_4-a | 配列をポリモーフィックに処理しない |
AUTOSAR-A5_0_4-b | 派生クラス オブジェクトの配列を指すポインターを、基底クラスのポインターに変換してはいけない |
AUTOSAR-A5_0_4-c | 配列をポリモーフィックに処理しない |
AUTOSAR-A5_1_7-a | ラムダを typeid のオペランドにしてはならない |
AUTOSAR-A5_10_1-a | メンバー仮想関数を指すポインターは、null ポインター定数と等価かどうかだけをテストするべきである |
AUTOSAR-A5_2_5-b | 範囲外の配列およびポインターへのアクセスを避ける |
AUTOSAR-A5_2_5-c | ポインター オペランドと、そのオペランドを使用したポインター算術の結果であるポインターは、同じ配列の要素を指していなければならない |
AUTOSAR-A5_2_5-d | 汚染されたデータを配列添え字として使用しない |
AUTOSAR-A5_2_6-a | 論理演算子 '&&' または '||' の各オペランドは後置式でなければならない |
AUTOSAR-A5_3_2-a | null ポインターの間接参照を避ける |
AUTOSAR-A5_3_3-a | 削除の時点で不完全なオブジェクトを削除してはならない |
AUTOSAR-A5_6_1-a | ゼロによる除算を避ける |
AUTOSAR-A6_5_4-a | for ループの初期化式は、1 つのループ パラメータの値を初期化する以外の処理を行ってはならない |
AUTOSAR-A6_5_4-b | for ループのインクリメント式は、1 つのループ パラメータを次の値に変更する以外の処理を行ってはならない |
AUTOSAR-A7_1_3-a | CV 修飾子は、修飾される型の右側に置く |
AUTOSAR-A7_1_7-b | 複数の変数を同じ行に宣言してはならない |
AUTOSAR-A7_1_7-c | 各変数は、別個の宣言文で宣言しなければならない |
AUTOSAR-A7_1_9-a | クラス、構造体、列挙型を、型の定義の中で宣言してはならない |
AUTOSAR-A7_2_5-a | 整数型や定数ではなく列挙型をケース ラベルとして使用する |
AUTOSAR-A7_3_1-a | オーバーロードされた関数を再宣言する場合、using 宣言を使用する |
AUTOSAR-A7_5_1-a | 関数は const 参照によって渡されたパラメータへの参照またはポインタを返してはならない |
AUTOSAR-A7_6_1-a | return するべきでない関数から return してはならない |
AUTOSAR-A8_4_10-a | パラメーターが NULL の可能性がない場合、参照で渡す |
AUTOSAR-A8_4_11-a | 生存期間を表現する場合にだけパラメーター型としてスマートポインターを使用する |
AUTOSAR-A8_4_12-a | std::unique_ptr を const 参照で渡さない |
AUTOSAR-A8_4_12-b | 生存期間を表現する場合にだけパラメーター型としてスマートポインターを使用する |
AUTOSAR-A8_4_12-c | パラメーターは、管理対象オブジェクトを関数が置き換える場合にだけ 'std::shared_ptr' または 'std::unique_ptr' への非 const lvalue 参照として宣言するべきである |
AUTOSAR-A8_4_12-d | パラメーターの型を 'std::shared_ptr' または 'std::unique_ptr' への rvalue 参照として宣言しない |
AUTOSAR-A8_4_13-a | 生存期間を表現する場合にだけパラメーター型としてスマートポインターを使用する |
AUTOSAR-A8_4_13-b | パラメーターは、管理対象オブジェクトを関数が置き換える場合にだけ 'std::shared_ptr' または 'std::unique_ptr' への非 const lvalue 参照として宣言するべきである |
AUTOSAR-A8_4_13-c | パラメーターの型を 'std::shared_ptr' または 'std::unique_ptr' への rvalue 参照として宣言しない |
AUTOSAR-A8_4_3-a | 値ではなく参照でオブジェクトを渡す |
AUTOSAR-A8_4_3-b | できる限り参照パラメータを const 参照として宣言する |
AUTOSAR-A8_4_5-a | 右辺値参照には std::move() を使用し、ユニバーサル参照には std::forward() を使用する |
AUTOSAR-A8_4_6-a | 右辺値参照には std::move() を使用し、ユニバーサル参照には std::forward() を使用する |
AUTOSAR-A8_4_7-a | 基本データ型は、値を使用しない限り参照を使用しない |
AUTOSAR-A8_4_7-b | トリビアルなコピー コンストラクターを持つ小さいオブジェクトは値で渡す |
AUTOSAR-A8_4_9-a | できる限り参照パラメータを const 参照として宣言する |
AUTOSAR-A8_5_0-a | 初期化の前に使用しない |
AUTOSAR-A9_6_2-a | メンバ変数をビット フィールドとして宣言してはいけない |
AUTOSAR-M2_7_1-a | 文字列 /* を C スタイルコメント内で用いてはならない |
AUTOSAR-M9_6_4-a | signed integer 型の名前付きのビットフィールドは 2 ビット以上の長さでなければならない |
BD-PB-ARRPTR | オブジェクトの配列の要素を指すポインターを単一のオブジェクト型のスマート ポインターに渡してはならない |
BD-PB-NOEXCEPT | 例外をスローしないよう宣言された関数から例外をスローしてはならない |
BD-PB-OVERLAP | オーバーラップするオブジェクトにオブジェクトを代入またはコピーしてはならない |
BD-PB-REFPARAM | パラメーターが NULL の可能性がない場合、参照で渡す |
BD-RES-BADDEALLOC | Properly deallocate dynamically allocated resources |
BD-RES-CSP | shared_ptr の循環参照を避ける |
BD-SECURITY-TDINPUT | フォーマット文字列からサニタイズされていないユーザー入力を除外する |
CERT_CPP-ERR50-m | 例外をスローしないよう宣言された関数から例外をスローしてはならない |
CERT_CPP-EXP59-a | offsetof() は有効な型およびメンバーに対して使用する |
CERT_CPP-EXP62-a | パディング ビットを含む可能性があるクラスのオブジェクトを C の標準ライブラリ関数で比較してはならない |
CERT_CPP-MEM51-d | Properly deallocate dynamically allocated resources |
CERT_CPP-MEM54-a | 不適切なストレージ容量を持つポインターまたは作成されるオブジェクトに対して適切にアラインされていないポインターを配置 new に渡さない |
CERT_CPP-MEM54-b | 配置 new アロケーション関数にオブジェクトの配列を渡す場合、オーバーヘッドを使用するべきである |
CERT_CPP-MEM57-a | オーバーアラインされた型ではデフォルトの new 演算子の使用を避ける |
CERT_CPP-STR50-b | ゼロで終わっていない文字列の読み込みによるオーバーフローを避ける |
CERT_CPP-STR50-c | バッファー書き込み時のオーバーフローを避ける |
CERT_CPP-STR50-d | 配列の境界を超えてアクセスしてはならない |
CERT_CPP-STR50-e | 汚染されたデータによるバッファー オーバーフローを避ける |
CERT_CPP-STR50-f | 汚染されたデータによるバッファー書き込み時のオーバーフローを避ける |
CERT_CPP-STR50-g | バッファ オーバーフローの原因になる可能性があるため、安全ではない文字列関数を使用しないようにする |
CODSTA-CPP-100 | パディング ビットを含む可能性があるクラスのオブジェクトを C の標準ライブラリ関数で比較してはならない |
CODSTA-CPP-101 | 関係演算子はブール値を返す必要がある |
CODSTA-CPP-102 | 2 項算術演算子およびビット演算子は 'prvalue' を返す必要がある |
CODSTA-CPP-99 | offsetof() は有効な型およびメンバーに対して使用する |
CODSTA-MCPP-16_e | 'std::unique_ptr' によって所有されるオブジェクトの構築には 'std::make_unique' を使用する |
CODSTA-MCPP-23 | クラスの public なデストラクターが非 virtual である場合、クラスを final 宣言するべきである |
CODSTA-MCPP-24 | メンバー関数の宣言では virtual、override、final のいずれか 1 つだけを指定するべきである |
CODSTA-MCPP-25 | 桁区切り ' は一貫性をもって使用する |
CODSTA-MCPP-26 | メンバー仮想関数を指すポインターは、null ポインター定数と等価かどうかだけをテストするべきである |
CODSTA-MCPP-27 | ユーザー定義型のすべての std::hash 特殊化は、noexcept 関数呼び出し演算子を持つ必要がある |
CODSTA-MCPP-28 | ラムダを typeid のオペランドにしてはならない |
CODSTA-MCPP-29 | スレッドにオブジェクトへのポインターを渡す場合はスマート ポインターを使用する |
CODSTA-MCPP-30 | ローカル オブジェクトに対して 'std::shared_ptr' ではなく 'std::unique_ptr' を使用することを検討する |
CODSTA-MCPP-31 | サイズ指定付きとサイズ指定なしの両方のバージョンの delete 演算子を定義する |
CODSTA-MCPP-33 | ユーザー定義のリテラル演算子は、渡されたパラメーターの変換だけを行う必要がある |
CODSTA-MCPP-34 | 生存期間を表現する場合にだけパラメーター型としてスマートポインターを使用する |
CODSTA-MCPP-35 | パラメーターは、管理対象オブジェクトを関数が置き換える場合にだけ 'std::shared_ptr' または 'std::unique_ptr' への非 const lvalue 参照として宣言するべきである |
CODSTA-MCPP-36 | パラメーターの型を 'std::shared_ptr' または 'std::unique_ptr' への rvalue 参照として宣言しない |
EXCEPT-21 | すべてのユーザー定義のムーブ コンストラクターおよびムーブ代入演算子は、例外で終了してはならない |
HICPP-13_2_2-b | 2 項算術演算子およびビット演算子は 'prvalue' を返す必要がある |
HICPP-15_3_2-c | 例外をスローしないよう宣言された関数から例外をスローしてはならない |
HICPP-5_3_3-c | Properly deallocate dynamically allocated resources |
MISRA2008-15_5_2_b | 例外をスローしないよう宣言された関数から例外をスローしてはならない |
MISRA2008-15_5_3_l | 例外をスローしないよう宣言された関数から例外をスローしてはならない |
MISRA2012-DIR_4_14_l | フォーマット文字列からサニタイズされていないユーザー入力を除外する |
MISRA2012-RULE_19_1_c | オーバーラップするオブジェクトにオブジェクトを代入またはコピーしてはならない |
MISRAC2012-DIR_4_14-l | フォーマット文字列からサニタイズされていないユーザー入力を除外する |
MISRAC2012-RULE_19_1-c | オーバーラップするオブジェクトにオブジェクトを代入またはコピーしてはならない |
MRM-54 | オーバーアラインされた型ではデフォルトの new 演算子の使用を避ける |
MRM-55 | 不適切なストレージ容量を持つポインターまたは作成されるオブジェクトに対して適切にアラインされていないポインターを配置 new に渡さない |
MRM-55_b | 配置 new アロケーション関数にオブジェクトの配列を渡す場合、オーバーヘッドを使用するべきである |
NAMING-51 | ユーザー定義リテラル演算子のユーザー定義の接尾辞は、アンダースコアで始まり 1 文字以上の文字が続く必要がある |
NAMING-52 | ユニバーサル文字名は、文字または文字列リテラルの内部でだけ使用する |
NAMING-53 | ヘッダー ファイルにはファイル拡張子 \".h\"、\".hpp\" または \".hxx\" を付けるべきである |
OOP-55 | 非 POD 型はクラスとして定義するべきである |
OOP-56 | ユーザー定義の代入演算子は virtual であってはならない |
OOP-57 | 構造体には、public データ メンバーだけを含めるべきであり、基底であったり継承を行ったりするべきではない |
PB-38_b | エンコーディング接頭辞が異なる文字列リテラルを結合してはならない |
PB-39_b | 関数は const 参照によって渡されたパラメータへの参照またはポインタを返してはならない |
PORT-32 | long double 型を使用してはならない |
PORT-33 | wchar_t 型を使用してはならない |
PREPROC-22 | #error ディレクティブを使用してはならない |
PREPROC-23 | #pragma ディレクティブを使用してはならない |
PREPROC-24 | 前処理指令のすべてのマクロ識別子は、用いる前に定義しなければならない。ただし、#ifdef および #ifndef 前処理指令や defined() 演算子の場合は、その限りでない |
TEMPL-16 | テンプレートの特殊化は、一次テンプレートまたは特殊化が宣言されたユーザー定義型と同じファイルに宣言する |
更新されたルール
解析結果の向上のため、以下の静的解析ルールが更新されました。
ルール カテゴリ | ルール ID |
---|---|
AUTOSAR C++14 Coding Guidelines | AUTOSAR-A0_1_4-a,AUTOSAR-A12_4_1-a, AUTOSAR-A27_0_1-b, AUTOSAR-A27_0_2-a, AUTOSAR-A2_11_1-a, AUTOSAR-A2_8_1-a, AUTOSAR-A5_0_1-b, AUTOSAR-A5_0_1-f, AUTOSAR-A5_5_1-a, AUTOSAR-A8_5_1-a, AUTOSAR-A9_6_1-a, AUTOSAR-M0_1_1-b, AUTOSAR-M0_1_3-a, AUTOSAR-M0_1_3-b, AUTOSAR-M0_3_1-g. AUTOSAR-M11_0_1-a, AUTOSAR-M5_8_1-a |
Flow Analysis | BD-CO-ITMOD, BD-PB-ERRNO, BD-PB-OVERFNZT, BD-PB-OVERFNZT, BD-SECURITY-RAND |
SEI CERT C | CERT_C-ARR38-d, CERT_C-DCL01-b, CERT_C-DCL10-a, CERT_C-DCL11-a, CERT_C-DCL11-b, CERT_C-DCL11-c, CERT_C-DCL11-d, CERT_C-DCL11-e, CERT_C-DCL11-f, CERT_C-ERR30-a, CERT_C-ERR32-a, CERT_C-EXP10-b, CERT_C-EXP30-b, CERT_C-EXP37-d, CERT_C-FIO41-b, CERT_C-FIO47-a, CERT_C-FIO47-b, CERT_C-FIO47-c, CERT_C-FIO47-d, CERT_C-FIO47-e, CERT_C-FIO47-f, CERT_C-INT31-f, CERT_C-INT34-a, CERT_C-MSC07-b, CERT_C-MSC09-a, CERT_C-MSC12-b, CERT_C-MSC13-a, CERT_C-MSC32-d, CERT_C-POS30-a, CERT_C-STR03-a, CERT_C-STR32-a |
SEI CERT C++ | CERT_CPP-CTR51-a, CERT_CPP-EXP50-b, CERT_CPP-MSC51-a, CERT_CPP-OOP53-a |
Coding Conventions | CODSTA-124_a, CODSTA-124_b, CODSTA-161_f, CODSTA-52, CODSTA-56 |
Coding Conventions for C++ | CODSTA-CPP-87_c |
High Integrity C++ | HICPP-12_4_4-a, HICPP-14_2_1-a, HICPP-1_2_1-b, HICPP-3_1_1-b, HICPP-4_2_2-a, HICPP-5_1_2-b, HICPP-5_1_2-f, HICPP-5_7_2-a |
Initialization | INIT-10 |
Joint Strike Fighter | JSF-009, JSF-075, JSF-104, JSF-117, JSF-125_a, JSF-135_b, JSF-143_a, JSF-164, JSF-186_b, JSF-198, JSF-204.1_b, JSF-204.1_f |
Metrics | METRICS-19, METRICS-29, METRICS-33 |
MISRA C 1998 | MISRA-005, MISRA-038, MISRA-071_b |
MISRA C 2004 | MISRA2004-12_2_b, MISRA2004-12_2_f, MISRA2004-12_8, MISRA2004-14_1_b, MISRA2004-5_2_b, MISRA2004-8_1_b |
MISRA C++ 2008 | MISRA2008-0_1_11, MISRA2008-0_1_1_b, MISRA2008-0_1_3_a, MISRA2008-0_1_3_b, MISRA2008-0_3_1_e, MISRA2008-11_0_1, MISRA2008-14_7_3, MISRA2008-2_10_2_b, MISRA2008-2_10_6_c, MISRA2008-5_0_1_b, MISRA2008-5_0_1_f, MISRA2008-5_8_1 |
MISRA C 2012 (Legacy) | MISRA2012-DIR-4_1_e, MISRA2012-RULE-10_1_f, MISRA2012-RULE-11_1_a, MISRA2012-RULE-11_1_b, MISRA2012-RULE-12_2, MISRA2012-RULE-13_2_b, MISRA2012-RULE-13_2_f, MISRA2012-RULE-17_3, MISRA2012-RULE-1_3_g, MISRA2012-RULE-1_3_k, MISRA2012-RULE-21_17_a, MISRA2012-RULE-22_10, MISRA2012-RULE-22_8, MISRA2012-RULE-22_9, MISRA2012-RULE-2_1_b, MISRA2012-RULE-5_3_b |
MISRA C 2012 | MISRAC2012-DIR_4_1-e, MISRAC2012-RULE_10_1-f, MISRAC2012-RULE_11_1-a, MISRAC2012-RULE_11_1-b, MISRAC2012-RULE_12_2-a, MISRAC2012-RULE_13_2-b, MISRAC2012-RULE_13_2-f, MISRAC2012-RULE_17_3-a, MISRAC2012-RULE_1_3-g, MISRAC2012-RULE_1_3-k, MISRAC2012-RULE_21_17-a, MISRAC2012-RULE_22_10-a, MISRAC2012-RULE_22_8-a, MISRAC2012-RULE_22_9-a, MISRAC2012-RULE_2_1-b, MISRAC2012-RULE_5_3-b |
Object Oriented | OOP-48 |
Optimization | OPT-02, OPT-03, OPT-05, OPT-06, OPT-14, OPT-31 |
Possible Bugs | PB-33_b, PB-45, PB-46, PB-47, PB-48, PB-49, PB-50 |
Template | TEMPL-10 |
削除されたルール
次のルールは削除され、新しい AUTOSAR 18.10 標準への準拠を保証するために新しいルールに置き換えられました。
AUTOSAR-A14_8_1-a
AUTOSAR-A18_1_5-a
AUTOSAR-A2_11_1-b
AUTOSAR-A2_11_1-c
AUTOSAR-A2_11_1-d
AUTOSAR-A2_11_1-e
AUTOSAR-A2_11_2-a
AUTOSAR-A2_11_3-a
AUTOSAR-A2_11_3-b
AUTOSAR-A2_11_5-a
AUTOSAR-A2_11_5-b
AUTOSAR-A2_14_1-a
AUTOSAR-A2_14_2-a
AUTOSAR-A2_2_1-a
AUTOSAR-A2_6_1-a
AUTOSAR-A2_8_2-a
AUTOSAR-A2_8_4-a
AUTOSAR-A2_9_1-a
AUTOSAR-A7_1_1-b
AUTOSAR-M0_1_5-a
AUTOSAR-M14_5_2-a
AUTOSAR-M14_7_3-a
AUTOSAR-M14_8_1-a
AUTOSAR-M2_10_3-a
AUTOSAR-M2_10_6-a
AUTOSAR-M2_10_6-b
AUTOSAR-M2_10_6-c
AUTOSAR-M2_10_6-d
AUTOSAR-M5_2_1-a
AUTOSAR-M7_3_5-a
AUTOSAR-M8_5_1-a
PREPROC-24 ルールにマップされていた次のルールは、業界標準に準拠するために削除されました。
- AUTOSAR-M16_0_7-b
- MISRA2004-19_11
- MISRA2008-16_0_7
- MISRA2012-RULE-20_9_a
- MISRAC2012-RULE_20_9-a
テスト コンフィギュレーションで PREPROC-24 ルールを手動で有効にして、同じ違反をレポートできます。