このセクションでは、C/C++test に付属のテスト コンフィギュレーションについて説明します。付属のテスト コンフィギュレーションは、一般的なシナリオの大部分に対応します。カスタム テスト コンフィギュレーションの作成と、複数チームへのテスト コンフィギュレーションの配布については、「テストコンフィギュレーションとルールの設定」を参照してください。
ビルトイン テスト コンフィギュレーションは次のカテゴリに分類されます。
Static Analysis
このグループには、汎用的な静的解析テスト コンフィギュレーションが含まれます。コーディング標準を推進するテスト コンフィギュレーションについては「コンプライアンス パック」を参照してください。
テスト コンフィギュレーション | 説明 |
---|---|
Recommended Rules | 推奨ルールのデフォルト コンフィギュレーションです。重要度 1 および 2 の大部分のルールをカバーします。Flow Analysis Fast コンフィギュレーションのルールを含みます。 |
Flow Analysis Standard | テスト ケースやアプリケーションを実行せずに複雑な実行時エラーを検出します。検出されるエラーには、未初期化または無効なメモリの使用、null ポインター間接参照、配列およびバッファーのオーバーフロー、ゼロ除算、メモリおよびリソース リーク、デッド コードなどが含まれます。 特別なFlow Analysis ライセンス オプションが必要です。フロー解析テスト コンフィギュレーションの詳細については 「フロー解析ビルトイン テスト コンフィギュレーション」を参照してください。 |
Flow Analysis Fast | 解析の深さとして「最も浅い」を使用するため、 Standard や Aggressive よりも迅速に実行します。 適度な量の問題を発見し、違反の数が爆発的に増加するのを防止します。フロー解析テスト コンフィギュレーションの詳細については 「フロー解析ビルトイン テスト コンフィギュレーション」を参照してください。 |
Flow Analysis Aggressive | あらゆる疑わしいコードを違反として検出します。フロー解析テスト コンフィギュレーションの詳細については 「フロー解析ビルトイン テスト コンフィギュレーション」を参照してください。 |
Effective C++ | Scott Meyers の『Effective C++』に基づいたルールをチェックします。C++ プログラムの効率性をチェックします。 |
Effective STL | Scott Meyers の『Effective STL』に基づいたルールをチェックします。 |
Modern C++ (11, 14 and 17) | モダン C++ 規格 (C++11、C++14、C++17) 向けのベスト プラクティスを推進するルールをチェックします。 |
Find Duplicated Code | 重複する関数、コード フラグメント、文字列リテラル、および #include ディレクティブを検出します。 |
Find Unused Code | 未使用コード/デッド コードを検出するためのルールが含まれます。 |
メトリクス | メトリクスの統計をレポートし、許容範囲を超えるメソッド値を検出します。 |
Global Analysis | グローバル静的解析ルールをチェックします。 |
Sutter-Alexandrescu | Herb Sutter と Andrei Alexandrescu の『C++ Coding Standards』に基づいたルールをチェックします。 |
The Power of Ten | Gerard J. Holzmann の記事「The Power of Ten - Rules for Developing Safety Critical Code」に基づいたルールをチェックします。(http://spinroot.com/gerard/pdf/Power_of_Ten.pdf) |
コンプライアンス パック
コンプライアンス パックには、特定のコンプライアンス領域に合わせて調整されたテスト コンフィギュレーションが含まれ、業界固有のコンプライアンス標準およびプラクティスを推進するのに役立ちます。標準がどのように C/C++test のルールにマッピングされているかについては、「コンプライアンス パックのルールのマッピング」を参照してください。
Aerospace Pack
テスト コンフィギュレーション | 説明 |
---|---|
Joint Strike Fighter | Joint Strike Fighter (JSF) プログラム コーディング規約を推進するルールをチェックします。 |
DO178C Software Level A Unit Testing | 適切なカバレッジ メトリクスの設定と DO178C Software Level A 用のレポート設定を使用して単体テストを実行します。 |
DO178C Software Level B Unit Testing | 適切なカバレッジ メトリクスの設定と DO178C Software Level B 用のレポート設定を使用して単体テストを実行します。 |
DO178C Software Level C and D Unit Testing | 適切なカバレッジ メトリクスの設定と DO178C Software Level C および D 用のレポート設定を使用して単体テストを実行します。 |
Automotive Pack
テスト コンフィギュレーション | 説明 |
---|---|
AUTOSAR C++14 Coding Guidelines | AUTOSAR C++ Coding Guidelines (Adaptive Platform, version 19.03) を推進するルールをチェックします。
|
High Integrity C++ | High Integrity C++ Coding 標準を推進するルールをチェックします。 |
HIS Source Code Metrics | Herstellerinitiative Software (HIS) グループによって要求されるメトリクスをチェックします。 |
MISRA C 1998 | MISRA C コーディング規約を推進するルールをチェックします。 |
MISRA C 2004 | MISRA C 2004 コーディング規約を推進するルールをチェックします。 |
MISRA C++ 2008 | MISRA C++ 2008 コーディング規約を推進するルールをチェックします。 |
MISRA C 2023 (MISRA C 2012) | MISRA C:2023 / MISRA C:2012 Amendment 4 ガイドラインを推進するルールをチェックします。
|
MISRA C++ 2023 | MISRA C++:2023 Guidelines for the use of C++17 in critical systems を推進するルールをチェックします。
|
ISO26262 ASIL A Unit Testing | 適切なカバレッジ メトリクスの設定と ISO26262 ASIL A 用のレポート設定を使用して単体テストを実行します。 |
ISO26262 ASIL B and C Unit Testing | 適切なカバレッジ メトリクスの設定と ISO26262 ASIL B および C 用のレポート設定を使用して単体テストを実行します。 |
ISO26262 ASIL D Unit Testing | 適切なカバレッジ メトリクスの設定と ISO26262 ASIL D 用のレポート設定を使用して単体テストを実行します。 |
Medical Devices Pack
テスト コンフィギュレーション | 説明 |
---|---|
Recommended Rules for FDA (C) | 「FDA General Principles for Software Validation」に準拠するために推奨されるルールをチェックします (C 言語用コンフィギュレーション)。 |
Recommended Rules for FDA (C++) | 「FDA General Principles for Software Validation」に準拠するために推奨されるルールをチェックします (C++ 言語用コンフィギュレーション)。 |
Security Pack
テスト コンフィギュレーション | 説明 |
---|---|
CWE Top 25 2022 | CWE の Top 25 Most Dangerous Programming Errors v.2022 として分類された問題を検出するルールを含みます。
|
CWE Top 25 2019 | CWE の Top 25 Most Dangerous Programming Errors v.2019 として分類された問題を検出するルールを含みます。
|
CWE Top 25 2022 + On the Cusp | CWE の Top 25 Most Dangerous Programming Errors として分類された問題または CWE Weaknesses On the Cusp リスト v.2022 に含まれる問題を検出するルールを含みます。
|
CWE Top 25 2019 + On the Cusp | CWE の Top 25 Most Dangerous Programming Errors として分類された問題または CWE Weaknesses On the Cusp リスト v.2019 に含まれる問題を検出するルールを含みます。
|
DISA-ASD-STIG | Defense Information Systems Agency による Application Security and Development STIG (Security Technical Implementation Guide) で指摘された問題を検出するルールを含みます。 |
OWASP API Security Top 10 2019 | OWASP の API Security Top 10 標準で指摘された問題を検出するルールを含みます。
|
OWASP Top 10 2017 | OWASP Top 10 - 2017 で指摘された Web アプリケーションのセキュリティ リスクを検出するルールを含みます。 |
OWASP Top 10 2021 | OWASP Top 10 - 2021 で指摘された Web アプリケーションのセキュリティ リスクを検出するルールを含みます。
|
Payment Card Industry Data Security Standard | Payment Card Industry Data Security Standard (PCI DSS) の セクション 6 にあるセキュリティの問題をチェックします。 (https://www.pcisecuritystandards.org/security_standards/pci_dss.shtml) 検出される問題には、クロス サイト スクリプティング、インジェクション フロー、悪意のあるファイル実行などを防止するための入力 の検証、および適切なエラー処理の検証が含まれます。 |
Security Rules | セキュリティの脆弱性を防止または特定するルールをチェックしま す。 |
SEI CERT C Coding Guidelines | SEI CERT C コーディング スタンダードのルールとリコメンデーションをチェックします。このコーディング スタンダードは、セキュア コーディングのためのガイドラインを提供します。その目的は (たとえば未定義のプログラム動作や悪用可能な脆弱性をもたらしかねない未定義の動作を排除することによって) 安全で信頼でき、セキュアなシステムの開発を容易にすることです。 |
SEI CERT C Rules | SEI CERT C コーディング スタンダードのルールをチェックし ます。このコーディング スタンダードは、セキュア コーディングのためのガイドラインを提供します。その目的は (たとえば未定義のプログラム動作や悪用可能な脆弱性をもたらしかねない未定義の動作を排除することによって) 安全で信頼でき、セキュアなシステムの開発を容易にすることです。
|
SEI CERT C++ Rules | SEI CERT C++ コーディング スタンダードのルールをチェックします。このコーディング スタンダードは、セキュア コーディングのためのガイドラインを提供します。その目的は (たとえば未定義のプログラム動作や悪用可能な脆弱性をもたらしかねない未定義の動作を排除することによって) 安全で信頼でき、セキュアなシステムの開発を容易にすることです。
|
UL 2900 | UL-2900 標準で指摘された問題を発見するルールを含みます。 |
単体テスト
テスト コンフィギュレーション | 説明 |
---|---|
File Scope> Build Test Executable (File Scope) | トライアル ビルドのためのテスト用実行モジュールをビルドします。 選択したファイルだけがインストゥルメントされます。 |
File Scope> Collect Stub Information (File Scope) | [ スタブ] ビューに表示するスタブ情報を収集します。 選択したファイルだけがインストゥルメントされます。 |
File Scope> Debug Unit Tests (File Scope) | デバッガー下で単体テストを実行します。 選択したファイルだけがインストゥルメントされます。 |
File Scope> Generate Stubs (File Scope) | 見つからない関数定義と変数定義のためのスタブを生成します。 選択したファイルだけがインストゥルメントされます。 |
File Scope> Run Unit Tests | 利用可能なテスト ケースを実行します。 選択したファイルだけがインストゥルメントされます。 |
Build Test Executable | トライアル ビルドのためのテスト用実行モジュールをビルドします。 すべてのプロジェクト ファイルをインストゥルメントします。 |
Collect Stub Information | [スタブ] ビューに表示するスタブ情報を収集します。 すべてのプロジェクト ファイルをインストゥルメントします。 |
Debug Unit Tests | デバッガー下で単体テストを実行します。 すべてのプロジェクト ファイルをインストゥルメントします。 |
Generate Regression Base | プロジェクト コードの現在の機能をキャプチャしたベースライン テスト スイートを生成します。このベースラインからの変更を検出するには、定期的にこのテスト スイートを使ってコード ベースをテストします。 結果は自動的に検証済みにされます。 |
Generate Stubs | 見つからない関数定義と変数定義のためのスタブを生成します。 すべてのプロジェクト ファイルをインストゥルメントします。 |
Generate Test Suites | 選択したリソースのテスト スイートを生成します。テスト ケースは生成しません。 |
Generate Unit Tests | 選択したリソースの単体テストを生成します。 |
Run Unit Tests | 利用可能なテスト ケースを実行します。 すべてのプロジェクト ファイルをインストゥルメントします。 |
Run Unit Tests with Memory Monitoring | 利用可能なテスト ケースを実行し、メモリの問題についての情報を収集します。 すべてのプロジェクト ファイルをインストゥルメントします。 |
アプリケーション検証
テスト コンフィギュレーション | 説明 |
---|---|
Build Application with Coverage Monitoring | カバレッジ計測が有効な状態で、テスト対象アプリケーションをビルドします。 |
Build Application with Full Monitoring | カバレッジ計測とメモリ エラー検出が有効な状態で、テスト対象アプリケーションをビルドします。 |
Build Application with Memory Monitoring | メモリ エラー検出が有効な状態で、テスト対象アプリケーションをビルドします。 |
Build and Run Application with Coverage Monitoring | カバレッジ計測が有効な状態で、テスト対象アプリケーションをビルドして実行します。 |
Build and Run Application with Full Monitoring | カバレッジ計測とメモリ エラー検出が有効な状態で、テスト対象アプリケーションをビルドして実行します。 |
Build and Run Application with Memory Monitoring | メモリ エラー検出が有効な状態で、テスト対象アプリケーションをビルドして実行します。 |
Utilities
テスト コンフィギュレーション | 説明 |
---|---|
Load Test Results (File) | ファイル チャネルを介してテスト結果を収集します。デフォルトでは、このテスト コンフィギュレーションは |
Load Test Results (Sockets) | TCP/IP ソケットを介して送られるテスト結果をその場で収集します。 このテスト コンフィギュレーションは Java ユーティリティ プログラムを起動してテスト結果をリッスンしキャプチャします。テスト結果とカバレッジ結果のポート番号はカスタマイズ可能です。ポート番号は results_port および coverage_port プロパティで定義されます。 |
Extract Library Symbols | 外部ライブラリ (またはオブジェクト ファイル) からシンボル リストを抽出します。バイナリからシンボル情報を収集するための C++test の標準アルゴリズムが十分ではない場合は常にこのテスト コンフィギュレーションを使用するべきです。たとえば、Wind River DKM タイプのプロジェクトを使用している場合、この方法で収集された VxWorks イメージからすべてのシンボルを抽出します。通常、シンボルを抽出するバイナリの場所を入力するほか、ライブラリ/ オブジェクト ファイルのコンテンツをダンプするのに使用できる nm に似たユーティリティの名前も入力する必要があります。 |
Generate Stubs Using External Library Symbols | [Extract Library Symbols] テスト コンフィギュレーションを実行した後に、スタブを生成します。このテスト コンフィギュレーションは、外部ライブラリからのシンボル リストのファイルがプロジェクトの一時データ中に格納されているものと想定します。 |
Load Application Coverage | cpptestcc で収集されたカバレッジ データを IDE にインポートします。「cpptestcc を利用したアプリケーション カバレッジの収集」を参照してください。 |
Load Archived Results | アーカイブされた結果を C/C++test にロードします。「複数のテスト実行から結果をマージする」を参照してください。 |
統合
テスト コンフィギュレーション | 説明 |
---|---|
Lattix Architect> Export Code Dependency Data | Lattix Architect 用のコード依存関係データをエクスポートします。詳細については「Lattix Architect との統合」を参照してください。 |
コンプライアンス パックのルールのマッピング
このセクションは、CWE 標準用のルール マッピングを示します。他の標準のマッピング情報は、コンプライアンス パックとともに提供される PDF ルール マッピング ファイルに記載されています。
CWE Top 25 2022 のマッピング
CWE ID | CWE 名 | Parasoft ルール ID |
---|---|---|
CWE-787 | Out-of-bounds Write |
|
CWE-79 | Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting') | N/A |
CWE-89 | Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection') |
|
CWE-20 | Improper Input Validation |
|
CWE-125 | Out-of-bounds Read |
|
CWE-78 | Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection') |
|
CWE-416 | Use After Free |
|
CWE-22 | Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal') |
|
CWE-352 | Cross-Site Request Forgery (CSRF) | N/A |
CWE-434 | Unrestricted Upload of File with Dangerous Type | N/A |
CWE-476 | NULL Pointer Dereference |
|
CWE-502 | Deserialization of Untrusted Data | N/A |
CWE-190 | Integer Overflow or Wraparound |
|
CWE-287 | Improper Authentication |
|
CWE-798 | Use of Hard-coded Credentials |
|
CWE-862 | Missing Authorization | N/A |
CWE-77 | Improper Neutralization of Special Elements used in a Command ('Command Injection') |
|
CWE-306 | Missing Authentication for Critical Function | N/A |
CWE-119 | Improper Restriction of Operations within the Bounds of a Memory Buffer |
|
CWE-276 | Incorrect Default Permissions | N/A |
CWE-918 | Server-Side Request Forgery (SSRF) | N/A |
CWE-362 | Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition') |
|
CWE-400 | Uncontrolled Resource Consumption |
|
CWE-611 | Improper Restriction of XML External Entity Reference |
|
CWE-94 | Improper Control of Generation of Code ('Code Injection') | N/A |
CWE Weaknesses On the Cusp 2022 のマッピング
CWE ID | CWE 名 | Parasoft ルール ID |
---|---|---|
CWE-295 | Improper Certificate Validation | N/A |
CWE-427 | Uncontrolled Search Path Element |
|
CWE-863 | Incorrect Authorization |
|
CWE-269 | Improper Privilege Management |
|
CWE-732 | Incorrect Permission Assignment for Critical Resource |
|
CWE-843 | Access of Resource Using Incompatible Type ('Type Confusion') |
|
CWE-668 | Exposure of Resource to Wrong Sphere |
|
CWE-200 | Exposure of Sensitive Information to an Unauthorized Actor |
|
CWE-1321 | Improperly Controlled Modification of Object Prototype Attributes ('Prototype Pollution') | N/A |
CWE-601 | URL Redirection to Untrusted Site ('Open Redirect') | N/A |
CWE-401 | Missing Release of Memory after Effective Lifetime |
|
CWE-59 | Improper Link Resolution Before File Access ('Link Following') |
|
CWE-522 | Insufficiently Protected Credentials | N/A |
CWE-319 | Cleartext Transmission of Sensitive Information | N/A |
CWE-312 | Cleartext Storage of Sensitive Information |
|
CWE Top 25 2019 のマッピング
CWE ID | CWE 名 | Parasoft ルール ID |
---|---|---|
CWE-119 | Improper Restriction of Operations within the Bounds of a Memory Buffer |
|
CWE-79 | Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting') | N/A |
CWE-20 | Improper Input Validation |
|
CWE-200 | Information Exposure |
|
CWE-125 | Out-of-bounds Read |
|
CWE-89 | Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection') |
|
CWE-416 | Use After Free |
|
CWE-190 | Integer Overflow or Wraparound |
|
CWE-352 | Cross-Site Request Forgery (CSRF) | N/A |
CWE-22 | Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal') |
|
CWE-78 | Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection') |
|
CWE-787 | Out-of-bounds Write |
|
CWE-287 | Improper Authentication |
|
CWE-476 | NULL Pointer Dereference |
|
CWE-732 | Incorrect Permission Assignment for Critical Resource |
|
CWE-434 | Unrestricted Upload of File with Dangerous Type | N/A |
CWE-611 | Improper Restriction of XML External Entity Reference |
|
CWE-94 | Improper Control of Generation of Code ('Code Injection') | N/A |
CWE-798 | Use of Hard-coded Credentials |
|
CWE-400 | Uncontrolled Resource Consumption |
|
CWE-772 | Missing Release of Resource after Effective Lifetime |
|
CWE-426 | Untrusted Search Path |
|
CWE-502 | Deserialization of Untrusted Data | N/A |
CWE-269 | Improper Privilege Management |
|
CWE-295 | Improper Certificate Validation | N/A |
CWE Weaknesses On the Cusp 2019 のマッピング
CWE ID | CWE 名 | Parasoft ルール ID |
---|---|---|
CWE-835 | Loop with Unreachable Exit Condition ('Infinite Loop') |
|
CWE-522 | Insufficiently Protected Credentials | N/A |
CWE-704 | Incorrect Type Conversion or Cast |
|
CWE-362 | Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition') |
|
CWE-918 | Server-Side Request Forgery (SSRF) | N/A |
CWE-415 | Double Free |
|
CWE-601 | URL Redirection to Untrusted Site ('Open Redirect') | N/A |
CWE-863 | Incorrect Authorization |
|
CWE-862 | Missing Authorization | N/A |
CWE-532 | Inclusion of Sensitive Information in Log Files |
|
CWE-306 | Missing Authentication for Critical Function | N/A |
CWE-384 | Session Fixation | N/A |
CWE-326 | Inadequate Encryption Strength |
|
CWE-770 | Allocation of Resources Without Limits or Throttling |
|
CWE-617 | Reachable Assertion |
|