このセクションでは、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 STLScott 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-AlexandrescuHerb Sutter と Andrei Alexandrescu の『C++ Coding Standards』に基づいたルールをチェックします。
The Power of TenGerard 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」を参照してください。

コンプライアンスの結果を DTP で表示する

このカテゴリの一部のテスト コンフィギュレーションには、対応する DTP の拡張機能があります。拡張機能を利用すると、セキュリティ コンプライアンスのステータスを参照したり、コンプライアンス レポートを生成したり、セキュリティ コンプライアンスのゴールに向けた進捗をモニターしたりできます。  コンプライアンス パックを使用するには、専用のライセンス機能をアクティベートする必要があります。コンプライアンス パック ライセンスの詳細については、Parasoft 製品サポートにご連絡ください。

利用可能な拡張機能の一覧、要件、使用方法については、DTP のマニュアルの「DTP の拡張」セクションを参照してください。

Aerospace Pack

テスト コンフィギュレーション 説明
Joint Strike FighterJoint 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) を推進するルールをチェックします。

(info) このテスト コンフィギュレーションは、Parasoft Compliance Pack ソリューションの一部です。DTP の Compliance 拡張機能を使用して業界標準へのコンプライアンスをモニターできます。専用のライセンス機能を有効化する必要があります。詳細は Parasoft 製品担当者にお問い合わせください。

High Integrity C++High Integrity C++ Coding 標準を推進するルールをチェックします。
HIS Source Code MetricsHerstellerinitiative Software (HIS) グループによって要求されるメトリクスをチェックします。
MISRA C 1998MISRA C コーディング規約を推進するルールをチェックします。
MISRA C 2004MISRA C 2004 コーディング規約を推進するルールをチェックします。
MISRA C++ 2008MISRA C++ 2008 コーディング規約を推進するルールをチェックします。
MISRA C 2012

MISRA C 2012 コーディング規約を推進するルールをチェックします。

(info) このテスト コンフィギュレーションは、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 として分類された問題を検出するルールを含みます。

(info) このテスト コンフィギュレーションは、Parasoft Compliance Pack ソリューションの一部です。DTP の Compliance 拡張機能を使用して業界標準へのコンプライアンスをモニターできます。

CWE Top 25 2019 + On the Cusp

CWE の Top 25 Most Dangerous Programming Errors として分類された問題または CWE Weaknesses On the Cuspリストに含まれる問題を検出するルールを含みます。

(info) このテスト コンフィギュレーションは、Parasoft Compliance Pack ソリューションの一部です。DTP の Compliance 拡張機能を使用して業界標準へのコンプライアンスをモニターできます。

OWASP Top 10 2017

OWASP のセキュリティ脆弱性トップ 10 で識別された問題を検出するルールを含みます。

(info) このテスト コンフィギュレーションは、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 GuidelinesSEI CERT C コーディング スタンダードのルールとリコメンデーションをチェックします。このコーディング スタンダードは、セキュア コーディングのためのガイドラインを提供します。その目的は (たとえば未定義のプログラム動作や悪用可能な脆弱性をもたらしかねない未定義の動作を排除することによって) 安全で信頼でき、セキュアなシステムの開発を容易にすることです。
SEI CERT C Rules

SEI CERT C コーディング スタンダードのルールをチェックし ます。このコーディング スタンダードは、セキュア コーディングのためのガイドラインを提供します。その目的は (たとえば未定義のプログラム動作や悪用可能な脆弱性をもたらしかねない未定義の動作を排除することによって) 安全で信頼でき、セキュアなシステムの開発を容易にすることです。

(info) このテスト コンフィギュレーションは、Parasoft Compliance Pack ソリューションの一部です。DTP の Compliance 拡張機能を使用して業界標準へのコンプライアンスをモニターできます。専用のライセンス機能を有効化する必要があります。詳細は Parasoft 製品担当者にお問い合わせください。

SEI CERT C++ Rules

SEI CERT C++ コーディング スタンダードのルールをチェックします。このコーディング スタンダードは、セキュア コーディングの ためのガイドラインを提供します。その目的は (たとえば未定義の プログラム動作や悪用可能な脆弱性をもたらしかねない未定義の動作を排除することによって) 安全で信頼でき、セキュアなシステムの開発を容易にすることです。

(info) このテスト コンフィギュレーションは、Parasoft Compliance Pack ソリューションの一部です。DTP の Compliance 拡張機能を使用して業界標準へのコンプライアンスをモニターできます。専用のライセンス機能を有効化する必要があります。詳細は Parasoft 製品担当者にお問い合わせください。

UL 2900UL-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)

ファイル チャネルを介してテスト結果を収集します。デフォルトでは、このテスト コンフィギュレーションは ${cpptest:testware_loc} 中にログがあると想定します。必要に応じて、この場所は、C++test GUI からアクセスできるファイル システム上の任意の場所に変更できます。

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 Coveragecpptestcc で収集されたカバレッジ データを 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-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

CWE-79

Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

N/A

CWE-20

Improper Input Validation

  • CWE-20-a
  • CWE-20-b
  • CWE-20-c
  • CWE-20-d
  • CWE-20-e
  • CWE-20-f
  • CWE-20-g
  • CWE-20-h
  • CWE-20-i
  • CWE-20-j

CWE-200

Information Exposure

  • CWE-200-a

CWE-125

Out-of-bounds Read

  • CWE-125-a
  • CWE-125-b
  • CWE-125-c
  • CWE-125-d

CWE-89

Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')

  • CWE-89-a

CWE-416

Use After Free

  • CWE-416-a
  • CWE-416-b
  • CWE-416-c

CWE-190

Integer Overflow or Wraparound

  • CWE-190-a
  • CWE-190-b
  • CWE-190-c
  • CWE-190-d
  • CWE-190-e
  • CWE-190-f
  • CWE-190-g

CWE-352

Cross-Site Request Forgery (CSRF)

N/A

CWE-22

Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')

  • CWE-22-a

CWE-78

Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')

  • CWE-78-a

CWE-787

Out-of-bounds Write

  • CWE-787-a
  • CWE-787-b
  • CWE-787-c
  • CWE-787-d
  • CWE-787-e
  • CWE-787-f

CWE-287

Improper Authentication

  • CWE-287-a

CWE-476

NULL Pointer Dereference

  • CWE-476-a
  • CWE-476-b

CWE-732

Incorrect Permission Assignment for Critical Resource

  • CWE-732-a
  • CWE-732-b

CWE-434

Unrestricted Upload of File with Dangerous Type

N/A

CWE-611

Improper Restriction of XML External Entity Reference

  • CWE-611-a

CWE-94

Improper Control of Generation of Code ('Code Injection')

N/A

CWE-798

Use of Hard-coded Credentials

  • CWE-798-a

CWE-400

Uncontrolled Resource Consumption

  • CWE-400-a

CWE-772

Missing Release of Resource after Effective Lifetime

  • CWE-772-a
  • CWE-772-b

CWE-426

Untrusted Search Path

  • CWE-426-a

CWE-502

Deserialization of Untrusted Data

N/A

CWE-269

Improper Privilege Management

  • CWE-269-a
  • CWE-269-b

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-835-a

CWE-522

Insufficiently Protected Credentials

N/A

CWE-704

Incorrect Type Conversion or Cast

  • CWE-704-a
  • CWE-704-b
  • CWE-704-c
  • CWE-704-d
  • CWE-704-e
  • CWE-704-f
  • CWE-704-g
  • CWE-704-h
  • CWE-704-i
  • CWE-704-j
  • CWE-704-k
  • CWE-704-l

CWE-362

Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')

  • CWE-362-a
  • CWE-362-b
  • CWE-362-c
  • CWE-362-d
  • CWE-362-e

CWE-918

Server-Side Request Forgery (SSRF)

N/A

CWE-415

Double Free

  • CWE-415-a

CWE-601

URL Redirection to Untrusted Site ('Open Redirect')

N/A

CWE-863

Incorrect Authorization

  • CWE-863-a

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-326-a

CWE-770

Allocation of Resources Without Limits or Throttling

  • CWE-770-a

CWE-617

Reachable Assertion

  • CWE-617-a
  • No labels