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
の実行ファイルは C++test インストール ディレクトリの下に あります。これらのユーティリティは、既存のコードのビルド プロセスから情報を収集し、その情 報を使ってビルド データ ファイルを生成し、各実行についての情報をファイルに追加します。
cpptestscan
ユーティリティは、標準ビルド中にコンパイラあるいはリンカーのラッパーとして使 用されます。既存のコードで cpptestscan を使用するには、コンパイラ/ リンカーの実行ファイル の接頭辞として cpptestscan
を指定してコードをビルドします。これは次の 2 つの方法で実行で きます。
cpptestscan
を呼び出すようにビル ド コマンドを変更する。Makefile
またはビルド スクリプト中に cpptestscan
を埋め込みます。既存のコードで cpptesttrace
を使用するには、コンパイラ/ リンカーの実行ファイルの接頭辞とし て cpptesttrace
を指定してコードをビルドします。cpptesttrace
は、ビルド中に実行されたコン パイラとリンカーのプロセスをトレースし、トレースした内容をビルド データ ファイルに格納しま す。
どちらの場合も、PATH 環境変数に C++test インストール ディレクトリを追加するか、 cpptestscan
または cpptesttrace
ユーティリティへのフル パスを指定する必要があります。
cpptestscan
と cpptesttrace
で使用できるオプションは、以下の表のとおりです。オプションは、 直接コマンドで指定するか、環境変数を介して指定できます。コマンドラインの接頭辞を変えること で、ほとんどのオプションが cpptestscan
または cpptesttrace
に適用できます。
cpptestscan
の基本的な使用法:
cpptestscan.exe [options] [compile/link command]
cpptestscan [options] [compile/link command]
cpptesttrace
の基本的な使用法:
cpptesttrace.exe [options] [build command]
cpptesttrace [options] [build command]
オプション | 環境変数 | 説明 | デフォルト |
---|---|---|---|
-- cpptestscanOutputFile= <OUTPUT_FILE> -- cpptesttraceOutputFile= <OUTPUT_FILE> | CPPTEST_SCAN_OUTPUT_FILE) | ビルド情報を追加するファイルを定義します。 | cpptestscan.bdf |
| CPPTEST_SCAN_PROJECT_NAME | C++test プロジェクトの名前を定義します。 | 現行の作業 ディレクトリの名前 |
| CPPTEST_SCAN_RUN_ORIG_CMD | yes の場合、オリジナル コマ ンドラインが実行されます。 | yes |
| CPPTEST_SCAN_QUOTE_CMD_LINE_MODE | C++test がコマンドラインの 実行を準備するときに、どのよ うにパラメーターを引用符で囲 むかを指定します。
cpptestscanQuoteCmdLineMode はLinux ではサポートさ れません。
| all |
| CPPTEST_SCAN_CMD_LINE_PREFIX | [empty] ではなく、かつオリ ジナル実行ファイルの実行がオ ンの場合、指定のコマンドがオ リジナル コマンドラインの前 に付けられます。 | [empty] |
| CPPTEST_SCAN_ENV_IN_OUTPUT | yes の場合、選択した環境変数 とコマンドライン パラメー ターが出力ファイルにダンプさ れます。 さらに詳しく設定する には --cpptestscanEnvFile または --cpptestscanEnvars オプ ションを使用します。 | no |
| CPPTEST_SCAN_ENV_FILE | 有効な場合、指定したファイルにはすべてのビルド コマンドに共通の環境変数が保持されま す。メインの出力ファイルは差分だけを保持します。メインの出力ファイルのサイズを縮小す るには、このオプションを使用します。 --cpptestscanEnvInOutput を有効にしてこのオプションを使用してください。 | [empty] |
| CPPTEST_SCAN_ENVARS | ダンプする環境変数名を指定するか、'*' を選択してすべての環境変数を指定します。 --cpptestscanEnvInOutput を有効にしてこのオプションを 使用してください。 | * |
| CPPTEST_SCAN_USE_VARIABLE | スキャンされたビルド情報中の各 "VALUE" 文字列を "${VAR_NAME}" 変数の使用で置き換えます。 | [empty] |
-- cpptesttraceTraceComm and | CPPTEST_SCAN_TRACE_COMMAND | ビルド プロセス情報を収集するときにトレースするコ マンド名を定義します。コ マンド名は正規表現で指定 します。コマンド名はビルド プロセスで使用されるオ リジナルのコンパイラ/ リ ンカー コマンドと一致しな ければなりません。 |
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) を生成します。
複数のディレクトリでビルドを実行する場合:
|
通常の make ベースのビルドでは次のコマンドを使用するものとします。
make clean all
次のコマンドラインを使用できます。
cpptesttrace --cpptesttraceOutputFile=/path/to/name.bdf --cpptesttraceProjectName=<projectname> make clean all
このコマンドは、通常と同じようにコードをビルドするだけでなく、指定されたディレクトリにビル ド データ ファイル (name.bdf) を生成します。
コンパイラあるいはリンカーのファイル名がデフォルトの |
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 またはコマンドラインからプロジェクトを作成することができます。
|
CMake ベースのビルドがあり、cpptesttrace を使ってビルド データ ファイルを生成できるものとします。
CMake を使って Makefile を生成するために、オリジナルの CMake コマンドを実行します。たとえば
cmake -G "Unix Makefiles" ../project_root |
cpptestscan
の環境変数を設定します。出力ファイルのパスには必ず絶対パスを使用します。
export CPPTEST_SCAN_PROJECT_NAME=my_project export CPPTEST_SCAN_OUTPUT_FILE=$PROJ_ROOT/cpptestscan.bdf |
cpptesttrace
実行ファイルが設定されていることを確認します。cpptesttrace
を使用します。たとえば、通常のビルド コマンドが make clean all
である場合、cpptesttrace
を使ったコマンドは cpptesttrace make clean all
となります。CPPTEST_SCAN_OUTPUT_FILE 変数で定義された場所にビルド データ ファイルが生成されます。この変数を設定していない場合、ビルド データ ファイルは Makefiles の場所に生成されます。
すべてのスクリプトとコマンドは bash ベースです。別のシェルについては必要に応じて適合させてください。
CMake ベースのビルドがあるものとします。以下の操作を行って、cpptestscan を使ってビルド データ ファイルを生成します。
オリジナルの 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 |
以下の 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 $? |
cpptestscan
を起動し、コンパイラを実行せずにオプションを抽出します。2 番目のスクリプトは実際のコンパイラを実行します。その目的は、CMake によって「認められる」ためにスクリプト全体が見た目も動作もコンパイラのようになるためです。cpptestscan
とスクリプトを必ず設定してください。オリジナルの CMake コマンドが cmake -G “Unix Makefiles” ../project_root
である場合、既存の CMake のキャッシュを削除して cmake を実行し、コンパイラ変数を上書きします。次の例は、C コンパイラとして gcc を使用し、 C++ コンパイ
ラとして g++ を使用するものとします。
rm CMakeCache.txt cmake -G "Unix Makefiles" -D CMAKE_C_COMPILER=cpptest_gcc.sh -D CMAKE_CXX_COMPILER=cpptest_g++.sh ../project_root |
cpptestscan
の環境変数を設定します。 出力する .bdf ファイルを必ず絶対パスで指定してください。
export CPPTEST_SCAN_PROJECT_NAME=my_project export CPPTEST_SCAN_OUTPUT_FILE=$PROJ_ROOT/cpptestscan.bdf |
デフォルトでは、CMake 生成の Makefile は、実行されたアクションについての情報だけを出力します。実際のコンパイラ/ リンカーのコマンドラインは出力しません。実行された コンパイラ/ リンカーのコマンドラインを確認するには、make コマンドに “VERBOSE=1” を追加します。 |
make ベースではないビルド システムの場合、cpptestscan と cpptesttrace の使用方法は上記の例と非常に似ています。通常、コンパイラはビルド スクリプト中のどこかで変数として定義されます。cpptestscan を使ってこのビルド システムからビルド データ ファイルを作成するには、オリジナルのコンパイラ実行ファイルに接頭辞として cpptestscan を付加します。cpptesttrace を使ってこのビルド システムからビルド データ ファイルを作成するには、ビルド コマンド全体に接頭辞として cpptesttrace を付加します。
いつ cpptestscan を使うべきかビルド データ ファイルを準備する手続きをビルド システムに統合することを強く推奨します。統合すると、通常のビルドを実行するときに、別のアクションを実行することなく、ビルド データファイルを生成することができます。 それには、Makefile またはビルド スクリプトで、 コンパイラとリンカーの実行ファイルに接頭辞として cpptestscan を付加します。 いつ cpptesttrace を使うべきかMakefile / ビルド スクリプトを変更できない場合、またはビルド コマンドラインからコンパイラ/ リンカーの実行ファイルに接頭辞を付加するのがあまりにも複雑な場合、ビルド コマンド 全体の接頭辞として cpptesttrace を使用します。 |
C++test でテストしたいプロジェクトのビルド データ ファイルを cpptestscan
または cpptesttrace で作成したら、プロジェクト作成ウィザードを使って C++test プロジェクトを作成できます。
カスタム コンパイラを使用している場合、GUI ウィザードを開く前に、カスタム コンパイラを追加してください。詳細については「カスタム コンパイラを使用するテストの設定」を参照してください。 |
ビルド データ ファイルからプロジェクトを作成するには、次の操作を行います。
-list-compilers
スイッチを使用します。[ 終了] ボタンをクリックします。指定の場所に指定のプロジェクトが作成されます。作成されたプロジェクトには、オプションがスキャンされたすべてのソース ファイルが含まれます。また、プロジェクトのプロパティが適切に設定されているはずです。
コマンドラインからビルド データ ファイル ベースのプロジェクトを作成することもできます。
-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 ファイル) はどのビルド システムからも生成できます。
cpptestscan
の実行ファイルが $PATH 変数に指定されているものとします ( cpptestscan
の実行ファイルは、C++test のインストール ディレクトリにあります)。cpptestcli
の実行ファイルは $PATH に含まれているものとします( この実行ファイルは C++test のインストール ディレクトリにあります)。g++
がオリジナル コンパイラの実行ファイルであるものとします。/home/MyWorkspace
c:\home\MyWorkspace
c:/home/MyWorkspace
-config
を省略します。 -config MustHaveRules
)<INSTALL_DIR>/Examples/ATM
ディレクトリに移動します。cpptestscan
を付加して、ATM プロジェクトをビルドします: > make CC="cpptestscan g++" clean all
cpptestscan.bdf
) が <INSTALL_DIR>/Examples/ATM
ディレクトリに作成されたことを確認します。cpptestcli
を使って、新しいプロジェクトを /home/MyWorkspace
ワークスペースに作成します。: > cpptestcli -data /home/MyWorkspace -bdf cpptestscan.bdf
<INSTALL_DIR>/Examples/ATM
プロジェクトのすべてのソース ファイルとビルド オブジェクトが含まれます。<INSTALL_DIR>/Examples/ATM
ディレクトリに移動します。cpptestscan
を付加して、ATM プロジェクトをビルドします: > make CC="cpptestscan --cpptestscanProjectName=myProject g++" clean all
cpptestscan.bdf
) が <INSTALL_DIR>/Examples/ATM
ディレクトリに作成されたのを確認します。 myProject
がプロジェクト名として設定されている点に注目してください。<INSTALL_DIR>/Examples/ATM
に、opts.properties
という名前でテキスト ファイルを作成します。opts.properties
ファイルに bdf.import.compiler.family=vc_7_1
と入力して、コンパイラの種類に Visual C++ 7.1 をセットします。opts.properties
ファイルに bdf.import.location=BDF_LOC
と入力し、目的のプロジェクトの場所として cpptestscan.bdf
ファイルがある場所を設定します (cpptestscan.bdf
ファイルは、オリジナル プロジェクトのディレクトリにあります)。 cpptestcli
を使って、新しいプロジェクトを /home/MyWorkspace
ワークスペースに作成します。 -data /home/MyWorkspace -bdf cpptestscan.bdf -localsettings opts.properties
注意:
cpptestscan.bdf
ファイルの場所を参照します。生成されたビルド データ ファイルを使って、GUI またはコマンドラインからプロジェクトを作成することができます