Makefile ベースなどのカスタムビルドシステムがある場合、C++test の cpptestscan ユーティ リティを使ってビルド設定の構成プロセスを効率化できます。cpptestscan ユーティリティは、ビ ルドプロセスについての情報を収集して「ビルドデータファイル」を生成します。「ビルド データ ファイルのオプションを使用 」の説明にあるように、生成された「ビルドデータ ファイル」を使ってビルド設定を構成するよう C++test を設定できます。

適切なコンパイラ構成が非常に重要

ほとんどの場合、C++test は静的解析および実行時テストのタスクを行うために、コンパイラおよびリンカーを起動する必要があります。静的解析と実行時テストでは通常、コンパイル、プログラムのリンクが実行されます。

 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

 

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

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

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

  • コンパイラ/ リンカーの実行ファイルのラッパーとして cpptestscan を呼び出すようにビル ド コマンドを変更する。
  • コマンドラインでコンパイラ変数を上書きしたくない場合 ( または上書きできない場合)、 実際の Makefile またはビルド スクリプト中に cpptestscan を埋め込みます。

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

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

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

cpptestscan の基本的な使用法:

  • Windows: cpptestscan.exe [options] [compile/link command]
  • Linux: cpptestscan [options] [compile/link command]

cpptesttrace の基本的な使用法:

  • Windows: cpptesttrace.exe [options] [build command]
  • Linux: cpptesttrace [options] [build command]
オプション環境変数説明デフォルト
--
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: 空白文字または引用符号が あるパラメーターだけを引用符 で囲みます。

cpptestscanQuoteCmdLineMode は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

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

[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]
-- cpptesttraceTraceCommandCPPTEST_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 コマンドに渡すことで、より早くプロジェクトをビルドしてビルド データ ファイルを用意できます。

いつ cpptestscan を使うべきか

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

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

いつ cpptesttrace を使うべきか

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


 

  • No labels