このリリースには以下の拡張が含まれます。
リリース日: 2021年11月15日
Azure DevOps および GitLab との統合
CI システムを使用するワークフローの合理化に役立つ拡張が行われました。C/C++test からレポートされた結果を直接 Azure Pipelines または GitLab で簡単に確認できます。
Azure DevOps との統合
C/C++test extension for Azure DevOps が追加され、C/C++test を簡単に Azure DevOps パイプラインに統合できるようになりました。C/C++test extension は、C/C++test の解析を実行し、 Azure DevOps 固有の SARIF フォーマットで C/C++test レポートを生成するタスクを提供します。パイプラインを実行するたびに、解析の結果がビルド結果に表示されます。詳細については https://marketplace.visualstudio.com/items?itemName=parasoft.cpptest-azure-devops を参照してください。
GitLab との統合
C/C++test の解析を実行して SAST フォーマットで解析レポートを生成するよう GitLab ワークフローを変更することで、GitLab と C/C++test を統合できるようになりました。C/C++test からレポートされた結果をコードの脆弱性として GitLab で参照できます。詳細については https://gitlab.com/parasoft/cpptest-gitlab を参照してください。
C/C++test Extension for Visual Studio Code の拡張
C/C++test Extension for Visual Studio Code の機能が拡張されました。Azure DevOps リポジトリから解析結果をインポートできるようになりました。C/C++test extension for Visual Studio Code の詳細については Visual Studio Code Marketplace を参照してください。
コード カバレッジ ワークフローの合理化
C/C++test でカバレッジ情報を収集する際に起こる問題をトラブルシューティングするのに役立つ新しいオプションが追加されました。以下が可能です。
- エラーや警告の情報など、カバレッジ ワークスペースの診断情報を表示する。
- カバレッジ ワークスペースの診断データを収集し、Parasoft サポートに送信する。
- インストゥルメントとレポート生成の間に場所が変わったファイルのカバレッジ情報を収集できるようにファイル パスをマッピングする。
- インストゥルメントまたはコンパイルの問題から自動的に復旧する。
- 1 回のビルドで複数回コンパイルされるファイルのカバレッジを収集する。
詳細は「コード カバレッジのトラブルシューティング」を参照してください。
サポート対象コンパイラ
新たに以下のコンパイラがサポートされました。
コンパイラ名 | コンパイラ略称 |
---|---|
ARM Compiler 6.16 | armclang_6_16 |
Clang C/C++ Compiler v 12.0 (x86_64) | clang_12_0 |
GNU GCC 11.x (x86_64) | gcc_11-64 |
IAR Compiler for ARM v. 9.10x | iccarm_9_10 |
以下のコンパイラのサポート レベルが変更されました。
- TI ARM C/C++ Compiler v20.2 が完全にサポートされるようになりました。
- FR Family Softune C/C++ Compiler V6 – サポート レベルが Extended から Standard に変更されました。
- RX C/C++ Compiler 2.5x – サポート レベルが Extended から Standard に変更されました。
詳細は「サポート対象コンパイラ」を参照してください。
IDE のサポート
Eclipse バージョン 2020-06 (4.16) - 2021-06 (4.20) のサポートが追加されました。
追加または更新された解析ルール
新規静的解析ルールが追加され、コンプライアンス標準のカバー範囲が拡張されました。追加および更新されたルールの一覧は「New Rules」、「Updated Rules」を参照してください。
追加または更新されたテスト コンフィギュレーション
以下のテスト コンフィギュレーションが追加されました。
- OWASP Top 10 20211
1 このテストコンフィギュレーションはプレビュー版です。
Parasoft エンド ユーザーライセンス契約書への同意
C/C++test を利用するには、Parasoft エンド ユーザーライセンス契約書 (EULA) への同意が必要です。Parasoft EULA は C/C++test のインストール ディレクトリおよび https://www.techmatrix.co.jp/quality/support/parasoft/license/ にあります。
EULA に同意するには、cpptestcli.properties 設定ファイルで次の設定を有効にします。parasoft.eula.accepted=true
IDE に Parasoft Plugin をインストールする場合、インストール ウィザードによって EULA への同意が求められ、cpptestcli.properties ファイルに自動的に EULA への同意設定が追加されます。
Parasoft Plugin for Visual Studio をサイレント (非インタラクティブ) モードでインストールする場合、次のコマンドを使用して EULA への同意のうえインストーラーを実行する必要があります。/acceptEula=yes
非推奨の環境およびサポート対象から削除された環境
Visual Studio 2012 および 2013 のサポートが非推奨になり、次のリリースで削除される予定です。
サポート対象から削除された IDE
次の IDE のサポートは廃止されました。
- Eclipse 4.3
解決済みのバグおよび FR
バグ/FR ID | 説明 |
---|---|
CPP-42644 | AUTOSAR A13-5-5 のマッピングを改善する |
CPP-47158 | コンストラクター初期化リストの明示的なコンストラクター呼び出しに対してプロパティ 'IsCompilerGenerated' が true を返す |
CPP-47452 | 属性モードが使用されている場合、列挙型が再構築されない |
CPP-47816 | error: no instance of overloaded function "getEnumInfo" matches the argument list |
CPP-47861 | アラインメントされた static 変数を持つインライン関数のインストゥルメントが正しくない |
CPP-47890 | AUTOSAR-A10_3_2-a: final 指定子に対して違反が誤検出される |
CPP-48213 | '*a' および 'a[b]' 式の型が const/volatile として検出されない |
CPP-48214 | 定数から文字列を生成した場合にクラッシュする |
CPP-48221 | METRICS-36: 同じ TU で宣言および定義された関数が使用されている場合、同じ呼び出しが 2 回カウントされる |
CPP-48252 | CODSTA-26 (AUTOSAR-A5_1_1-a): constexpr 変数の初期化子で使用されている定数に対して違反が誤検出される |
CPP-48260 | CERT-C INT15 のマッピングを改善する |
CPP-48263 | AUTOSAR-M0_1_4-a: static constexpr 変数に対して違反を誤検出する |
CPP-48264 | MISRA2004-20_3: 制限された入力ドメインを持つ関数にだけ違反をレポートするべき |
CPP-48265 | GLOBAL-UNUSEDFUNC: 関数がテンプレート パラメーターとして使用されている場合に違反を誤検出する |
CPP-48304 | Renesas rx2.5 コンパイラで関数マクロの呼び出しに対して違反が自動抑制されない場合がある |
CPP-48310 | 'float' 型の値として 'min' または 'min positive' が選択された場合、テスト ケース ウィザードが生成するテスト ケースが適切ではない |
CPP-48319 | JSF-143: 参照初期化に対して違反を誤検出する |
CPP-48320 | データ メンバー初期化子が許可されない |
CPP-48342 | データ ソースがあるテスト ケースで出力 Test Problem: Data source not found が表示される |
CPP-48386 | 'parasoft suppress' レコードの不正な形式の 'line' 属性によってより多くの違反が抑制される |
CPP-48390 | NAMING-44/JSF-051 にカスタマイズ可能な例外を追加する |
CPP-48395 | CODSTA-81 (AUTOSAR-M3_3_2-a): 明示的に特殊化されたテンプレートに対して違反を誤検出する |
CPP-48396 | 明示的なインスタンスを持つテンプレート関数に対して 'IsExplicitStatic' フラグが正しく動作しない |
CPP-48415 | error: array is too large (cannot allocate >=2^32 elements) |
CPP-48434 | PB-50: *scanf_s 関数の呼び出しに対して違反が誤検出される |
CPP-48464 | CODSTA-48 (AUTOSAR-A2_5_2-a): <:: token シーケンスが誤って 2 文字表記として検出される |
CPP-48491 | 識別子 "__builtin_arm_get_fpscr" が未定義 |
CPP-48500 | "volatile void *" 型の引数が "void *" 型のパラメーターと互換性がない |
CPP-48544 | operator_test スタブ作成時に STATUS_ACCESS_VIOLATION エラー |
CPP-48555 | パーサーに C モードでの enum base のサポートを追加する (clang 拡張) |
CPP-48582 | enum 型の引数を持つ関数で自動生成されたパラメータライズド テスト ケースのパラメーター名が一貫していない |
CPP-48588 | bcc32_6_9 コードに対して cwc 内部エラー: "pm_class_type: not a pointer to member type" |
CPP-48629 | PB-69: 匿名の共用体のメンバーが指定付き初期化子で初期化されている場合に python エラーが発生する |
CPP-48639 | static_cast 演算子のカバレッジ インストゥルメントが誤っている |
CPP-48670 | CERT-C DCL53 のマッピングを改善する |
CPP-48703 | CERT-C ERR56 のマッピングを改善する |
CPP-48713 | ccac コンパイラの -Hcppext= および -Hcext= オプションのサポートを追加する |
CPP-48714 | 括弧付き初期化子の再構築が誤っている |
CPP-48976 | 'Friend' ノードで 'Type' および 'TypeTraverseReference' プロパティが動作しない |
CPP-48977 | VXTC コンパイラの関数属性でパース エラー |
CPP-49003 | vxtc_6_3 の空の構造体でインストゥルメント エラー |
CPP-49029 | カバレッジ インストゥルメントがコンパイル エラーをレポートする: inlining failed in call to always_inline |
CPP-49037 | ccac コンパイラの -Hcppext= および -Hcext= オプションのサポートを修正する |
CPP-49042 | 'using' ノードの 'Fullname' プロパティがスコープ接頭辞をレポートしない |
CPP-49048 | INIT-06: テンプレート クラスで初期化子付きの const データ メンバーが定義されている場合に誤検出する |
CPP-49145 | http プロキシの設定の改善 |
CPP-49162 | Using 宣言で使用されている実際の名前空間をチェックできるプロパティを追加する |
CPP-49199 | cpptestcc カバレッジ インストゥルメントが UTF-8 のリテラルを通常の string リテラルに変更することで動作が変わる |
CPP-49212 | CODSTA-MCPP-11_b_cpp11 (AUTOSAR-A7_1_2-b) および CODSTA-MCPP-09 (AUTOSAR-A15_4_4-a): が 'main' 関数に対して違反を誤検出する |
CPP-49657 | __far IAR メモリ属性が指定された配列がパーサーをクラッシュさせる |
FA-8388 | CERT_C-POS39-a (BD-PB-BYTEORD) がデータの送受信に違反をレポートする |
FA-8430 | BD-PB-OVERFNZT が違反を検出できない |
FA-8477 | 要素の使用が解放された変数の再代入でもある場合、BD-RES-FREE が違反を検出できない |
FA-8541 | BD-PB-OVERFNZT の誤検出 |
FA-8548 | BD-PB-OVERFNZT が strdupa および strverscmp の違反を検出できない |
FA-8551 | BD-PB-NP が違反を検出できない |
FA-8557 | BD-PB-VALPARAM の誤検出 |
FA-8573 | BD-PB-UCMETH の誤検出 |
FA-8597 | 別のエイリアス (ルール マッピング) を使用した後続の実行で同じルールが使用されている場合、インクリメント解析が違反のレポートを中止する |
FA-8634 | BD-SECURITY-LOG の誤検出 |
XT-39166 | Git でローカルに変更された行のチェックの問題 |
XT-39322 | 軽量 Parasoft Plugin でライセンスを要求したときにプロキシ設定が適用されない |
XT-39329 | SAST フォーマットのレポートが Eclipse UI で開かれない |
新規ルール
ルール ID | ヘッダー |
---|---|
AUTOSAR-A13_5_5-b | 比較演算子は同じパラメーター型と noexcept を持つ非メンバー関数でなければならない |
CERT_CPP-DCL53-c | 文法的に曖昧な関数宣言を避ける |
CERT_CPP-ERR56-b | catch ブロックを空のままにしない |
CODSTA-CPP-107 | 比較演算子は非メンバー関数でなければならない |
CODSTA-CPP-107_b | 比較演算子は同じパラメーター型と noexcept を持つ非メンバー関数でなければならない |
FORMAT-48 | 関数宣言中のパラメーター名は括弧で囲むべきではない |
FORMAT-49 | 変数宣言中のローカル変数名は括弧で囲むべきではない |
OWASP2021-A1-a | ファイル名インジェクションから防御する |
OWASP2021-A1-b | 権限を正しい順序で破棄する |
OWASP2021-A1-c | 権限が正常に破棄されたことを確認する |
OWASP2021-A2-a | 疑似乱数生成器に適切なシードを指定する |
OWASP2021-A3-a | 未検証のバイナリ データをログ記録メソッドに渡さない |
OWASP2021-A3-b | コマンド インジェクションから防御する |
OWASP2021-A3-c | 汚染されたデータを出力コンソールに出力してはならない |
OWASP2021-A3-d | 環境変数インジェクションから防御する |
OWASP2021-A3-e | フォーマット文字列からサニタイズされていないユーザー入力を除外する |
OWASP2021-A3-f | SQL インジェクションから防御する |
OWASP2021-A4-a | ログ ファイルに書き込む関数に機密データを渡さない |
OWASP2021-A5-a | 1 つの try-catch 文または関数監視ブロックに派生クラスおよびそのすべてまたは一部の基底クラスのハンドラがある場合、最後に派生されたクラスから基底クラスへの順でハンドラを記述する |
OWASP2021-A5-b | catch ブロックを空のままにしない |
OWASP2021-A5-c | errno 値を適切に使用する |
OWASP2021-A5-d | libxerces-c で XML 外部エンティティの解決 (XXE) を無効化する |
OWASP2021-A7-a | 弱い暗号化関数を使用してはならない |
OWASP2021-A8-a | LoadLibrary() が正しいライブラリをロードするよう注意する |
OWASP2021-A9-a | すべての例外は、再スローされるか標準ロガーでログに記録されるべきである |
PB-78 | プログラマー定義の整数型での書式付き IO には intmax_t または uintmax_t を使用する |
PB-79 | 文法的に曖昧な関数宣言を避ける |
更新されたルール
カテゴリ ID | ルール ID |
---|---|
AUTOSAR C++14 Coding Guidelines | AUTOSAR-A0_1_1-a, AUTOSAR-A10_3_2-a, AUTOSAR-A12_1_1-b, AUTOSAR-A12_1_3-a, AUTOSAR-A13_5_5-a, AUTOSAR-A15_4_4-a, AUTOSAR-A20_8_2-a, AUTOSAR-A20_8_3-a, AUTOSAR-A20_8_4-a, AUTOSAR-A27_0_2-a, AUTOSAR-A2_5_2-a, AUTOSAR-A3_8_1-a, AUTOSAR-A5_1_1-a, AUTOSAR-A5_3_2-a, AUTOSAR-A7_1_2-b, AUTOSAR-M0_1_10-a, AUTOSAR-M0_1_4-a, AUTOSAR-M0_3_1-f, AUTOSAR-M0_3_1-g, AUTOSAR-M3_3_2-a |
フロー解析 | BD-PB-BYTEORD, BD-PB-NP, BD-PB-OVERFNZT, BD-PB-UCMETH, BD-PB-VALPARAM, BD-PB-VOVR, BD-RES-FREE, BD-SECURITY-LOG |
SEI CERT C | CERT_C-ARR38-d, CERT_C-CON31-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-DCL22-a, CERT_C-ERR33-c, CERT_C-EXP34-a, 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-INT15-a, CERT_C-MEM00-d, CERT_C-MEM01-a, CERT_C-MEM04-a, CERT_C-MEM07-a, CERT_C-MEM30-a, CERT_C-MSC19-b, CERT_C-POS30-a, CERT_C-POS39-a, CERT_C-POS54-c, CERT_C-STR03-a, CERT_C-STR32-a |
SEI CERT C++ | CERT_CPP-DCL53-a, CERT_CPP-DCL53-b, CERT_CPP-ERR56-a, CERT_CPP-EXP54-a, CERT_CPP-MEM50-a, CERT_CPP-STR50-b, CERT_CPP-STR51-a |
コーディング規約 | CODSTA-26, CODSTA-48, CODSTA-81 |
Modern C++ コーディング規約 | CODSTA-MCPP-05, CODSTA-MCPP-09, CODSTA-MCPP-11_b_cpp11, CODSTA-MCPP-29, CODSTA-MCPP-30 |
Common Weakness Enumeration | CWE-20-c, CWE-415-a, CWE-416-a, CWE-476-a |
グローバル静的解析 | GLOBAL-ONEUSEVAR, GLOBAL-UNUSEDFUNC |
High Integrity C++ | HICPP-10_2_1-a, HICPP-12_4_2-a, HICPP-1_2_1-h, HICPP-2_2_1-a, HICPP-5_1_1-a, HICPP-5_2_1-c, HICPP-8_4_1-b |
初期化 | INIT-06, INIT-17 |
Joint Strike Fighter | JSF-012, JSF-051, JSF-071_b, JSF-138_b, JSF-143, JSF-151 |
メトリクス | METRICS-36 |
MISRA C 2004 | MISRA2004-20_3, MISRA2004-8_11 |
MISRA C++ 2008 | MISRA2008-0_1_10_b, MISRA2008-0_1_4, MISRA2008-0_1_6, MISRA2008-0_3_1_b, MISRA2008-0_3_1_e, MISRA2008-2_5_1, MISRA2008-3_3_2 |
MISRA C 2012 (Legacy) | MISRA2012-DIR-4_13_b, MISRA2012-DIR-4_1_b, MISRA2012-DIR-4_1_e, MISRA2012-RULE-1_3_c, MISRA2012-RULE-21_17_a, MISRA2012-RULE-22_2_a, MISRA2012-RULE-22_6, MISRA2012-RULE-2_2_b, MISRA2012-RULE-8_8, MISRA2012-RULE-9_4 |
MISRA C 2012 | MISRAC2012-DIR_4_1-b, MISRAC2012-DIR_4_1-e, MISRAC2012-DIR_4_13-b, MISRAC2012-RULE_1_3-c, MISRAC2012-RULE_21_17-a, MISRAC2012-RULE_22_2-a, MISRAC2012-RULE_22_6-a, MISRAC2012-RULE_2_2-b, MISRAC2012-RULE_8_8-a , MISRAC2012-RULE_9_4-a |
名前付け規則 | NAMING-44 |
最適化 | OPT-26 |
OWASP Top 10 Most Critical Web Application Security Risks (2017) | OWASP2017-A1-a, OWASP2019-API3-e |
バグの可能性 | PB-45, PB-46, PB-47, PB-48, PB-49, PB-50, PB-62, PB-69 |