このリリースでは、機能安全およびセキュリティ コンプライアンス ソリューションの強化に重点が置かれました。AUTOSAR C++ 14 規格の適用範囲を拡張し、AUTOSARの "必須" および "自動化" ルールへの完全な準拠を実現し、CWE ガイドラインの最新リリースのサポートを追加しました。
環境のサポート
新規 IDE
以下のサポートが追加されました。
- QNX Software Development Platform 7.0
新しいコンパイラのサポート
コンパイラ名 | コンパイラ略称 |
---|---|
GNU GCC 9.x | gcc_9 |
GNU GCC 9.x (x86_64) | gcc_9-64 |
IAR Compiler for ARM v. 8.22x | iccarm_8_22 |
IAR Compiler for ARM v. 8.40x | iccarm_8_40 |
Microsoft Visual C++ 14.2 | vc_14_2 |
Microsoft Visual C++ 14.2 (x86_64) | vc_14_2-64 |
Clang C/C++ Compiler v 8.0 (x86_64) | clang_8_0 |
QNX GCC 5.x (ARM) のサポートが拡張され、セーフティ クリティカルなソフトウェア開発での使用が承認されました。
ARM NEON 拡張が GCC および ARM ベースのコンパイラでサポートされるようになりました。
非推奨のコンパイラ
次のコンパイラのサポートは非推奨であり、将来のリリースで削除される予定です。
ARM RealView 4.1
ARM RealView 4.1 for uVision
CodeSourcery Sourcery G++ Lite 2009q1-203
GNU GCC 4.0.x
GNU GCC 4.0.x (x86_64)
GNU GCC 4.1.x
GNU GCC 4.1.x (x86_64)
GNU GCC 4.2.x
GNU GCC 4.2.x (x86_64)
GNU GCC 4.3.x
GNU GCC 4.3.x (x86_64)
GNU GCC 4.4.x
GNU GCC 4.4.x (x86_64)
IAR Compiler for ARM v. 6.1x
IAR Compiler for ARM v. 6.3x
IAR Compiler for MSP430 v. 5.4x
- Microsoft Visual C++ 9.0
- Microsoft Visual C++ 10.0
TI TMS320C2000 C/C++ Compiler v6.2
TI TMS320C6x C/C++ Compiler v7.3
TI MSP430 C/C++ Compiler v4.0
Vx-toolset for TriCore C/C++ Compiler 4.0
Wind River GCC 3.4.x
Intel C++ Compiler v 18.0 が Windows でサポートされなくなりました。
自動車コンプライアンス パックの拡張
AUTOSAR C++ 14 規格の準拠を支援するために、AUTOSAR C++ 14 のサポートを拡張しました。"必須" および "自動化" カテゴリのすべての AUTOSAR ルールが完全にカバーされ、自動車システム アーキテクチャの開発におけるテスト作業をサポートします。
セキュリティ コンプライアンス パックの拡張
新たに更新された 2019 Common Weakness Enumeration (CWE) のサポートが追加されました。C/C++test に新しいテスト コンフィギュレーションが同梱され、CWE Top 25 2019 and CWE Weaknesses on the Cusp ガイドラインへの準拠を強化できます。以下の「追加または更新されたテスト コンフィギュレーション」セクションを参照してください。
追加または更新された解析ルール
このリリースでは、特に AUTOSAR C++14 規格にフォーカスし、新しい静的解析ルールが追加され、コンプライアンス標準のカバー範囲が広がりました。追加または更新されたルールの一覧については「新規ルール 」および「更新されたルール」を参照してください。
さらに、関数内の関数呼び出しの数を計測するために NOMCIM メトリクスが追加されました。
追加または更新されたテスト コンフィギュレーション
以下のテスト コンフィギュレーションが追加されました。
- CWE Top 25 2019
- CWE Top 25 + On the Cusp 2019
- OWASP Top 10 2017
- UL 2900
非推奨のテスト コンフィギュレーション
- CWE-SANS Top 25 Most Dangerous Programming Errors – 非推奨になり、 CWE Top 25 2019 テスト コンフィギュレーションに置き換えられました。
- OWASP Top 10 2017 – 非推奨になり、 OWASP Top 10 2017 テスト コンフィギュレーションに置き換えられました。
- UL 2900 - 非推奨となり、新しい UL 2900 テスト コンフィギュレーションに置き換えられました。このコンフィギュレーションには、CWE SANS Top 25 + On the Cusp 2019 および OWASP Top 10 2017 ルールが含まれます。
非推奨のテスト コンフィギュレーションは、デフォルトでは利用できません。ユーザー定義コンフィギュレーションとして適用することはできます。これらのテスト コンフィギュレーションは、次の場所にあります: [INSTALL_DIR]\configs\Deprecated
オリジナルの関数を呼び出すスタブの作成
スタブ コールバック メカニズムが拡張され、テスト ケース固有のスタブ コールバック 関数がテスト ケースに登録されていない場合、元の関数を呼び出すことができるようになりました。詳細については「オリジナルの関数を呼び出すスタブの作成」を参照してください。
スタンドアロンの License Server
別の DTP インスタンスまたはスタンド アロンの License Server から Parasoft ライセンスを取得できます。「ライセンス」を参照してください。
OpenID Connect のサポート
OpenID Connect を介して DTP で認証を行い、DTP サーバーとの通信にセキュリティ レイヤーを追加できるようになりました。詳細については、「GUI での OpenID Connect の設定」および「Configuring OpenID Connect the .properties File」を参照してください。
その他の変更
@test
課題トラッキング タグがデフォルトでサポートされ、テストと開発成果物の関連付けに使用できるようになりました「コードとテストの関連付け」を参照してください。- インクリメンタル解析モードでのフロー解析のパフォーマンスが向上しました。後続の実行での解析時間を短縮しました。
- Project Center への接続はサポートされなくなりました。DTP/Concerto に付属の Project Center モジュールは end-of-life (EOL) フェーズに入り、DTP 5.4.2 で削除されました。
- バージョン 7 より前の QNX Momentics IDE はサポートされなくなりました。
解決済みのバグおよび FR
バグ/FR ID | 説明 |
---|---|
CPP-39554 | MISRA2004-17_3 に従うようにルール CODSTA-13 を更新する必要がある |
CPP-39913 | VS Visual Studio でフィルターされたルールを有効化できない |
CPP-42073 | ARM NEON 拡張機能のサポートを追加 |
CPP-42495 | ルール COMMENT-04 は、関数定義が使用可能でない (可視でない) 場合、関数宣言に対して指摘事項をレポートするべきではない |
CPP-42527 | AUTOSAR-M2_13_2-a (C++14 セマンティクス) のマッピングを改善する |
CPP-42858 | CERT-INT31 のマッピングを改善する |
CPP-43140 | MISRA2012-RULE-2_2 のマッピングを改善する |
CPP-43141 | ルール CODSTA-163_b(MISRAC2012-RULE_10_3-b) が三項演算子で誤検出をレポートする |
CPP-43142 | ルール CODSTA-CPP-59 が __cplusplus マクロによって除外された #include ディレクティブで誤検出をレポートする |
CPP-43143 | ルール MISRA2004-9_2_c (AUTOSAR-M8_5_2-c) がreports incorrectly on std::array および constexpr について誤ってレポートする |
CPP-43150 | 静的な const 変数がテンプレート引数として使用される場合、ルール GLOBAL-ONEUSEVAR (MISRA2008-0_1_4) が誤検出をレポートする |
CPP-43413 | ルール OPT-02(OPT-03、OPT-31) が、ラムダによってキャプチャされたパラメーター/変数の誤検出をレポートする |
CPP-43414 | テンプレートのユーザー定義の接尾辞についてパース エラーがレポートされる (C++14) |
CPP-43465 | LSI ARM OE ツールチェインのオブジェクト/ライブラリを読み取りできない |
CPP-43479 | コードのインストゥルメント時にエラーがレポートされる (次のコードでプロセスが終了:137) |
CPP-43523 | 単体テスト実行時にエラーがレポートされる:無効なファイル フォーマット: Unable to read exports |
CPP-43549 | カスタム ソース/ヘッダー ファイル拡張子が IDE から静的解析エンジンに伝播されない |
CPP-43558 | テスト ケースをデバッグするときタイムアウトがデアクティベートされない |
CPP-43567 | Libstdc++ のシンボル __once_call および __once_callable が LSI に見つからないとレポートされる |
CPP-43568 | 1 台のマシンに VS2017 と 2019 の両方がインストールされている場合、C/C++test をインストールできない |
CPP-43602 | GHS/ARM コンパイラの gnu99 オプションを構成する |
CPP-43603 | ルール FORMAT-43 が、対になっていない括弧が #ifdef/#ifndef の場合に誤検出をレポートする |
CPP-43643 | IAR-RL78 コンパイラ構成の --core オプションのサポートが欠落している |
CPP-43667 | 静的な const 変数がテンプレート引数として使用される場合、ルール OPT-05 が誤検出をレポートする |
CPP-43675 | printf/scanf 関数呼び出しで %c 指定子としてプレーン文字が渡されると、ルール PB-45 が誤検出をレポートする |
CPP-43688 | ルール PB-45、PB-46、PB-47、PB-48、PB-49 が、scanf 関数の引数に対して正しく動作しない |
CPP-43689 | scanf 関数で文字指定子が使用されていると、ルール PB-50 が誤検出をレポートする |
CPP-43706 | ルール MISRA2004-20_5(JSF-017) の改善: 違反メッセージの行番号を出力しない |
CPP-43744 | 重複した違反をフィルタリングするアルゴリズムを改善 |
CPP-43748 | 間接参照イテレーターのアドレスが関数から返されると、ルール MISRA2004-17_6_a が誤検出をレポートする |
CPP-43831 | Microsoft Windows Kit SDK 10.0.18362.0 でセーフ スタブに対しコンパイル エラーがレポートされる |
CPP-43837 | Renesas RX C++ 2.5.X コンパイラで -endian=big を使用すると、パース エラーがレポートされる |
CPP-43869 | ルール INIT-05 が右辺値参照で誤検出をレポートする |
CPP-43889 | パース エラーがレポートされる: 非 const への参照の初期値は左辺値でなければならない |
CPP-43892 | パース エラーがレポートされる:パラメーター パック Indexes が参照されたが展開されていない |
CPP-43893 | CERT EXP45-C のマッピングを改善 (CERT_C-EXP45-a および CERT_C-EXP45-c を削除) |
CPP-43896 | Renesas Rx の単体テスト実行の改善 |
CPP-43971 | GCC および Clang コンパイラの edg.implicit_noexcept_enabled 構成オプションを有効にする |
CPP-43972 | C/C++test がデータ ソースから "$NULL" 値を読み取れない |
CPP-43975 | フォールスルー コメントの前にプリプロセッサ ディレクティブがある場合、ルール CODSTA-149(CERT_C-MSC17-a) が誤検出をレポートする |
CPP-43992 | tenp フォルダーに TempLic*txt ファイルが作成され、クリーンアップされない |
CPP-44001 | CMFCSampleDlg::OnPaint() のテスト ケースを作成すると VS IDE が反応しない |
CPP-44025 | 0 が void* 型にキャストされている場合、ルール CERT_C-INT36-a が誤検出をレポートする |
CPP-44045 | ルール OPT-06 が、ラムダでキャプチャされたローカル変数の誤検出をレポートする |
CPP-44046 | STATUS_ACCESS_VIOLATION: スレッドが、アクセスできない仮想アドレスから読み取り/書き込みを試みる |
CPP-44055 | VS 最初の -localsettings パラメーターだけが C/C++test によって処理される (他は無視される) |
CPP-44059 | テスト ケースの Report HTML - Tested 機能に空のフィールドがある |
CPP-44088 | 静的解析 (cwc) がリテラル可変長テンプレートでコード 3 で終了する |
CPP-44225 | オペランドの二重キャストがシフト式で使用されている場合、ルール MISRA2004-12_8(MISRAC2012-RULE_12_2-a) が誤検出をレポートする |
CPP-44271 | パース エラーがレポートされる: 式に定数値が必要 static constexpr bool value = has_named_enum_tag<T>(0); |
CPP-44273 | テスト ケースの名前を変更すると、実際にはテストのクラス名が変更される |
CPP-44274 | ルール HICPP-17_2_1-a (AUTOSAR-A17_1_1-b) が #include <string> で誤検出をレポートする |
CPP-44538 | 欠落している IAR アトミック ビルトインのサポートを追加 |
CPP-44576 | C++test 10.4.3 BETA - コマンド ライン解析がライセンスされていない |
FA-4617 | null に対して配列変数をチェックする際の BD-PB-DEREF からの誤検出 |
FA-4651 | BD-RES-FREE が、別のタイプのリソース (pthread mutex など) として既に解放されたメモリを解放する際の誤検出 |
FA-4998 | クローズされたファイル記述子で実行される算術演算に関する BD-RES-FREE のご検出 |
FA-7097 | BD-PB-PTRARR の型の不一致に対する違反誤検出 |
FA-7105 | BD-PB-OVERFWR の誤検出 |
FA-7191 | const 式を使用する場合の BD-RES-INVFREE の誤検出 |
FA-7195 | BD-CO-ITOUT - コンテナー cend() メソッドの誤検出 |
FA-7266 | 誤ったフロー解析の結果: FA が const のグローバル配列の要素の値を考慮しない |
FA-7291 | 配列の要素によって参照されるリソースをクローズするときの BD-RES-INVFREE からの誤検出 |
FA-7398 | Flow Analysis Aggressive が C ++ test 10.4.2 の静的解析の問題をレポートする |
FA-7410 | typedef が使用されている場合の BD-SECURITY-OVERFFMT の誤検出 |
FA-7413 | MISRA2012-RULE-19-1_c (BD-PB-OVERLAP) の誤検出 |
FA-7441 | 文字列形式内で %*s を指定している場合に、CERT_C-ARR38-c(BD-PB-OVERFFMT) がFP 違反をレポートする |
XT-36609 | パスワードに £ 文字があると、Parasoft ツールが DTP に接続できなくなる |
XT-36611 | min オプションを使用した sim-link ソース コードの公開に失敗 |
XT-36843 | cpptestcli を使用する同時ビルドが、ライセンスをプルしようとしたときにタイムアウトを待たない |
XT-36950 | XML Graphics Project の脆弱なライブラリを更新 |
XT-37358 | テストが 100% 成功した場合にレポートに 100% が表示されない |
新規ルール
ルール ID | ヘッダー |
---|---|
AUTOSAR-A0_1_5-a | 仮想関数に未使用の名前付きパラメーターがあってはならない |
AUTOSAR-A12_1_3-a | すべてのユーザー定義のコンストラクターがデータ メンバーを同じ定数値で初期化している場合、NSDMI を使用して初期化すべきである |
AUTOSAR-A12_1_6-a | 追加の明示的な初期化を必要とせず、基底クラスのすべてのコンストラクターを必要とする派生クラスは、継承コンストラクターを使用する必要がある |
AUTOSAR-A15_3_4-a | catch-all 例外ハンドラーを使用しない |
AUTOSAR-A15_4_5-a | 関数からスローされる可能性があるチェック例外は、関数宣言の直前のコメントで指定する必要がある |
AUTOSAR-A15_5_2-c | stdlib.h または cstdlib ライブラリの関数 quick_exit() および _Exit() は使用してはならない |
AUTOSAR-A1_1_1-a | register 記憶域クラス指定子を使用してはならない |
AUTOSAR-A1_1_1-b | コピー コンストラクターを宣言する場合は、コピー代入演算子を宣言するべきである (逆の場合も同様に) |
AUTOSAR-A1_1_1-c | 非自明なデストラクターがあるクラスには、コピー コンストラクターおよびコピー代入演算子も宣言するべきである |
AUTOSAR-A1_1_1-d | C ライブラリを使用してはならない |
AUTOSAR-A1_1_1-e | std::bind、std::bind1st および std::bind2nd ではなくラムダを使用する |
AUTOSAR-A1_1_1-f | 'binder1st' および 'binder2nd' 識別子を使用するべきではない |
AUTOSAR-A1_1_1-g | std::auto_ptr ではなく、できるだけ std::unique_ptr を使用する |
AUTOSAR-A1_1_1-h | 'random_shuffle' 識別子を使用するべきではない |
AUTOSAR-A1_1_1-i | ブール型の変数に対してインクリメント演算子 (++) を使用しない |
AUTOSAR-A1_1_1-j | 'set_unexpected' 識別子を使用するべきではない |
AUTOSAR-A1_1_1-k | throw 例外仕様を使用しない |
AUTOSAR-A27_0_4-a | 範囲チェックされていないバッファに書き込む安全でない C 関数を使用しない |
AUTOSAR-A27_0_4-b | 範囲をチェックしないため安全ではない文字列関数を使用しないようにする |
AUTOSAR-A27_0_4-c | char バッファーを使用して std::cin の入力を格納しない |
AUTOSAR-A27_0_4-d | C 形式の配列を使用するべきではない |
AUTOSAR-A2_10_4-a | AUTOSAR A2-10-4 静的記憶域期間を持つ非メンバー オブジェクトの識別子名は、名前空間内で再利用してはならない |
AUTOSAR-A2_10_4-b | AUTOSAR A2-10-4 非メンバー静的関数の識別子名は、名前空間内で再利用してはならない |
AUTOSAR-A2_7_3-a | すべての型、データ メンバー、関数の宣言の前に '@brief' タグでアノテートされたコメントを付けるべきである |
AUTOSAR-A2_7_3-b | 関数宣言の前のコメントで関数のパラメーターおよび戻り値の型を文書化するべきである |
AUTOSAR-A3_3_2-a | 静的およびスレッドローカルなオブジェクトは定数初期化される必要がある |
AUTOSAR-A5_1_6-a | void 型以外のラムダ式の戻り値型は明示的に指定するべきである |
AUTOSAR-A5_1_8-a | ラムダ式の中に別のラムダ式を定義するべきではない |
AUTOSAR-A5_3_1-a | typeid 演算子のオペランドに副作用を持つ式が含まれていてはならない |
AUTOSAR-A5_3_1-b | typeid 演算子のオペランドに副作用を発生させる関数の呼び出しが含まれていてはならない |
AUTOSAR-A6_2_1-a | コピー代入演算子は、オブジェクトのコピーに影響を与える可能性がある副作用を持つべきではない |
AUTOSAR-A6_2_1-b | ムーブ代入演算子は、オブジェクトのムーブに影響を与える可能性がある副作用を持つべきではない |
AUTOSAR-A6_2_2-a | 式文は、一時オブジェクトのコンストラクターの明示的な呼び出しだけを含むべきではない |
AUTOSAR-A7_1_5-a | 'auto' 指定子を過度に使用しない |
AUTOSAR-A8_2_1-a | typename キーワードが戻り値型の前にある場合、後置戻り値型構文を使用する |
AUTOSAR-A8_4_8-a | 出力パラメーターを使用してはならない |
AUTOSAR-A8_5_2-a | 変数の初期化には、等号なしの {} 括弧による初期化を使用する必要がある |
AUTOSAR-A8_5_3-a | auto 型の変数は、 {} または ={} を使用した括弧による初期化で初期化してはならない |
AUTOSAR-M15_3_7-a | 1 つの try-catch 文または function-try-block に複数のハンドラーがある場合、省略記法 (catch-all) ハンドラーは最後に置く |
AUTOSAR-M18_0_3-b | stdlib.h または cstdlib ライブラリの exit() 関数を使用しない |
AUTOSAR-M18_0_3-c | stdlib.h または cstdlib ライブラリの system() 関数を使用しない |
AUTOSAR-M18_0_3-d | stdlib.h または cstdlib ライブラリの 'getenv() 関数を使用しない |
BD-RES-INSUFMEM | 指定された型のオブジェクトを格納するのに十分なメモリを割り当てる |
BD-SECURITY-XXEXRC | libxerces-c で XML 外部エンティティの解決 (XXE) を無効化する |
CERT_C-ERR04-b | stdlib.h または cstdlib ライブラリの exit() 関数を使用しない |
CERT_C-ERR04-c | stdlib.h または cstdlib ライブラリの関数 quick_exit() および _Exit() は使用してはならない |
CERT_C-ERR05-b | stdlib.h または cstdlib ライブラリの exit() 関数を使用しない |
CERT_C-ERR05-c | stdlib.h または cstdlib ライブラリの関数 quick_exit() および _Exit() は使用してはならない |
CERT_C-INT31-o | 整数のオーバーフローを避ける |
CERT_CPP-ERR50-n | stdlib.h または cstdlib ライブラリの関数 quick_exit() および _Exit() は使用してはならない |
CERT_CPP-EXP52-d | typeid 演算子のオペランドに副作用を持つ式が含まれていてはならない |
CERT_CPP-EXP52-e | typeid 演算子のオペランドに副作用を発生させる関数の呼び出しが含まれていてはならない |
CODSTA-204 | 'noreturn' として宣言された関数の戻り値の型は 'void' でなければならない |
CODSTA-CPP-103 | 出力パラメーターを使用してはならない |
CODSTA-CPP-104_b | typeid 演算子のオペランドに副作用を発生させる関数の呼び出しが含まれていてはならない |
CODSTA-CPP-104 | typeid 演算子のオペランドに副作用を持つ式が含まれていてはならない |
CODSTA-MCPP-07_b | binder1st および binder2nd 識別子を使用するべきではない |
CODSTA-MCPP-13_b | ユニバーサル参照を転送する場合、std::forward 関数を使用する |
CODSTA-MCPP-32 | 静的およびスレッドローカルなオブジェクトは定数初期化される必要がある |
CODSTA-MCPP-37 | 追加の明示的な初期化を必要とせず、基底クラスのすべてのコンストラクターを必要とする派生クラスは、継承コンストラクターを使用する必要がある |
CODSTA-MCPP-38 | 変数の初期化には、等号なしの {} 括弧による初期化を使用する必要がある |
CODSTA-MCPP-39 | auto 型の変数は、 {} または ={} を使用した括弧による初期化で初期化してはならない |
CODSTA-MCPP-40 | 'auto' 指定子を過度に使用しない |
CODSTA-MCPP-41 | 'random_shuffle' 識別子を使用するべきではない |
CODSTA-MCPP-42 | ブール型の変数に対してインクリメント演算子 (++) を使用しない |
CODSTA-MCPP-43 | 'set_unexpected' 識別子を使用するべきではない |
CODSTA-MCPP-44 | ラムダ式の中に別のラムダ式を定義するべきではない |
CODSTA-MCPP-45 | void 型以外のラムダ式の戻り値型は明示的に指定するべきである |
CODSTA-MCPP-46 | すべてのラムダ式にパラメーター リストを含める |
COMMENT-04_b | 関数宣言の前のコメントで関数を文書化する |
COMMENT-14_b | 関数宣言の前のコメントで関数のパラメーターおよび戻り値の型を文書化するべきである |
COMMENT-14 | すべての型、データ メンバー、関数の宣言の前に '@brief' タグでアノテートされたコメントを付けるべきである |
CWE-119-a | 配列の境界を超えてアクセスしてはならない |
CWE-119-b | 範囲外の配列およびポインターへのアクセスを避ける |
CWE-119-c | 不正な書式指定子によるバッファー オーバーフローを避ける |
CWE-119-d | バッファーからの読み取り時のオーバーフローを避ける |
CWE-119-e | バッファー書き込み時のオーバーフローを避ける |
CWE-119-f | 汚染されたデータを配列添え字として使用しない |
CWE-119-g | 汚染されたデータによるバッファー オーバーフローを避ける |
CWE-119-h | 汚染されたデータによるバッファー読み込み時のオーバーフローを避ける |
CWE-119-i | 汚染されたデータによるバッファー書き込み時のオーバーフローを避ける |
CWE-119-j | コピー元バッファーのサイズをチェックしていない、疑わしい strcpy の使用 |
CWE-125-a | 配列の境界を超えてアクセスしてはならない |
CWE-125-b | 範囲外の配列およびポインターへのアクセスを避ける |
CWE-125-c | バッファーからの読み取り時のオーバーフローを避ける |
CWE-125-d | 汚染されたデータによるバッファー読み込み時のオーバーフローを避ける |
CWE-190-a | 整数のオーバーフローを避ける |
CWE-190-b | 結果をより広い整数型にキャストしている式での整数オーバーフローの可能性を避ける |
CWE-190-c | 結果がより広い整数型に代入されている式での整数オーバーフローの可能性を避ける |
CWE-190-d | 結果がより広い整数型の式と比較されている式での整数オーバーフローの可能性を避ける |
CWE-190-e | '+', '-', '*' 演算子の定数式における整数オーバーフローまたはアンダーフロー |
CWE-190-f | '<<' 演算子の定数式における整数オーバーフローまたはアンダーフロー |
CWE-190-g | 符号なし整数定数式の評価によってラップアラウンドが起こってはならない |
CWE-20-a | 汚染されたデータを配列添え字として使用しない |
CWE-20-b | 汚染されたデータによる整数オーバーフロー/アンダーフローを防ぐ |
CWE-20-c | 未検証のバイナリ データをログ記録メソッドに渡さない |
CWE-20-d | コマンド インジェクションから防御する |
CWE-20-e | 汚染されたデータを出力コンソールに出力してはならない |
CWE-20-f | 環境変数インジェクションから防御する |
CWE-20-g | フォーマット文字列からサニタイズされていないユーザー入力を除外する |
CWE-20-h | SQL インジェクションから防御する |
CWE-20-i | ファイル名インジェクションから防御する |
CWE-20-j | 信頼性のないデータをループの境界として使用してはならない |
CWE-200-a | アプリケーション エラーを例外メッセージに含めることによって、機密の可能性がある情報を出力してはならない |
CWE-22-a | ファイル名インジェクションから防御する |
CWE-269-a | 権限を正しい順序で破棄する |
CWE-269-b | 権限が正常に破棄されたことを確認する |
CWE-287-a | 弱い暗号化関数を使用してはならない |
CWE-326-a | 弱い暗号化関数を使用してはならない |
CWE-362-a | 競合の原因となる関数を使用してはいけない |
CWE-362-b | ファイル アクセス時の競合状態を避ける |
CWE-362-c | ビット フィールドを変更する場合は、ロックを使用して競合状態を防ぐ |
CWE-362-d | fork およびファイル記述子を使用する際の競合状態を避ける |
CWE-362-e | 異なるロック間でグローバル変数を使用しない |
CWE-400-a | 定義された上限を超える変数をスタックに配置しない |
CWE-415-a | 解放されたリソースを使用してはならない |
CWE-416-a | 解放されたリソースを使用してはならない |
CWE-416-b | 解放済みのラップされたオブジェクトを指してはならない |
CWE-416-c | 解放されたメモリはいかなる場合でもその後にアクセスしてはならない |
CWE-426-a | LoadLibrary() が正しいライブラリをロードするよう注意する |
CWE-476-a | null ポインターの間接参照を避ける |
CWE-476-b | 間接参照の後に null チェックしない |
CWE-611-a | libxerces-c で XML 外部エンティティの解決 (XXE) を無効化する |
CWE-617-a | アサーションを使用しない |
CWE-704-a | 関数へのポインターとそれ以外の型との間で変換を行ってはならない |
CWE-704-b | 互換性のない関数型へのポインターの間で変換を行ってはならない |
CWE-704-c | 不完全型へのポインターと他の型との間で変換を行ってはならない |
CWE-704-d | オブジェクト型へのポインターと別のオブジェクト型へのポインターとの間で変換を行ってはならない |
CWE-704-e | オブジェクト型へのポインターと 'uintptr_t' または 'intptr_t' 以外の整数型の間で変換を行うべきではない |
CWE-704-f | void へのポインターをオブジェクトへのポインターに変換してはならない |
CWE-704-g | void へのポインターと数値型との間でキャストしてはならない |
CWE-704-h | void へのポインターと数値型との間で暗黙の変換を行ってはならない |
CWE-704-i | オブジェクトへのポインターと非整数数値型との間でキャストしてはならない |
CWE-704-j | 情報の損失を引き起こす可能性がある、より広い型からより狭い型への暗黙的な変換を使用してはならない |
CWE-704-k | 情報の損失を引き起こす可能性がある汎整数型から浮動小数点型への暗黙的な変換を使用してはならない |
CWE-704-l | 情報の損失を引き起こす可能性がある整数定数から浮動小数点型への暗黙的な変換を使用してはならない |
CWE-732-a | mkstemp を呼び出す前に umask を呼び出す |
CWE-732-b | open または openat システム コールを使用してファイルを作成する場合、アクセス パーミッション ビットを指定する |
CWE-770-a | リソースが解放されていることを確認する |
CWE-772-a | リソースが解放されていることを確認する |
CWE-772-b | 基底クラスとして使用される仮想関数を持つクラスに仮想デストラクタを定義する |
CWE-78-a | コマンド インジェクションから防御する |
CWE-787-a | 配列の境界を超えてアクセスしてはならない |
CWE-787-b | 範囲外の配列およびポインターへのアクセスを避ける |
CWE-787-c | 不正な書式指定子によるバッファー オーバーフローを避ける |
CWE-787-d | バッファー書き込み時のオーバーフローを避ける |
CWE-787-e | 汚染されたデータによるバッファー オーバーフローを避ける |
CWE-787-f | 汚染されたデータによるバッファー書き込み時のオーバーフローを避ける |
CWE-798-a | 文字列リテラルをハード コードしない |
CWE-835-a | 無限ループを避ける |
CWE-863-a | cuserid 関数を使用しない |
CWE-89-a | SQL インジェクションから防御する |
EXCEPT-22 | 関数からスローされる可能性があるチェック例外は、関数宣言の直前のコメントで指定する必要がある |
EXCEPT-23 | throw 例外仕様を使用しない |
EXCEPT-24 | 1 つの try-catch 文または function-try-block に複数のハンドラーがある場合、省略記法 (catch-all) ハンドラーは最後に置く |
EXCEPT-25 | catch ブロックを空のままにしない |
EXCEPT-26 | catch-all 例外ハンドラーを使用しない |
GLOBAL-REUSEDQUALGLOBVAR | AUTOSAR A2-10-4 静的記憶域期間を持つ非メンバー オブジェクトの識別子名は、名前空間内で再利用してはならない |
GLOBAL-REUSEDQUALSTATFUN | AUTOSAR A2-10-4 非メンバー静的関数の識別子名は、名前空間内で再利用してはならない |
HICPP-17_2_1-b | エラー指示子 errno は、用いてはならない |
HICPP-5_1_6-e | typeid 演算子のオペランドに副作用を持つ式が含まれていてはならない |
HICPP-5_1_6-f | typeid 演算子のオペランドに副作用を発生させる関数の呼び出しが含まれていてはならない |
INIT-17 | すべてのユーザー定義のコンストラクターがデータ メンバーを同じ定数値で初期化している場合、NSDMI を使用して初期化すべきである |
JSF-024_b | <stdlib.h> のライブラリ関数 'exit' を使用してはならない |
JSF-024_c | <stdlib.h> のライブラリ関数 'getenv' を使用してはならない |
JSF-024_d | <stdlib.h> のライブラリ関数 'system' を使用してはならない |
JSF-134_b | 関数宣言の前のコメントで関数を文書化する |
MISRA2004-20_11_b | stdlib.h または cstdlib ライブラリの exit() 関数を使用しない |
MISRA2004-20_11_c | stdlib.h または cstdlib ライブラリの 'getenv() 関数を使用しない |
MISRA2004-20_11_d | stdlib.h または cstdlib ライブラリの system() 関数を使用しない |
MISRA2008-18_0_3_b | <stdlib.h> のライブラリ関数 'exit' を使用してはならない |
MISRA2008-18_0_3_c | <stdlib.h> のライブラリ関数 'getenv' を使用してはならない |
MISRA2008-18_0_3_d | <stdlib.h> のライブラリ関数 'system' を使用してはならない |
MISRA2012-RULE-21_8_b | <stdlib.h> のライブラリ関数 'exit' を使用してはならない |
MISRA2012-RULE-21_8_c | <stdlib.h> のライブラリ関数 'getenv' を使用してはならない |
MISRA2012-RULE-21_8_d | <stdlib.h> のライブラリ関数 'system' を使用してはならない |
MISRA2012-RULE-2_2_b | 未使用の値を避ける |
MISRAC2012-RULE_21_8-b | stdlib.h または cstdlib ライブラリの exit() 関数を使用しない |
MISRAC2012-RULE_21_8-c | stdlib.h または cstdlib ライブラリの system() 関数を使用しない |
MISRAC2012-RULE_21_8-d | stdlib.h または cstdlib ライブラリの 'getenv() 関数を使用しない |
MISRAC2012-RULE_2_2-b | 未使用の値を避ける |
MRM-56 | コピー代入演算子は、オブジェクトのコピーに影響を与える可能性がある副作用を持つべきではない |
MRM-57 | ムーブ代入演算子は、オブジェクトのムーブに影響を与える可能性がある副作用を持つべきではない |
OPT-42 | 仮想関数に未使用の名前付きパラメーターがあってはならない |
OWASP2017-A1-a | 未検証のバイナリ データをログ記録メソッドに渡さない |
OWASP2017-A1-b | コマンド インジェクションから防御する |
OWASP2017-A1-c | 汚染されたデータを出力コンソールに出力してはならない |
OWASP2017-A1-d | 環境変数インジェクションから防御する |
OWASP2017-A1-e | フォーマット文字列からサニタイズされていないユーザー入力を除外する |
OWASP2017-A1-f | SQL インジェクションから防御する |
OWASP2017-A10-a | すべての例外は、再スローされるか標準ロガーでログに記録されるべきである |
OWASP2017-A2-a | 弱い暗号化関数を使用してはならない |
OWASP2017-A3-a | 疑似乱数生成器に適切なシードを指定する |
OWASP2017-A4-a | libxerces-c で XML 外部エンティティの解決 (XXE) を無効化する |
OWASP2017-A5-a | ファイル名インジェクションから防御する |
OWASP2017-A5-b | 権限を正しい順序で破棄する |
OWASP2017-A5-c | 権限が正常に破棄されたことを確認する |
OWASP2017-A6-a | 1 つの try-catch 文または関数監視ブロックに派生クラスおよびそのすべてまたは一部の基底クラスのハンドラがある場合、最後に派生されたクラスから基底クラスへの順でハンドラを記述する |
OWASP2017-A6-b | catch ブロックを空のままにしない |
OWASP2017-A6-c | errno 値を適切に使用する |
PB-75_b | stdlib.h または cstdlib ライブラリの exit() 関数を使用しない |
PB-75_c | stdlib.h または cstdlib ライブラリの関数 quick_exit() および _Exit() は使用してはならない |
PB-76 | C 形式の配列を使用するべきではない |
PB-77 | 式文は、一時オブジェクトのコンストラクターの明示的な呼び出しだけを含むべきではない |
SECURITY-48_b | stdlib.h または cstdlib ライブラリの system() 関数を使用しない |
SECURITY-51 | char バッファーを使用して std::cin の入力を格納しない |
SECURITY-52 | stdlib.h または cstdlib ライブラリの 'getenv() 関数を使用しない |
TEMPL-17 | typename キーワードが戻り値型の前にある場合、後置戻り値型構文を使用する |
更新されたルール
解析結果の向上のため、以下の静的解析ルールが更新されました。
ルール カテゴリ | ルール ID |
---|---|
AUTOSAR C++14 Coding Guidelines | AUTOSAR-A0_1_4-a, AUTOSAR-A12_1_1-b, AUTOSAR-A12_8_4-a, AUTOSAR-A13_5_4-b, AUTOSAR-A15_4_1-a, AUTOSAR-A15_5_2-b, AUTOSAR-A18_0_1-a, AUTOSAR-A18_9_2-a, AUTOSAR-A27_0_1-d, AUTOSAR-A27_0_2-b, AUTOSAR-A2_8_1-a, AUTOSAR-A3_8_1-a, AUTOSAR-A3_8_1-b, AUTOSAR-A5_1_3-a, AUTOSAR-A5_2_5-c, AUTOSAR-A8_4_5-a, AUTOSAR-A8_4_6-a, AUTOSAR-A8_5_0-a, AUTOSAR-M0_1_3-a, AUTOSAR-M0_1_3-b, AUTOSAR-M0_3_1-b, AUTOSAR-M0_3_1-c, AUTOSAR-M0_3_1-h, AUTOSAR-M0_3_1-j, AUTOSAR-M18_0_3-a, AUTOSAR-M2_13_2-a, AUTOSAR-M5_0_16-b, AUTOSAR-M5_0_18-a, AUTOSAR-M5_0_2-e, AUTOSAR-M5_3_4-c, AUTOSAR-M5_8_1-a, AUTOSAR-M7_5_1-a, AUTOSAR-M8_5_2-c |
フロー解析 | BD-CO-ITOUT, BD-PB-CC, BD-PB-CHECKRET, BD-PB-DEREF, BD-PB-NOTINIT, BD-PB-OVERFFMT, BD-PB-OVERFWR, BD-PB-OVERLAP, BD-PB-PTRARR, BD-PB-SIGHAN, BD-RES-FREE, BD-RES-INVFREE, BD-SECURITY-OVERFFMT, BD-TRS-MLOCK, BD-TRS-ORDER |
SEI CERT C | CERT_C-API01-a, CERT_C-ARR38-b, CERT_C-ARR38-c, CERT_C-CON31-b, CERT_C-CON31-c, 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-DCL18-b, CERT_C-DCL30-a, CERT_C-ENV01-c, CERT_C-ERR04-a, CERT_C-ERR05-a, CERT_C-EXP33-a, CERT_C-EXP39-d, CERT_C-EXP44-b, CERT_C-FIO46-a, 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-i, CERT_C-MEM00-d, CERT_C-MEM01-a, CERT_C-MEM30-a, CERT_C-MEM34-a, CERT_C-MSC13-a, CERT_C-MSC14-a, CERT_C-MSC15-a, CERT_C-MSC24-b, CERT_C-POS51-a, CERT_C-SIG30-a, CERT_C-SIG31-a, CERT_C-SIG34-a, CERT_C-STR31-b |
SEI CERT C++ | CERT_CPP-CON53-a, CERT_CPP-ERR50-l, CERT_CPP-EXP52-c, CERT_CPP-EXP53-a, CERT_CPP-EXP54-a, CERT_CPP-EXP54-b, CERT_CPP-MEM50-a, CERT_CPP-MSC54-a, CERT_CPP-STR50-c |
Coding Conventions | CODSTA-102, CODSTA-103, CODSTA-116, CODSTA-13, CODSTA-163_b, CODSTA-22 |
Coding Conventions for C++ | CODSTA-CPP-59, CODSTA-CPP-86 |
Coding Conventions for Modern C++ | CODSTA-MCPP-10_a CODSTA-MCPP-13 |
Comments | COMMENT-04 |
Formatting | FORMAT-43 |
High Integrity C++ | HICPP-12_4_2-a, HICPP-17_2_1-a, HICPP-17_3_2-a, HICPP-18_2_2-a, HICPP-18_3_2-a, HICPP-1_2_1-i, HICPP-1_3_1-a, HICPP-1_3_3-a, HICPP-1_3_5-a, HICPP-2_5_2-a, HICPP-3_4_1-a, HICPP-3_5_1-d, HICPP-4_2_2-a, HICPP-5_1_3-a, HICPP-5_1_5-a, HICPP-5_1_6-c, HICPP-7_1_7-a, HICPP-8_4_1-a, HICPP-8_4_1-b |
Initialization | INIT-05, INIT-06 |
Joint Strike Fighter | JSF-024, JSF-060_b, JSF-071_b, JSF-077, JSF-085_a, JSF-111, JSF-117_b, JSF-134, JSF-139, JSF-143_a, JSF-149, JSF-164, JSF-166_c, JSF-171, JSF-181_a, JSF-203, JSF-204_a, JSF-204_b |
MISRA C 1998 | MISRA-027, MISRA-044, MISRA-051 |
MISRA C 2004 | MISRA2004-12_1_e, MISRA2004-12_3_c, MISRA2004-12_8, MISRA2004-17_3, MISRA2004-17_6_a, MISRA2004-20_11, MISRA2004-7_1_a, MISRA2004-9_2_c |
MISRA C++ 2008 | MISRA2008-0_1_11, MISRA2008-0_1_3_a, MISRA2008-0_1_3_b, MISRA2008-0_3_1_d, MISRA2008-0_3_1_f, MISRA2008-0_3_1_h, MISRA2008-0_3_1_j, MISRA2008-18_0_1, MISRA2008-18_0_3, MISRA2008-2_13_2_a, MISRA2008-5_0_16_b, MISRA2008-5_0_18, MISRA2008-5_0_2_e, MISRA2008-5_3_4_c, MISRA2008-5_8_1, MISRA2008-7_5_1, MISRA2008-7_5_2_a, MISRA2008-8_5_2_c |
MISRA C 2012 | MISRAC2012-DIR_4_1-d, MISRAC2012-DIR_4_1-f, MISRAC2012-DIR_4_1-h, MISRAC2012-DIR_4_1-j, MISRAC2012-DIR_4_13-b, MISRAC2012-DIR_4_13-c, MISRAC2012-DIR_4_14-i, MISRAC2012-DIR_4_7-a, MISRAC2012-RULE_10_3-b, MISRAC2012-RULE_12_1-a, MISRAC2012-RULE_12_2-a, MISRAC2012-RULE_14_3-ac, MISRAC2012-RULE_16_1-g, MISRAC2012-RULE_16_5-a, MISRAC2012-RULE_18_1-c, MISRAC2012-RULE_18_3-a, MISRAC2012-RULE_18_6-a, MISRAC2012-RULE_19_1-c, MISRAC2012-RULE_1_3-b, MISRAC2012-RULE_1_3-c, MISRAC2012-RULE_1_3-e, MISRAC2012-RULE_1_3-m, MISRAC2012-RULE_21_17-b, MISRAC2012-RULE_21_8-a, MISRAC2012-RULE_22_2-a, MISRAC2012-RULE_22_2-b, MISRAC2012-RULE_22_6-a, MISRAC2012-RULE_7_1-a, MISRAC2012-RULE_9_1-a |
Memory and Resource Management | MRM-41 |
Naming Conventions | NAMING-32 |
Optimization | OPT-02, OPT-02, OPT-03, OPT-05, OPT-06, OPT-29, OPT-31 |
Possible Bugs | PB-11, PB-18, PB-22, PB-23, PB-45, PB-46, PB-47, PB-48, PB-49, PB-50, PB-73, PB-75 |
Security | SECURITY-14 |
削除されたルール
以下のルールが削除されました。
- AUTOSAR-A13_5_4-a
- AUTOSAR-A17_1_1-b
- CERT_C-ENV33-b
- CERT_C-EXP45-a
- CERT_C-EXP45-c
- CERT_C-FLP37-a
- CERT_C-FLP37-b
- CERT_C-INT36-a