このセクションの内容

はじめに

GNU make、CMake、QMake といったビルド ツールを使用している場合、cpptestscan または cpptesttrace ユーティリティを使用して、C++test プロジェクトを作成することができます。これらのユーティリティは、プロジェクトを自動作成するために C++test が使用できる既存のコードの ビルド プロセスから情報を収集します。ユーティリティが収集した情報を使って、プロジェクトを ビルドして手動で構成することもできます。

ビルド データ ファイルの概念

作業ディレクトリ、コンパイルのコマンドライン オプション、オリジナル ビルドのリンク プロセスといったビルド情報は、「ビルド データ ファイル」というファイルに保存されます。以下のサンプルはビルド データ ファイルからの抜粋です。

------- cpptestscan v. 9.4.x.x -------
working_dir=/home/place/project/hypnos/pscom
project_name=pscom
arg=g++
arg=-c
arg=src/io/Path.cc
arg=-Iinclude
arg=-I.
arg=-o
arg=/home/place/project/hypnos/product/pscom/shared/io/Path.o

ビルド データ ファイルは、プロジェクトのソース ファイル、コンパイラの実行ファイル、コンパイラ オプション、リンカーの実行ファイル、およびプロジェクトをビルドするために使用されるオプションについての情報のソースとして使用できます。ビルド データ ファイルを使ってプロジェクトを作成するには、以下の 3 種類の方法があります。

cpptestscan または cpptesttrace を使ってビルド データ ファイルを作成する

cpptestscan および cpptesttrace の実行ファイルは C++test インストール ディレクトリの下に あります。これらのユーティリティは、既存のコードのビルド プロセスから情報を収集し、その情 報を使ってビルド データ ファイルを生成し、各実行についての情報をファイルに追加します。

cpptestscan ユーティリティは、標準ビルド中にコンパイラあるいはリンカーのラッパーとして使用されます。既存のコードで cpptestscan を使用するには、コンパイラ/ リンカーの実行ファイル の接頭辞として cpptestscan を指定してコードをビルドします。これは次の 2 つの方法で実行できます。

既存のコードで cpptesttrace を使用するには、コンパイラ/ リンカーの実行ファイルの接頭辞として cpptesttrace を指定してコードをビルドします。cpptesttrace は、ビルド中に実行されたコンパイラとリンカーのプロセスをトレースし、トレースした内容をビルド データ ファイルに格納しま す。

どちらの場合も、PATH 環境変数に C++test インストール ディレクトリを追加するか、 cpptestscan または cpptesttrace ユーティリティへのフル パスを指定する必要があります。

cpptestscancpptesttrace で使用できるオプションは、以下の表のとおりです。オプションは、cpptestscan コマンドに直接指定するか、環境変数を介して指定できます。コマンドラインの接頭辞を変えることで、ほとんどのオプションが cpptestscan または cpptesttrace に適用できます。

基本的な cpptestscan の使用法:

基本的な cpptesttrace の使用法:

オプション環境変数説明デフォルト
-- cpptestscanOutputFile= <OUTPUT_FILE>
-- cpptesttraceOutputFile= <OUTPUT_FILE>

CPPTEST_SCAN_OUTPUT_FILE)

ビルド情報を追加するファイルを定義します。cpptestscan.bdf

--
cpptestscanProjectNam
e=<PROJECT_NAME>

--
cpptesttraceProjectNam
e=<PROJECT_NAME>

CPPTEST_SCAN_PROJECT_NAMEC++test プロジェクトの名前を定義します。現在の作業ディレクトリ名

--
cpptestscanRunOrigCm
d=
[yes|no]

--
cpptesttraceRunOrigCm
d=[yes|no]

CPPTEST_SCAN_RUN_ORIG_CMDyes の場合、オリジナル コマンドラインが実行されます。yes

--
cpptestscanQuoteCmdLi
neMode=[all|sq|none]

--
cpptesttraceQuoteCmdL
ineMode=[all|sq|none]

CPPTEST_SCAN_QUOTE_CMD_LINE_MODE

C++test がコマンドラインの実行を準備するときに、どのようにパラメーターを引用符で囲むかを指定します。

all: すべてのパラメーターが引用符で囲まれます。

none: どのパラメーターも引用符で囲まれません。

sq: 空白文字または引用符号があるパラメーターだけを引用符で囲みます。

cpptestscanQuoteCm dLineMode はLinux ではサポートされません。


all

--
cpptestscanCmdLinePre
fix=
<PREFIX>

--
cpptesttraceCmdLinePre
fix=<PREFIX>

CPPTEST_SCAN_CMD_LINE_PREFIX[empty] ではなく、かつオリジナル実行ファイルの実行がオンの場合、指定のコマンドがオリジナル コマンドラインの前に付けられます。[empty]

--
cpptestscanEnvInOutput
=[yes|no]

--
cpptesttraceEnvInOutput
=[yes|no]

CPPTEST_SCAN_ENV_IN_OUTPUT

yes の場合、選択した環境変数とコマンドライン パラメーターが出力ファイルにダンプされます。さらに詳しく設定するには --cpptestscanEnvFile または--cpptestscanEnvars オプションを使用します。

no

--
cpptestscanEnvFile=<E
NV_FILE>

--
cpptesttraceEnvFile=<E
NV_FILE>

CPPTEST_SCAN_ENV_FILE

有効な場合、指定したファイルにはすべてのビルド コマンドに共通の環境変数が保持されます。メインの出力ファイルは差分だけを保持します。メインの出力ファイルのサイズを縮小するには、このオプションを使用します。– cpptestscanEnvInOutを有効にしてこのオプションを使用してください。

[empty]

--
cpptestscanEnvars=[*|<
ENVAR_NAME>,...]

--
cpptesttraceEnvars=[*|<
ENVAR_NAME>,...]

CPPTEST_SCAN_ENVARSダンプする環境変数名を指定するか、'*' を選択してすべての環境変数を指定します。 --cpptestscanEnvInOutput を有効にしてこのオプションを 使用してください。*

--
cpptestscanUseVariable
=[VAR_NAME=VALUE,...]

--
cpptesttraceUseVariable
=[VAR_NAME=VALUE,...]

CPPTEST_SCAN_USE_VARIABLEスキャンされたビルド情報中の各 "VALUE" 文字列を "${VAR_NAME}" 変数の使用で置き換えます。[empty]
--
cpptesttraceTraceCommand
CPPTEST_SCAN_TRACE_COMMANDビルド プロセス情報を収集するときにトレースするコマンド名を定義します。コマンド名は正規表現で指定します。コマンド名はビルド プロセスで使用されるオリジナルのコンパイラ/リ ンカー コマンドと一致しな ければなりません。

例: cpptestscan を使用するように GNU make ビルド コマンドを変更する

make ベースのビルドで、コンパイラ変数が CXX であり、オリジナル コンパイラが g++ であるものとします。

      make -f </path/to/makefile> <make target> [user-specific options] CXX="cpptestscan --cpptestscanOutputFile=/path/to/name.bdf --cpptestscanProjectName=<projectname> g++"

このコマンドは、通常と同じようにコードをビルドするだけでなく、指定されたディレクトリにビルド データ ファイル (name.bdf) を生成します。

複数のディレクトリでビルドを実行する場合:

  • 出力ファイルを指定しない場合、ソース ビルド ディレクトリごとに独自の .bdf ファイル が存在するべきです。この方法はソース ディレクトリごとに 1 個のプロジェクトを作成するのに適しています。
  • ソース ツリーごとにプロジェクトを用意したい場合、上記の例にあるように、1 個の .bdf ファイルを指定する必要があります。

例: cpptesttrace を使用するように GNU make ビルド コマンドを変更する

通常の make ベースのビルドでは次のコマンドを使用するものとします。

     make clean all

次のコマンドラインを使用できます。

     cpptesttrace --cpptesttraceOutputFile=/path/to/name.bdf --cpptesttraceProjectName=<projectname> make clean all

このコマンドは、通常と同じようにコードをビルドするだけでなく、指定されたディレクトリにビルド データ ファイル (name.bdf) を生成します。

コンパイラあるいはリンカーのファイル名がデフォルトの cpptesttrace コマンドのパターンに一致しない場合、下記で説明する --cpptesttraceTraceCommand オプションを使ってカスタマイズする必要があります。'cpptesttrace --cpptesttraceHelp' コマンドを実行すると、デフォルトの cpptestscan コマンドのトレース パターンを見ることができます。

例: cpptestscan を使用するように GNU Makefile を変更する

Makefile でコンパイラ実行ファイルの変数として CXX を使用し、通常は CXX=g++ として定義している場合、変数を再定義することができます。

     ifeq ($(BUILD_MODE), PARASOFT_CPPTEST)
     CXX="/usr/local/parasoft/cpptestscan --cpptestscanOutputFile=<selected_location>/MyProject.bdf --cpptestscanProjectName=MyProject g++"
     else
     CXX=g++
     endif

次に、通常と同じようにビルドを実行し、make に BUILD_MODE 変数を追加します。

     make BUILD_MODE=PARASOFT_CPPTEST

コードがビルドされ、ビルド データ ファイル (MyProject.bdf) が作成されます。生成されたビルドデータ ファイルを使って、GUI またはコマンドラインからプロジェクトを作成することができます。

cpptestscan および cpptesttrace ユーティリティは、複数のコンパイラ実行ファイルを同時に実行できる並列ビルド システムで使用できます。マルチ コア マシンでビルド データ ファイルを用意する場合、たとえば、-j <number_of_parallel_jobs> パラメーターを GNU make コマンドに渡すことで、より早くプロジェクトをビルドしてビルド データ ファイルを用意できます。

例: CMake ビルドで cpptesttrace を使用する

CMake ベースのビルドがあり、cpptesttrace を使ってビルド データ ファイルを生成できるものとします。

  1. CMake を使って Makefile を生成するために、オリジナルの CMake コマンドを実行します。例:

    cmake -G "Unix Makefiles" ../project_root
  2. cpptestscan の環境変数を設定します。出力ファイルのパスには必ず絶対パスを使用します。

    export CPPTEST_SCAN_PROJECT_NAME=my_project export CPPTEST_SCAN_OUTPUT_FILE=$PROJ_ROOT/cpptestscan.bdf
  3. PATH 変数で cpptesttrace 実行ファイルが設定されていることを確認します。
  4. プロジェクトのビルドを通常と同じにように実行します。ただし、ラッパーとして cpptesttrace を使用します。たとえば、通常のビルド コマンドが make clean all である場合、cpptesttrace を使ったコマンドは cpptesttrace make clean all となります。

CPPTEST_SCAN_OUTPUT_FILE 変数で定義された場所にビルド データ ファイルが生成されます。この変数を設定していない場合、ビルド データ ファイルは Makefile の場所に生成されます。

例: CMake ビルドで cpptestscan を使用する

すべてのスクリプトとコマンドは bash ベースです。別のシェルについては必要に応じて適合させてください。

CMake ベースのビルドがあるものとします。以下の操作を行って、cpptestscan を使ってビルド データ ファイルを生成します。

  1. コンパイラの接頭辞として cpptestscan を使用し、CMake を使って Makefile を再生成します。PATH 変数で cpptestscan の実行ファイルが設定されていることを確認してください。
    1. オリジナルの CMake コマンドが cmake -G “Unix Makefiles” ../project_root である場合、既存の CMake のキャッシュを削除して cmake を実行し、コンパイラ変数を上書きします。次の例は、C コンパイラとして gcc を使用し、 C++ コンパイラとして g++ を使用するものとします。

      rm CMakeCache.txt CC="cpptestscan gcc" CXX="cpptestscan g++" cmake -G "Unix Makefiles" ../project_root
    2. MakeCache.txt ファイルを参照して、CMAKE_*_COMPILER 変数が cpptestscan をポイントしているかどうかを確認します。
    3. Makefile が再生成される場合、ステップ 5 に進みます。コンパイラが認識されなかったためにブートストラップのフェーズで cmake が失敗した場合、そのままステップ 2 に進みます。
  2. 以下の BASH スクリプトを作成して、CMake コンパイラのように振る舞う cpptestscan ラッパー スクリプトを用意します。この例では、C コンパイラとして gcc を使用し、C++ コンパイラとして g++ を使用するものとします。

    >cat cpptest_gcc.sh
    #!/bin/bash
    cpptestscan gcc --cpptestscanRunOrigCmd=no $* > /dev/null 2>&1 gcc $*
    exit $?
    
    >cat cpptest_g++.sh
    #!/bin/bash
    cpptestscan g++ --cpptestscanRunOrigCmd=no $* > /dev/null 2>&1 g++ $*
    exit $?


  3. 2 つのスクリプトに実行可能属性を与えて共通の場所に置き、Makefile をスキャンする必要があるユーザーが皆スクリプトにアクセスできるようにします。PATH 変数に cpptestscan とスクリプトを必ず設定してください。
  4. 用意されたスクリプトから Makefile を再生成するオプションを使ってオリジナルの CMake コマンドを拡張します。CMake を使って、コンパイラとして使用されるスクリプトによって Makefile を再生成します。
  5. cpptestscan の環境変数を設定します。 出力する .bdf ファイルを必ず絶対パスで指定してください。

    export CPPTEST_SCAN_PROJECT_NAME=my_project export CPPTEST_SCAN_OUTPUT_FILE=$PROJ_ROOT/cpptestscan.bdf
  6. どの make 変数も上書きすることなく、通常と同じようにプロジェクト ビルドを実行します。 CPPTEST_SCAN_OUTPUT_FILE 変数で定義された場所にビルド データ ファイルが生成されます。この変数を設定していない場合は Makefile の場所に生成されます。

デフォルトでは、CMake 生成の Makefile は、実行されたアクションについての情報だけを出力します。実際のコンパイラ/ リンカーのコマンドラインは出力しません。実行された コンパイラ/ リンカーのコマンドラインを確認するには、make コマンドに “VERBOSE=1” を追加します。

他のビルド システムでの cpptestscan または cpptestrace の使用

make ベースではないビルド システムの場合も、cpptestscan と cpptesttrace の使用方法は上記の例と非常に似ています。通常、コンパイラはビルド スクリプト中のどこかで変数として定義されます。cpptestscan を使ってこのビルド システムからビルド データ ファイルを作成するには、オリジナルのコンパイラ実行ファイルに接頭辞として cpptestscan を付加します。cpptesttrace を使ってこのビルド システムからビルド データ ファイルを作成するには、ビルド コマンド全体に接頭辞として cpptesttrace を付加します。

いつ cpptestscan を使うべきか

ビルド データ ファイルを準備する手続きをビルド システムに統合することを強く推奨します。統合すると、通常のビルドを実行するときに、別のアクションを実行することなく、ビルド データファイルを生成することができます。

それには、Makefile またはビルド スクリプトで、 コンパイラとリンカーの実行ファイルに接頭辞として cpptestscan を付加します。

いつ cpptesttrace を使うべきか

Makefile / ビルド スクリプトを変更できない場合、またはビルド コマンドラインからコンパイラ/ リンカーの実行ファイルに接頭辞を付加するのがあまりにも複雑な場合、ビルド コマンド全体の接頭辞として cpptesttrace を使用します。

GUI ウィザードで BDF ファイルをインポートしてプロジェクトを作成する

C++test でテストしたいプロジェクトのビルド データ ファイルを cpptestscan または cpptesttrace で作成したら、プロジェクト作成ウィザードを使って C++test プロジェクトを作成できます。


カスタム コンパイラを使用している場合、GUI ウィザードを開くに、カスタム コンパイラを追加してください。詳細については「カスタム コンパイラを使用するテストの設定を参照してください。

ビルド データ ファイルからプロジェクトを作成するには、次の操作を行います。

  1. [ファイル] メニューの [新規] > [その他] をクリックし、[C++test] > [ビルド データ ファイルからプロジェクトを作成] を選択して [次へ] ボタンをクリックします。ウィザードの最初の画面が表示されます。
  2. 次の設定を行った後、[次へ] ボタンをクリックします。
  3. 作成されるプロジェクトのツリー構造が表示されます。プロジェクトの構造と内容を検証し、必要に応じて修正します。そして [次へ] ボタンをクリックします。
  4. (オプション) 必要に応じてパス変数を指定します。そして [次へ] ボタンをクリックします。

[終了] ボタンをクリックします。指定の場所に指定のプロジェクトが作成されます。作成されたプロジェクトには、オプションがスキャンされたすべてのソース ファイルが含まれます。また、プロジェクトのプロパティが適切に設定されているはずです。

コマンドラインからプロジェクトを作成する

コマンドラインからビルド データ ファイル ベースのプロジェクトを作成することもできます。-bdf <cpptestscan.bdf> スイッチを cpptestcli に渡します。

プロジェクトの作成直後に、たとえば静的解析やテスト生成などの解析を実行したい場合、-config を使用して、目的のテスト コンフィギュレーションを指定します。例:

cpptestcli -data "</path/to/workspace>" -resource "<projectname>" -config "team://Team Configuration"  -localsettings "</path/to/name.properties>" -bdf  "</path/to/name.bdf>"

解析を実行せずに単純にプロジェクトを作成したい場合、 -config オプションを省略します。例:

cpptestcli -data "</path/to/workspace>" -resource "<projectname>" -localsettings "</path/to/name.properties>" -bdf  "</path/to/name.bdf>"

過去のバージョンの C++test では、テストを実行せずにプロジェクトを作成するために -config "util/CreateProjectOnly" を使用しました。現行バージョンの C++test はこのオプションをもう使用しません。偽のテスト コンフィギュレーション "util/CreateProjectOnly" はもうサポートされません。

カスタム プロジェクト設定は、プレーン テキストのオプション ファイルで設定できます。-localsettings スイッチを使ってオプション ファイルを cpptestcli に渡します。詳細については「ローカル設定ファイル (オプション ファイル)」を参照してください。

ここでは、cpptestscan を使ってコマンドラインから C++test プロジェクトを作成する方法について説明します。この例では C++test の ATM サンプルを使用します。このサンプルは <INSTALL_DIR>/Examples/ATM ディレクトリにあります。

この例では make ベースのビルドを使用しますが、ビルド データ ファイル (.bdf ファイル) はどのビルド システムからも生成できます。

仮定と前提

例 1 - デフォルトの設定でワークスペースの場所に C++test プロジェクトを作成する

  1. オリジナルの Makefile をベースにして、ビルド データ ファイル (.bdf ファイル) を作成します。
    1. <INSTALL_DIR>/Examples/ATM ディレクトリに移動します。
    2. オリジナル コンパイラの実行ファイル名の前に cpptestscan を付加して、ATM プロジェクトをビルドします:
      > make CC="cpptestscan g++" clean all
    3. 新しいビルド データ ファイル (cpptestscan.bdf)<INSTALL_DIR>/Examples/ATM ディレクトリに作成されたことを確認します。
  2. ビルド データ ファイルをベースにして、C++test プロジェクトを作成します。次の操作を行います。
    1. コマンドライン cpptestcli を使って、新しいプロジェクトを /home/MyWorkspace ワークスペースに作成します。:
      > cpptestcli -data /home/MyWorkspace -bdf cpptestscan.bdf
    2. 新しい C++test プロジェクト (ATM) が MyWorkspace に作成されました。このプロジェクトには、オリジナルの <INSTALL_DIR>/Examples/ATM プロジェクトのすべてのソース ファイルとビルド オブジェクトが含まれます。

例 2 - Visual C++ 7.1 をコンパイラとして設定し、myProject をプロジェクトとして設定して、オリジナル プロジェクトの場所に C++test プロジェクトを作成する

  1. オリジナルの Makefile をベースにして、ビルド データ ファイル (.bdf ファイル) を作成します。
    1. <INSTALL_DIR>/Examples/ATM ディレクトリに移動します。
    2. オリジナル コンパイラの実行ファイル名の前に cpptestscan を付加して、ATM プロジェクトをビルドします:
      > make CC="cpptestscan --cpptestscanProjectName=myProject g++" clean all
    3. 新しいビルド データ ファイル (cpptestscan.bdf)<INSTALL_DIR>/Examples/ATM ディレクトリに作成されたことを確認します。myProject がプロジェクト名として設定されている点に注目してください。
  2. ビルド データ ファイルをベースにして、C++test プロジェクトを作成します。次の操作を行います。

注意:

生成されたビルド データ ファイルを使って、GUI またはコマンドラインからプロジェクトを作成することができます。