このセクションでは、C++test に付属のビルトイン テスト コンフィギュレーションについて説明します。
C++test には、最も一般的に使用されるテスト シナリオを表したビルトイン テスト コンフィギュレーションが用意されています。ビルトイン テスト コンフィギュレーションをコピーして変更するか、新規にユーザー定義テスト コンフィギュレーションを作成することによって、ニーズに合わせてテスト コンフィギュレーションをカスタマイズできます。ユーザー定義テスト コンフィギュレーションは、[ユーザー定義] または [チーム] カテゴリに保管できます。ローカル マシンに保存されたユーザー定義テスト コンフィギュレーションは、ローカルの C++test で実行されるすべてのテ ストで利用可能です。チームの Team Server に格納されたチーム テスト コンフィギュレーションにはチーム メンバー全員がアクセスできます。
Static Analysis グループ
このグループには、汎用的な静的解析テスト コンフィギュレーションが含まれます。コーディング標準を推進するテスト コンフィギュレーションについては「Compliance Packs」を参照してください。
テスト コンフィギュレーション | 説明 |
---|---|
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 のルールにマッピングされているかについては、「Compliance Packs Rule Mapping」を参照してください。
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) を推進するルールをチェックします。 このテスト コンフィギュレーションは、Parasoft Compliance Pack ソリューションの一部です。DTP の Compliance 拡張機能を使用して業界標準へのコンプライアンスをモニターできます。専用のライセンス機能を有効化する必要があります。詳細は Parasoft 製品担当者にお問い合わせください。 |
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 2012 | MISRA C 2012 コーディング規約を推進するルールをチェックします。 このテスト コンフィギュレーションは、Parasoft Compliance Pack ソリューションの一部です。DTP の Compliance 拡張機能を使用して業界標準へのコンプライアンスをモニターできます。専用のライセンス機能を有効化する必要があります。詳細は Parasoft 製品担当者にお問い合わせください。 |
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 2019 | CWE の Top 25 Most Dangerous Programming Errors として分類された問題を検出するルールを含みます。 このテスト コンフィギュレーションは、Parasoft Compliance Pack ソリューションの一部です。DTP の Compliance 拡張機能を使用して業界標準へのコンプライアンスをモニターできます。 |
CWE Top 25 2019 + On the Cusp | CWE の Top 25 Most Dangerous Programming Errors として分類された問題または CWE Weaknesses On the Cuspリストに含まれる問題を検出するルールを含みます。 このテスト コンフィギュレーションは、Parasoft Compliance Pack ソリューションの一部です。DTP の Compliance 拡張機能を使用して業界標準へのコンプライアンスをモニターできます。 |
OWASP Top 10 2017 | OWASP のセキュリティ脆弱性トップ 10 で識別された問題を検出するルールを含みます。 このテスト コンフィギュレーションは、Parasoft Compliance Pack ソリューションの一部です。DTP の Compliance 拡張機能を使用して業界標準へのコンプライアンスをモニターできます。専用のライセンス機能を有効化する必要があります。詳細は Parasoft 製品担当者にお問い合わせください。 |
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 コーディング スタンダードのルールをチェックし ます。このコーディング スタンダードは、セキュア コーディングのためのガイドラインを提供します。その目的は (たとえば未定義のプログラム動作や悪用可能な脆弱性をもたらしかねない未定義の動作を排除することによって) 安全で信頼でき、セキュアなシステムの開発を容易にすることです。 このテスト コンフィギュレーションは、Parasoft Compliance Pack ソリューションの一部です。DTP の Compliance 拡張機能を使用して業界標準へのコンプライアンスをモニターできます。専用のライセンス機能を有効化する必要があります。詳細は Parasoft 製品担当者にお問い合わせください。 |
SEI CERT C++ Rules | SEI CERT C++ コーディング スタンダードのルールをチェックします。このコーディング スタンダードは、セキュア コーディングの ためのガイドラインを提供します。その目的は (たとえば未定義の プログラム動作や悪用可能な脆弱性をもたらしかねない未定義の動作を排除することによって) 安全で信頼でき、セキュアなシステムの開発を容易にすることです。 このテスト コンフィギュレーションは、Parasoft Compliance Pack ソリューションの一部です。DTP の Compliance 拡張機能を使用して業界標準へのコンプライアンスをモニターできます。専用のライセンス機能を有効化する必要があります。詳細は Parasoft 製品担当者にお問い合わせください。 |
UL 2900 | UL-2900 標準で識別された問題を検出するルールを含みます。 |
Unit Testing グループ
テスト コンフィギュレーション | 説明 |
---|---|
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 | 利用可能なテスト ケースを実行し、メモリの問題についての情報を収集します。 すべてのプロジェクト ファイルをインストゥルメントします。 |
Application 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 にロードします。「複数のテスト実行から結果をマージする」を参照してください。 |
Code Review グループ
名前 | スコープ | コード レビュー |
---|---|---|
Pre-Commit | ローカルで追加または変更されたファイルのみ | ソース管理システムにコミットする「前」にコードをレビューしたいチームに適しています。 このテスト コンフィギュレーションを使用するには、コード レビューの設定で [ スキャナー実行中にユーザー補助を表示] チェックボックスをオンにし、適切なレビューアーを作成者が指名できるようにしなければなりません。詳細は「コード レビュー」を参照してください。 |
Post-Commit | 前日に変更されたすべてのプロジェクト ファイル | ソース管理システムにコミットした「後」にコードをレビューしたいチームに適しています。 このテスト コンフィギュレーションは、複製してカスタマイズしてから使用します (作成者-レビューアー マッピングを指定するなど)。詳細は「コード レビュー」を参照してください。 |
プロジェクトやチームの優先順位に合わせてユーザー定義テスト コンフィギュレーションを作成する方法については、「テストコンフィギュレーションとルールの設定」を参照してください。
コンプライアンス パックのルールのマッピング
このセクションは、CWE 標準用のルール マッピングを示します。他の標準のマッピング情報は、コンプライアンス パックとともに提供される PDF ルール マッピング ファイルに記載されています。
CWE Top 25 のマッピング
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 のマッピング
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 | N/A |
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 |
|