このセクションでは、 「コマンドライン インターフェイス (cli)」で説明されている C/C++test コマンドライン インターフェイス (cpptestcli) からテストを実行する方法について説明します。

このセクションの内容

前提条件

コマンドライン モードを使用するには、コマンドライン インターフェイスのライセンスが必要です (C/C++test Automation Edition に付属)。

ライセンス: Extended Command Line Mode と Desktop Command Line Mode

C/C++test で利用できるコマンド ライン インターフェイスのライセンスは 2 つあります。

  1. Extended Command Line Mode は Automation Edition に含まれており、Custom Edition でも利用できます。
  2. Desktop Command Line Mode は Custom Edition で利用できます。Desktop Command Line Mode は、Extended Command Line Mode に似た機能を提供します。 ただし、並列処理において、特定のタスク (たとえば静的解析) に対して同時に実行でき る並列スレッドは 8 個までです。
  • テストを開始する前に、「設定」の説明に従って C/C++test の環境設定を行うことを強く推奨します。
  • コマンドラインからテストを実行するには、C/C++test のインストール ディレクトリをパスに設定する必要があります。 パスに設定しない場合は、c:\parasoft\c++test\cpptestcli.exe のように絶対パスで cpptest を実行する必要があります。C/C++test でコードをテストするには、Visual Studio プロジェクトにコードを追加する必要があります。「プロジェクトの作成」を参照してください。

  • 初期テストを実行する前に、プロジェクト オプションを確認して変更することを強く推奨し ます。詳細については「設定ファイル (オプション ファイル)」を参照してください。
  • cpptestcli から各開発者の作業に関連したエラー/ 結果だけを開発者に送信するには、次のいずれかの条件を満たす必要があります。

    • 「ソース管理システムのデータに基づいてコード作成者を算定するように C/C++test を設定している」かつ「ソース管理システムを使用している」かつ「ソース管理システムでの各開発者のユーザー名とメール ドメインが開発者の電子 メール アドレスに一致している」 ( メール ドメインはオプション ファイルおよび「-settings %SETTINGS_FILE%」で解説の -settings オプションを使って指定)

    • 「ローカル ユーザーに基づいてコード作成者を算定するように C/C++test を設定している」かつ 「ユーザー名およびメール ドメインが開発者の電子メール アドレスに一致している」 (メール ドメインはオプション ファイルおよび「-settings %SETTINGS_FILE%」で解説の -settings オプションを使って指定 )」

セットアップの概要

Parasoft C/C++test Professional には 2 つのユーザー モードがあります。インタラクティブにデスクトップで C/C++test を 使用する「GUI モード」とコマンドライン インターフェイスを介して実行する「コマンドライン」モードです。コマンドライン インターフェイスは Automation Edition の標準機能です。 

コマンドライン モードは通常、定期的/ 継続的なビルドまたは自動回帰テストのインフラストラク チャと連携して、定期的/ 継続的なコード解析とテストを実行するために使用します。C/C++test の コマンドライン インターフェイスは、 Visual Studio ソリューション全体、またはソリューションの一部である 1 つ以上のプロジェクトまたはソースファイルに対して実行できます。 コマン ドライン インターフェイスの実行の一部として、C/C++test は次の 1 つ以上のことを実行します。

  • コードの静的解析。定義されたコーディング ポリシーのチェック、実行時のバグの可能性の解析、メトリクスの解析を含みます。
  • 単体テストの実行(任意のソリューションで)

  • SCM コード リポジトリの解析。最後の実行後のコードの変更を特定し、更新されたコード に対するコード レビュー セッションを開始します。
  • レポートの生成と集約レポート サーバーへの送信。または開発者とマネージャーへの送信。 レポート設定での指定に従って送信されます。

実行の一部として、C/C++test は (サポートされている場合) SCM クライアントを使って SCM システムから自動的にファイルの変更情報を取得します。そしてコード解析と実行されたテストの結果に基づいて特定の個人のためのタスクを生成します。

C/C++test 固有の実行オプションはテスト コンフィギュレーションと環境設定によって制御されま す。

テスト コンフィギュレーションについては、C/C++test のビルトイン テスト コンフィギュレーションをベースにして作成することも、GUI モードで新規に作成することもできます。ビルトイン テスト コンフィギュレーションは、そのまま使用するのではなく、ユーザー定義テスト コンフィギュレーションのためのテンプレートとして利用することを推奨します。

環境設定は C/C++test GUI から設定できます。ほとんどの環境設定は、コマンドライン インターフェイスの呼び出しにパラメーターとして渡される構成ファイルからも設定できます。設定ファイルの詳細については「設定ファイル ( オプション ファイル)」 を参照してください。GUI で設定した C/C++test の環境設定はデフォルトで適用されます。GUI の設定は、コマン ドライン モードで使用される構成ファイルの値で個別に上書きできます。そのため、ユーザーはす べてのコマンドライン実行で使用される基本的な環境設定を保持しつつ、必要に応じて特定のテスト コンフィギュレーションの特定の実行用に設定ファイルを用意できます。たとえば、テスト実行ごと に異なる情報をレポートに含める場合や、レポート名や E-mail ヘッダーなどのレポートの E-mail オプションを変更する場合などにこの方法が役立ちます。

ステップ 1: 環境設定

C/C++test の環境設定を見るには、[Parasoft] メニューの [設定] をクリックします。次の設定から開始します。

  • ライセンス: ライセンス設定または License Sever 設定を指定します。
  • DTP: DTP サーバー設定を指定します。
  • ソース管理: この設定を行うと、影響があったコードまたはテスト成果物を最後に変更した個人に対して、ツールの結果を自動的にマップすることができます。ソース管理システムを チェックし、「ソース管理リポジトリとの接続」の説明に従って SCM に適したオプションを設定します。
  • スコープと作成者: 「タスクの割り当てとコード作成者の設定」にあるように、環境に適したオプションを有効にします。
  • レポート: 次のオプションはデフォルトで有効であり、このオプションから開始するのが適しています。

    • 詳細な開発者レポート (タスクの詳細を含む)

    • 作成者ごとのタスクの概要(概要の表)

    • 抑制の詳細 (静的解析のみに適用される)

  • E-mail: レポートを E-mail で送信するための設定です。C/C++test テスト マシンからアクセスできるメール サーバー上にある、既存の E-mail アカウントを指定する必要があります。

  • レポート > E-mail 通知:

    • 必要に応じて [レポートを E-mail で送信する] を有効にします。メールの配信には上記の [E-mail] の設定が使用されます。

    • マネージャー レポートには、C/C++test が生成したすべてのテスト結果が含まれます。開発者レポートには、個々の開発者のテスト結果だけが含まれます。適切なオプションを有効にし、E-mail アドレスを指定します。

ステップ 2: テスト コンフィギュレーションのカスタマイズ

テスト コンフィギュレーションの設定」の説明に従ってユーザー定義テスト コンフィギュレーションを作成します。

ステップ 3: 設定ファイルの作成

設定ファイル (オプション ファイル)」の説明にあるように設定ファイルを作成します。

ステップ 4: 現在実行中のビルド システムでコマンドライン インター フェイスをアクティブにする (たとえばバッチ スクリプト)

たとえば、コマンドは次のようになります。

  • cpptestcli -solution "c:\MySolution" -resource "ProjectToTest" -config builtin://ShouldHaveRules -publish -settings acme_policy.settings
レポートは各バッチ実行の後に Parasoft DTP に送信されます。

テストの実行

コマンドラインからテストを実行するための全般的な手順は次のとおりです。

  • 適切なオプションを指定して cpptestcli ユーティリティを使用し、コマンドライン モードでテストを実行します。利用できるすべてのオプションの一覧については「コマンドライン オプション」を参照してください。主要なオプションは次のとおりです。
    • -config: テスト コンフィギュレーション。
    • -resource: テスト対象のリソース (たとえばプロジェクト、フォルダー、ファイル)。
    • -publish: DTP に結果をパブリッシュします。
    • -report: レポートを生成します。
    • -settings: Parasoft DTP/メール レポートの詳細設定を渡します。詳細については「設定ファイル (オプション ファイル)」 を参照してください。

ヘッダーのテスト

C/C++test は、テスト対象のソース ファイルがヘッダーをインクルードしていない限り、ヘッダーを直接テストしません。詳細については「ヘッダー ファイルを解析するには ? どのファイルが解析されるのか ?」 を参照してください。

テンプレート関数のテスト

C/C++test は、インスタンス化された関数テンプレートとインスタンス化されたクラス テンプレートのメンバーに対して静的解析と単体テストを実行できます。詳細は「C++ テンプレート関数のサポート」を参照してください。

注意 Windows でのコマンドライン テスト

  • C/C++test は、Cygwin の "/cygdrive/DISK/PATH" 書式を使って指定されたファイル パスをサポートしません。標準的な Windows のパス書式を使用してください。
  • シェル/ コンソールによって、ファイル パスのバックスラッシュを 2 つ重ねてエスケープする必要があります。例:"C:\\MyLocation\\MyFile"
  • -settings オプションを使ってオプション ファイルでファイル パスを使用する場合、ファイル パス中のすべてのバックスラッシュは 2 つ重ねてエスケープする必要があります。またはスラッシュを使用できます。例:"C:/MyLocation/MyFile"

cli の呼び出し

cpptestcli の一般的な書式は次のとおりです。

  • cpptestcli [OPTIONS]

通常、cpptestcli の呼び出しには次の書式を使用します。

特定のプロジェクト リソースを解析/ テストの対象から除外するには

一部のファイルを解析/ テストから除外する場合 (たとえば自動生成ファイルを静的解析の対象から外す場合など)、解析/ テストの対象から外すリソースを指定できます。詳細については「テストから除外するリソースの指定」を参照してください。この設定を GUI で行うと、GUI からでもコマンドラインからでも、このプロジェクトのすべてのテストに対して設定が適用されます。

コマンドライン オプション

利用できる cpptestcli のオプションは次のとおりです。

全般的なオプション

  • -config %CONFIG_URL% - 実行する テスト コンフィギュレーションを %CONFIG_URL% で指定します。
    プロジェクトをインストールするときを除き、このパラメーターは必須です。%CONFIG_URL% は、 URL 、ビルトイン テストコンフィギュレーションの名前、またはローカル ファイルへのパスとして解釈されます。例:
    • ファイル名:
      -config "mylocalconfig.properties"
    • URL:
      -config "http://intranet.acme.com/cpptest/team_config.properties"
    • ビルトイン コンフィギュレーション:
      -config "builtin://Demo Configuration"
      -config "Demo Configuration"
    • ユーザー定義コンフィギュレーション:
      -config "user://My First Configuration"
    • チーム コンフィギュレーション:
      -config "team://Team Configuration"
      -config "team://teamconfig.properties"
  • -helpヘルプ情報を表示します。テストは実行しません。
  • -settings %SETTINGS_FILE% - オプション ファイル %SETTINGS_FILE% からグローバル設定を読み込みます。グローバル設定には、Parasoft DTP、電子メール、電子 などの設定があります。
    オプション ファイルはプロパティ ファイルです。オプション ファイルは、レポート (レポートの送信先、レポートのラベル、メール サーバー、メール ドメインなど)、Parasoft DTP Server、電子メールの設定などを制御できます。 

複数の設定ファイルを適用できます。先に指定されたファイルの設定は、後に指定されたファイルの設定で上書きされます。 オプション ファイルの作成の詳細については設定ファイル (オプション ファイル)を参照してください。

  • -property <key>=<value>コマンド ラインで直接 1 つの設定を指定できます。次の形式を使用します: key=value

    このオプションを複数回使用して、1 つのコマンド ラインで複数の設定を指定できます。同じキーのエントリが複数ある場合、先に指定されたエントリは上書きされます。例:

    • -property session.tag=sa_linux -property report.dtp.publish=true -property techsupport.auto_creation=true

-settings オプションを使用して指定したエントリは、常に -property オプション設定に上書きされます (コマンド ラインでオプションが指定された順番にかかわらず)。

  • -nobuildテスト前にプロジェクトをビルドしないようにします。テストの実行前にすでにプロジェクトをビルドしている場合、このオプションを使用します。
  • -fail違反またはセットアップの問題がレポートされた場合、ゼロ以外の終了コードを返してビルドを失敗させます (プロセスが失敗したときに返される終了コードについては「コマンド ラインの終了コード」を参照)。
  • -publish - レポートを DTP にパブリッシュします。DTP の場所は、GUI またはオプション ファイルで指定できます(DTPとの接続を参照)。
  • -report %REPORT_FILE% - %REPORT_FILE% で指定した XML レポートと HTML レポート (または、report.format オプションを指定した場合、1 つ以上の他の形式のレポート) を生成します。拡張子が異なる、同じ名前のレポートが、同じディレクトリに生成されます。
    次のすべてのコマンドは、 HTML レポートfilename.html および XML レポートfilename.xml を生成します。
    • -report filename.xml
    • -report filename.htm
    • -report filename.html

    ユーザーが指定したパスが拡張子 .html、.htm、.xml で終了している場合、このパスは、生成する HTML レポート ファイルへのパスとして扱われます。そうでない場合、パスはレポートを生成するディレクトリとして扱われます。
    ファイル名を明示的に指定していて、指定ディレクトリに同じ名前のファイルがすでに存在する場合、既存のファイルは上書きされます。ファイル名を明示的に指定していない場合、既存のファイルは上書きされません。新しいファイル名は repXXXX.html となります。 XXXX はランダムな数字です。
    -report を指定しない場合、レポート ファイルはデフォルトの名前 "report.xml/html" で現行ディレクトリに作成されます。

  • -dtp.autoconfig %PROJECT_NAME@BASE_URL% - DTP サーバーに格納された設定を取得します (保守を容易にするために推奨します。特にローカルに格納したローカル設定ファイルがまだない場合に推奨します)。
    例:
    -dtp.autoconfig Project1@https://dtp.company.com:8443

  • -encodepass <plainpassword> - 暗号化したパスワードを生成します。「Encrypted password: <encpass>」というメッセージを表示し、cli アプリケーションを終了します。
    夜間プロセスが電子メールを送信する場合、このオプションを使って必須のパスワードを暗号化することができます。

  • -showdetails詳細なテスト進行状況の情報を表示します。

  • -showsettings - 現在の設定およびカスタマイズの状況を出力します。各構成エントリがどこで指定されているか (.properties ファイルなど) を表示します。指定できるオプションの一覧は「設定ファイルでの指定」を参照してください。

  • -disablescm - ソリューションとプロジェクトをソース管理情報から切り離します。
    ソース管理情報からソリューションとプロジェクトを切り離すことが有用な場合があります。例えば、コマンドラインモードでテストを実行している最中に、ソース管理プラグインにユーザー入力要求が達しないようにする場合などです。ソース管理情報はテストの実行後に復元されます。.sln ソリューションファイルまたは .vcproj プロジェクトファイルを変更して、ソース管理を無効化/ 有効化します。
    このオプションを使用するには、.sln および .vcproj ファイルを必ず書き込み可能にしてください。または、これらのファイルを書き込み可能にする権限があるユーザーアカウントから C/C++test を実行してください。
  • -solutionConfig %SOLUTION_CONFIG_NAME% - ソリューションのビルドおよび解析に使用するソリューション構成を指定します。 Debug Release は一般的な名前です。スイッチを省略する場合、アクティブ構成が使用されます。アクティブ構成は突然変わる可能性があるため、ソリューション構成を指定することを強く推奨します。
  • -targetPlatform %TARGET_PLATFORM_NAME% - ソリューションのビルドおよび解析に使用するターゲットプラットフォームを指定します。 Any CPU とx86 は一般的な名前です。省略する場合、アクティブ構成が使用されます。アクティブ構成は突然変わる可能性があるため、ターゲットプラットフォームを指定することを強く推奨します。

  • -appconsole stdout|% OUTPUT_FILE% C/C++test のコンソール出力を標準出力または %OUTPUT_FILE% ファイルにリダイレクトします。
    例:
    -appconsole stdout (標準出力にリダイレクトされるコンソール)
    -appconsole console.out (console.out file ファイルにリダイレクトされるコンソール)
  • -list-compilers有効なコンパイラの種類の値を出力します。  このオプションは -solution とともに使用する必要があります。

  • -list-configs有効なテスト コンフィギュレーションの値を出力します。 このオプションは -solution とともに使用する必要があります。

  • -bdf - 入力スコープを収集するための既存のビルド データ ファイル (.bdf) または別のプロジェクト定義ファイルへのパスを指定します。ビルド データ ファイルの作成については「cpptestscan または cpptesttrace を使ってビルド データ ファイルを作成する」を参照してください。このオプションは、静的解析を実行する場合、CMake ビルド システムによって生成されるJ SON フォーマットのファイルもサポートします。単体テスト実行での -bdf オプションを使用した JSON ファイルの指定は、現在サポートされていません。  
  • -include %PATTERN%, -exclude %PATTERN% - テストに含める/除外するファイルを指定します。
    このオプションの後に、ファイル名またはパスを指定する必要があります。
    ファイル名の指定にはワイルドカード * および? を使用できます。1 つ以上のパス名のセグメントを指定するには ** を使用します。シンタックスのパターンは Ant ファイル セットの指定に似ています。
    例:
    -include **/Bank.cpp (Bank.cpp ファイルをテストする)

    -include **/ATM/Bank/*.cpp (ATM/Bank フォルダー中のすべての .cpp ファイルをテストする)

    -include c:/ATM/Bank/Bank.cpp (c:/ATM/Bank/Bank.cpp ファイルだけをテストする)

    -exclude **/internal/** (パス中に "internal" というフォルダーがあるクラスをテストから除外する)

    -exclude **/*Test.cpp (Test.cpp で名前が終わるファイルをテストから除外する)

    さらに、拡張子が.lst のファイルを指定した場合、このファイルはパターン リスト ファイルとして扱われ、ファイル中の各行が1 つのパターンとして扱われます。
    たとえば、次のようにオプションを設定し、-include c:/include.lstinclude.lst ファイルの内容が次のとおりであるものとします。
    **/Bank.cpp

    **/ATM/Bank/*.cpp

    c:/ATM/Bank/Bank.cpp

    この設定は、次のオプション設定と同じことになります。
    -include **/Bank.cpp -include **/ATM/Bank/*.cpp

    -include c:/ATM/Bank/Bank.cpp"


  • -useenv - Visual C++ のコンパイルで、[オプション] ダイアログのプロジェクトのオプションの [VC++ ディレクトリ] で指定された設定ではなく、環境変数 PATH、INCLUDE、および LIB を使用します。
  • -clearcmc - Visual Studio のコンポーネント モデル キャッシュを消去します。

Visual Studio IDE でプロジェクトをテストするためのオプション

オプション目的説明

-solution %SOLUTION_FILE%-solution %SOLUTION_FILE%使用するソリューションファイルの場所を指定します。

使用するソリューションファイルの場所を指定します。使用するソリューションファイルの場所を指定します。

N/A使用するソリューションファイルの場所を指定します。

-resource %RESOURCE%

テストするワークスペース リソースへのパスを %RESOURCE% で指定します。

複数のリソースを指定する場合は、このオプションを複数回使用します。

英数字以外の文字またはスペースがリソース パスに含まれる場合、値を引用符で囲みます。

%RESOURCE% が .properties ファイルの場合、com.parasoft.eclipse.checker.core.resources キーに対応する値がリソースのコロン (:) 区切りリストとして解釈されます。したがって、指定できるのは 1 つの properties ファイルだけです。%RESOURCE% が .lst ファイルの場合、各行が 1 つのリソースとして扱われます。コマンドラインでリソースを指定しない場合、ワークスペース全体がテストされます。

例えば、C/C++test ATM サンプルプログラム中のファイル ATM.cxx をテストするために、次のコマンドを使用できます。-resource "ATM/Source Files/ATM.cxx" (ソリューション名なし)

または

-resource "Examples/ATM/Source Files/ATM.cxx" (ソリューション名を指定)

その他の例:

-resource "MySolution/MyProject"

-resource "MySolution/MyProject/Source Files"

-resource "MySolution/MyProject/SourceFiles/MyClass.cpp"

-resource "c:\testedprojects.properties"

注意

  • 有効なコマンドライン オプションのリストを参照するには、 cpptestcli -help を実行してください。
  • cpptestcli は、指定されたグループ マネージャーとアーキテクトにレポートを自動的に送信します。このレポートには、チームとプロジェクトのすべてのエラーが記載されると共に、エラー箇所を担当した開発者名も記載されます。エラーが発見されなかった場合でも、オプション ファイルで report.mail.on.error.only=true を設定していない限り、レポートは送信されます。
  • 適切な前提条件が満たされた場合、cpptestcli は各開発者に担当部分のエラー/ 結果だけのレポートを送信します。開発者の担当部分でエラーがレポートされなかった場合、その開発者にはレポートが送信されません。

設定ファイル (オプション ファイル)

設定ファイルをコマンドラインで渡して、レポート、タスクの割り当て、ライセンスといったオプションを制御することができます。ローカル設定ファイルを使用すると、以下のことが可能です。

  • プロジェクトごとに異なる設定を使用することができます。
  • 必要に応じてチーム全体の設定を拡張したり上書きすることができます (例えばローカルパスに関連する設定など)。
  • GUI を開かずに設定を変更できます。

プロジェクトごとにオプション ファイルを作成し、-settings オプションを使ってどのファイルを使用するかを指定できます。

設定ファイルの詳細および利用可能なオプションの一覧は、「設定ファイルでの指定」を参照してください。

  • No labels