このセクションでは、プロジェクト レベルおよびファイル レベルのオプション設定をカスタマイズ する方法について説明します。
このセクションの内容
オプション設定の参照と変更
C++test でコードを適切にテストするには、ビルド設定を正しく指定する必要があります。テスト環 境に合わせて Report Center とインストゥルメントのオプションも変更できます。
オプション設定を変更するには、次の操作を行います。
- C/C++ プロジェクト ツリー
(「プロジェクト ツリー」と呼ばれます) でオプション設定を変更するプロジェクトまたはファイルのノードを右クリックし、ショート カット メニューの
[ プロパティー] をクリックします。[ プロパティー] ダイアログが表示されます。
- [Parasoft] > [C++test] カテゴリを展開します。
- オプション設定を変更するカテゴリを選択します。各カテゴリで設定できるオプションにつ いては下記で説明します。
- 必ず確認しなければならないのは「ビルド設定」です。
- オプションを変更します。
- [ 適用] をクリックして [OK] をクリックします。
設定できるオプション
ビルド設定
オプションのソース: オプションの設定方法を指定します。
Makefile や Visual C++ 6.0 プロジェクトのオプションをベースにすることも、すべてのオプションを手動で指定するこ ともできます。ビルド データ ファイルのオプションを使用
「既存のビルド システムを使った C++test プロジェクト」で説明されているとおり, 「cpptestscan ユーティリティを使ってビルド データ ファイルを作成済みの場合」および「ビルド データ ファイルの再生成と更新を手動で管理したい場 合」、このオプションを推奨します。
- ビルド システムのオプションを使用 「コマンドラインからプロジェクトをビルドできるが、ビルド データ ファイルを作 成していない場合」または「ビルド データ ファイルの再生成と更新を C++test に 任せたい場合」、このオプションを推奨します。
- Microsoft Visual C++ 6.0 プロジェクトのオプションを使用 Microsoft Visual C++ 6.0 で開発したプロジェクトの場合、このオプションを推奨 します。
- Green Hills Software (GHS) プロジェクトのオプションを使用 Green Hills IDE で開発したプロジェクトの場合、このオプションを推奨します。
- すべてのオプションを手動で指定 上記以外のプロジェクトの場合、このオプションを推奨します。
[ オプション ソース] で選択した項目によって、表示されるオプションは異なります。
注意
ビルド データ ファイルを手動で管理する方法を選択した場合、ビルド データ ファイルを作成するためのメカニズムをビルド プロセスに統合することを強く推奨します。そうすれば、開発チームのメンバーがこのビルド データ ファイルを使用できるだけでなく、通常のビルド作業の最中にビルド データ ファイルをシームレスに生成または更新するのに役立ちます。
複数の C++test プロジェクト構成の管理
複数の C++test プロジェクト構成を使って、さまざまな構成のテストを管理することができます。たとえば、ホスト コンパイラ、クロス コンパイラ、デバッグ モードでのテスト、リリース モードでのテストなどに対してプロジェクトを構成できます。
また、現在のアクティブなプロパティをファイルにエクスポートしたり、以前に保存したプロパティをファイルからインポートすることもできます。
- プロジェクト エクスプローラーでプロジェクトを右クリックし、[ プロパティ] をクリックします。
- [Parasoft] > [C++test] を選択して [ エクスポート] または [ インポート] をクリックします。
- プロパティを探して [ 保存] または [ 開く] をクリックします。
プロパティをエクスポートすると、cpptestcli -localsettings パラメーターで引数として使用できるファイルが作成されます。このファイルを利用して、コマンドラインからテストするときに別のプロジェクト構成に簡単に切り替えることができます。
ビルド データ ファイルのオプションを使用
次のオプションを設定します。
- [ ビルド データ ファイル] フィールドで、作成したビルド データ ファイルを指定します (ビルド データ ファイルの作成については「cpptestscan または cpptesttrace を使ってビルド データ ファイルを作成する」を参照)。
- 絶対パスを使用すると、互換性のないプロジェクトになることがあります。次のC++test 変数を使ってパスを指定することを推奨します。
- ${resource_loc} は、特定のプロジェクト リソースへのパスに解決します。たとえば、 ${resource_loc:/MyProject/linked_src_dir/source.cpp} はC:\src\source.cpp に解決します。
- 絶対パスを使用すると、互換性のないプロジェクトになることがあります。次のC++test 変数を使ってパスを指定することを推奨します。
- 毎回 C++test がオプションをスキャンするときに、前回のオプションを消去したい場合、[前回収集されたオプションを保持 ( インクリメンタル ビルド)] チェックボックスをオフにします。オンにした場合は、各ビルドがインクリメンタル ビルドとして処理されます。
- インクリメンタル ビルドがある場合、ビルド データ ファイルからのオプションのスキャンが終了した後にビルド データ ファイルを削除するには、[ 処理終了後にビルド データ ファイルを削除] チェックボックスをオンにします。このオプションは、ビルドが実行されるたびにビルド データ ファイルが際限なく拡大するのを防止します。
- [ コンパイラ設定] で、コンパイラの実行ファイル、リンカー、およびコンパイラの種類を指定します。
- 使用しているコンパイラがリスト中にない場合、カスタム コンパイラ定義を追加します ( 詳細については「カスタム コンパイラを使用するテストの設定 」を参照)。
- [ オプション] で、Makefile でまだ指定していない、テスト固有および C++test 固有のコンパイラ オプションとリンカー オプションを指定します。
- 詳細については「コンパイラとリンカーのオプション設定」 を参照。
指定のビルド データ ファイル中でオプションが変更されると、C++test は自動的にオプションを再度スキャンして、変更に合わせてプロジェクトを修正します。たとえば外部コンフィギュレーション ファイルが変わったなどの理由でオプションを強制的にすぐに更新したい場合は、[ キャッシュをリセット] ボタンをクリックします。
ビルド システムのオプションを使用
次のオプションを設定します。
- [ ビルド コマンドライン] フィールドでオプションを確認します。C++test は、このオプ ションを利用して、ビルドの実行 ( たとえば makefile による make の実行) およびプロセ スからのプロジェクト ビルド オプションの収集を行います。
- C++test は、[ ビルド コマンドライン] の指定に従って、適切な値を再割り当てし てコンパイラを置き換えます。
- C++test オプション スキャナーは
${CPPTEST_SCAN}
変数で表されます。
- C++test のデフォルトとは異なるコンパイラ/ リンカー変数を使用している場合、必要に応 じてビルド コマンドラインを変更します。
- C++test は、処理されるすべてのファイルのオプションを、オプション スキャナー を使ってスキャンします。すべてのソース ファイルについてコンパイルを強制的に 実行するように適切なコマンドラインを指定する必要があります。そうしないと、 一部のファイルがテストされません。
- 次は GNU のビルド コマンドラインの例です。
make -i -B objects CXX=${CPPTEST_SCAN} CC=${CPPTEST_SCAN}
このコマンドラインは、 -B フラグ ( すべてのターゲットを無条件に make するフラ グ) および -i ( エラーを無視するフラグ) を使って make ターゲット objects を make します。make 変数 CXX および CC は${CPPTEST_SCAN}
で代替されます。 このコマンドラインを使用すると、objects ターゲットをビルドするために通常コ ンパイルされるすべてのソース ファイルからオプションを抽出できます。 - コマンドライン シェルが bash などの特別な方法で $ 記号を処理する場合、バック スラッシュ (\) を使って $ 記号を必ずエスケープしてください。たとえば:
CXX=\${CPPTEST_SCAN}
- C++test は、適切な値を再割り当てしてコンパイラとリンカーを置き換えることが できる限り、任意のビルド プロセス ( nmake、ant、または任意のビルド スクリ プト) をサポートします。
重要な注意 -B スイッチについて
ビルド コマンドラインは、 -B スイッチ オプション ( 無条件にすべてのターゲットを make する オプション) を含むように設定済みです。このオプションをサポートするのは GNU Make 3.80+ だけです。
以前の make を使用している場合、プロジェクトを作成する前にビルドをクリーンしてください。 -k スイッチを保持してください。
-B スイッチ オプションをサポートしない make を使用している場合、さらにコマンドラインを 変更する必要があります。プロジェクト プロパティで使用されるデフォルトのビルド コマンドラ インにはターゲットがありません。解析対象コードをビルドするために使用するターゲットの指 定を推奨します。 例:
make -i CXX=\${CPPTEST_SCAN} ... all ( all はターゲット)
また、通常のビルド ターゲットの前に clean ステップを追加します。 例:
make -i CXX={CPPTEST_SCAN} ... clean all
このコマンドは、まず clean ターゲットを make し、それから all
ターゲットを make します。 C++test からの make 実行は実際にオブジェクト ファイルをビルドすることはありませんが、 clean
ステップは実際にオブジェクト ファイルを消去します。
3. [ ビルド作業ディレクトリ] フィールドで、ビルド プロセスを実行するディレクトリを指定 します。
- 絶対パスを使用すると、移植性がないプロジェクトになる可能性があります。次の C++test 変数の使用を推奨します。
Eclipse プロジェクト (.project ファイル)${project_loc} は、
がある場所への絶対パスです。
リンクされたソース フォルダー ( プロ ジェクトとは異なる場所にあるソース ファイル) がプロジェクトにある場 合、この変数を使ってはいけません。詳細については下記の「リンクされた ソース フォルダーを使ってプロジェクトを設定するためのヒント」を参照し てください。${resource_loc}
は、特定のプロジェクト リソースへの絶対パスです。たとえば、${resource_loc:/MyProject/linked_src_dir/source.cpp}
は C:\src\source.cpp に解決されます。
- 絶対パスを使用すると、移植性がないプロジェクトになる可能性があります。次の C++test 変数の使用を推奨します。
4. [ 従属ファイル] フィールドで、変更をチェックする Makefile を指定します。指定したファ イルが変更された場合、オプションは自動的に更新されます。
Eclipse プロジェクトへの絶対パスを使用すると、移植性がないプロジェクトになる 可能性があります。次の C++test 変数の使用を推奨します。
Eclipse プロジェクト (${project_loc}
は、は、.project
ファイル)がある場所への絶対パスです。
リンクされたソース フォルダー ( プロ ジェクトとは異なる場所にあるソース ファイル) がプロジェクトにある場 合、この変数を使ってはいけません。詳細については上記の「リンクされた ソース フォルダーを使ってプロジェクトを設定するためのヒント」を参照し てください。${resource_loc}
は、特定のプロジェクト リソースへの絶対パスです。 たとえば、${resource_loc:/MyProject/linked_src_dir/source.cpp}
はC:\src\source.cpp
に解決されます。
5. [ コンパイラ設定] エリアで、C/C++ ソースのためのコンパイラの実行ファイル、リン カー、および種類を指定します。
使用しているコンパイラがリスト中にない場合は、カスタム コンパイラの定義を追 加してからコンパイラを選択してください。詳細については「カスタム コンパイラを使用するテストの設定 」 を参照してください。
6. [ オプション] エリアで、Makefile で指定していないテスト固有または C++test 固有のコ ンパイラ/ リンカー オプションを指定します。
- 詳細については 「コンパイラとリンカーのオプション設定」 を参照し てください。
[ 従属ファイル] フィールドで指定したファイルが変更されると、C++test は自動的にオプションを再スキャンしてプロジェクトを更新します。
たとえば外部コンフィギュレーション ファイルが変 わったなどの理由で直ちにオプションを更新したい場合は [ キャッシュのリセット] ボタンをクリッ クしてください。Microsoft Visual C++ 6.0 プロジェクトのオプションを使用
次のオプションを設定します。
- [ プロジェクト ファイル] フィールドで、Microsoft Visual C++ (*.dsp) プロジェクト ファイルの場所を指定します。
- 絶対パスを使用すると、移植性がないプロジェクトになる可能性があります。次の C++test 変数の使用を推奨します。
${project_loc}
は、Eclipse プロジェクトがある場所 (.project ファイル がある場所 ) への絶対パスです。リンクされたソース フォルダー ( プロ ジェクトとは異なる場所にあるソース ファイル) がプロジェクトにある場 合、この変数を使ってはいけません。詳細については上記の「リンクされた ソース フォルダーを使ってプロジェクトを設定するためのヒント」を参照し てください。${resource_loc}
は、特定のプロジェクト リソースへの絶対パスです。 たとえば、${resource_loc:/MyProject/linked_src_dir/source.cpp}
はC:\src\source.cpp
に解決されます。
- 絶対パスを使用すると、移植性がないプロジェクトになる可能性があります。次の C++test 変数の使用を推奨します。
- [ コンフィギュレーション] フィールドで、使用するコンフィギュレーションを選択します。
- 利用可能なコンフィギュレーションのリストをリフレッシュするには、[ リフレッ シュ] ボタンをクリックします。
- [ ビルド変数] フィールドで、
$INCLUDE、$LIB
、および$PATH
変数の設定方法を選択しま す。- 環境の設定を先に使用する まず環境変数が追加され、次に Visual Studio からの 変数が追加されます。
- Visual Studio の設定を先に使用する まず Visual Studio からの変数が追加され、 次に環境からの変数が追加されます。
- 環境の設定だけを使用する 環境からの変数だけが使用されます。
- [ コンパイラ設定] で、C/C++ ソースのためのコンパイラの実行ファイル、リンカー、およ び種類を指定します。
- [ オプション] で、Visual Studio 6 構成で指定していない、テスト固有または C++test 固 有のコンパイラ/ リンカー オプションを指定します。
- 詳細については「コンパイラとリンカーのオプション設定」 を参照し てください。
Visual C++ プロジェクト ファイルのオプションが変更されると、C++test は自動的にオプション を再スキャンしてプロジェクトを更新します。たとえば外部コンフィギュレーション ファイルが変 わったなどの理由で直ちにオプションを更新したい場合は、[ キャッシュのリセット] ボタンをク リックしてください。
Green Hills Software (GHS) プロジェクトのオプションを使用
次のオプションを設定します。
- [ ルート プロジェクト ファイル (gpj)] フィールドで、オプションのスキャンを開始する Green Hills
(*.gpj
) プロジェクト ファイルの場所を入力します。- 絶対パスを使用すると、移植性がないプロジェクトになる可能性があります。次の C++test 変数の使用を推奨します。
${project_loc}
は、Eclipse プロジェクトがある場所 (.project ファイル がある場所 ) への絶対パスです。リンクされたソース フォルダー ( プロ ジェクトとは異なる場所にあるソース ファイル) がプロジェクトにある場 合、この変数を使ってはいけません。詳細については上記の「リンクされた ソース フォルダーを使ってプロジェクトを設定するためのヒント」を参照し てください。${resource_loc}
は、特定のプロジェクト リソースへの絶対パスです。 たとえば、${resource_loc:/MyProject/linked_src_dir/source.cpp}
はC:\src\source.cpp
に解決されます。
- 絶対パスを使用すると、移植性がないプロジェクトになる可能性があります。次の C++test 変数の使用を推奨します。
- [ サブプロジェクト] フィールドでプロジェクトを選択し、[ リフレッシュ] ボタンをクリッ クします。
- GPJ プロジェクト階層の中にある、利用可能な " テスト可能" プロジェクトを選択 できます ( これはルート自体であることもあります)。または、互換モードを使用す るために ( たとえテスト可能でない場合でも) ルート ノードを選択できます。この 機能は、" テスト可能ではない" プロジェクトの静的解析をサポートするためのもの です。
- "テスト可能" プロジェクトと " テスト可能ではない" プロジェクトの違い、および 互換モードの詳細については、 「C++test はどのように GHS オプション ソースを使用するのか」 を参照してください。
- [ コンパイラ設定] で、C/C++ ソースのためのコンパイラの実行ファイル、リンカー、およ び種類を指定します。
- [ オプション] で、プロジェクトで指定していないテスト固有または C++test 固有のコン パイラ/ リンカー オプションを指定します。
- 詳細については「コンパイラとリンカーのオプション設定」 を参照し てください。
GHS プロジェクト ファイルのオプションが変わると、C++test は自動的にオプションを再スキャ ンし、オプションに従ってプロジェクトを変更します。たとえば外部コンフィギュレーション ファ イルが変わったなどの理由で直ちにオプションを更新したい場合は [ キャッシュのリセット] ボタン をクリックしてください。
C++test はどのように GHS オプション ソースを使用するのか
C++test は次の種類の GPJ プロジェクトをサポートします。つまり C++test は、これらのプロ ジェクト タイプで指定されたプロジェクト ノードを、ソース オプションとビルド オプションをス キャンするプロジェクトとして扱います。
- プロジェクト
- サブプロジェクト
- プログラム
- ライブラリ
- DLL
- Select One
- 共有プロジェクト
- シングルトン ライブラリ
- INTEGRITY アプリケーション
C++test は GPJ プロジェクトを 2 つのグループに分けています。
- テスト可能なプロジェクト プログラム、ライブラリ、および DLL が該当します。 これらの プロジェクト タイプの成果物は、よく知られたもの ( 実行可能ファイルとライブラリ) であ り、C++test はこれらのプロジェクト タイプに基づいてテスト用実行モジュールをビルド できます。GHS プロジェクトのインポート用ウィザードを使ってインポートできるプロジェ クトは、これらのプロジェクト タイプだけです。
- テスト可能ではないプロジェクト その他のすべてのプロジェクト タイプは、そのすべての ソースとサブプロジェクトのビルド オプションを取得するために使用できます。
ルート プロジェクトとは、オプションのスキャンの開始地点として選択された最上位レベルのプロ ジェクト ファイルのことです。
複雑な構造を持つプロジェクトの場合:
- ルートから開始する論理プロジェクトの階層における第 1 レベルのすべての " テスト可能で はない" プロジェクトは、ワークスペースの一種として扱われ、オプションが取得されます。
- テスト可能プロジェクトのサブプロジェクトは、テスト可能な親の直接の子と見なされます。 サブプロジェクトのオプションが読み込まれます。
テスト可能なソースは C 言語および C++ 言語のソースです。
GPJ プロジェクトから取得されるビルド オプションには次の 2 種類があります。
- コンパイル オプションとリンク オプション
- コンパイラ ツールに直接渡されないが、MULTI Builder 自体によって特別な方法で解釈され るビルド プロパティ ( MULTI Builder のみのオプション)
C++test では、特定のソース ファイルのビルド オプション ( コンパイル オプションとビルド プロ パティ) には、ソース ノード自体のすべてのオプションに加えて、このソース ファイルにつながる すべての親プロジェクト ノードから取得されたすべてのオプションが含まれます。
認識されるビルド プロパティは次のとおりです。これらのビルド プロパティは MULTI Build Options Editor から指定されている可能性があります。
- このファイルに相対のソース ディレクトリ (:sourceDir)
- 最上位レベルのプロジェクトに相対のソース ディレクトリ (:sourceDirNonRelative)
以前のバージョンの C++test で利用できた GHS の下位互換性のために、現行バージョンの C++test には互換モードが用意されています。互換モードでは、ルート プロジェクトがそのプロ ジェクト タイプに関わらず ( そのプロジェクト タイプがサポートされている限り)、常にテスト可 能として扱われます。ただし、" テスト可能ではない" プロジェクトから実行用モジュールをビルド することは不可能な場合があります。よくある原因は次の 2 つです。
- スキャンされたリンク オプションが有効でないか、十分ではない。
- 元のソースが正しいアプリケーションに構成されない ( たとえば、重複するグローバル シン ボル名がソース中にある場合など)。
ほとんどの場合この状況は、複数のプログラム ノード あるいはライブラリ ノードを持つコンテナー的なプロジェクトで発生します。 互換モードは主に、完全なプロジェクトの構成で発見されるすべてのテスト可能ソースに対する静的 解析で使用されます。
マネージド Make C/C++ プロジェクトのオプションを使用
次のオプションを設定します。
- [ コンフィギュレーション] フィールドで、使用するコンフィギュレーションを選択します。
- 利用可能なコンフィギュレーションのリストをリフレッシュするには、[ リフレッ シュ] ボタンをクリックします。
- [ 種類] フィールドで、コンパイラが属するコンパイラの種類を選択します。
- [ カスタム コマンドを使用] エリアで、C コンパイラ、C++ コンパイラ、およびリンカー に使用するカスタム コマンドを指定します。
- [ オプション] エリアで、プロジェクトで指定していないテスト固有または C++test 固有 のコンパイラ/ リンカー オプションを指定します。
- 詳細については「コンパイラとリンカーのオプション設定」 を参照し てください。
すべてのオプションを手動で指定
次のオプションを設定します。
- [ コンパイラ オプション] フィールドで、使用するコンパイラ オプションを入力します。
- [ 作業ディレクトリ] フィールドで、コンパイラが実行するディレクトリを入力します。
- 絶対パスを使用すると、移植性がないプロジェクトになる可能性があります。次の C++test 変数の使用を推奨します。
${project_loc}
は、Eclipse プロジェクトがある場所 (.project
ファイル がある場所 ) への絶対パスです。リンクされたソース フォルダー ( プロ ジェクトとは異なる場所にあるソース ファイル) がプロジェクトにある場 合、この変数を使ってはいけません。詳細については上記の「リンクされたソース フォルダーを使ってプロジェクトを設定するためのヒント」を参照し てください。${resource_loc}
は、特定のプロジェクト リソースへの絶対パスです。 たとえば、${resource_loc:/MyProject/linked_src_dir/source.cpp}
はC:\src\source.cpp
に解決されます。
- 絶対パスを使用すると、移植性がないプロジェクトになる可能性があります。次の C++test 変数の使用を推奨します。
- [ リンカー オプション] フィールドで、使用するリンカー オプションを入力します。
- 使用しているコンパイラがリストにない場合、カスタム コンパイラの定義を追加し てからコンパイラを選択してください。詳細については「カスタム コンパイラを使用するテストの設定」 を参照してください。
- [ コンパイラ設定] フィールドで、C/C++ ソースのためのコンパイラの実行ファイル、リン カー、および種類を指定します。コンパイラとリンカーの設定は一致していなければなりま せん。
- 使用しているコンパイラがリストにない場合、まずカスタム コンパイラの定義を追 加してからコンパイラを選択してください。「カスタム コンパイラを使用するテストの設定」 を参照してください。
実行の設定 ( ファイル レベルのみ)
テスト ケースの実行中に、選択したソース ファイルをインストゥルメントするかどうかを指定しま す。
複数のファイルにこの設定を適用するには、プロジェクトの中からファイルを選択して右クリック し、[Parasoft] > [C++test] > [ 実行の設定] を選択します。選択したすべてのファイルに現在の 設定が適用される点に注意してください。
Parasoft Project Center 属性
このプロジェクトまたはファイルからの結果を Parasoft Report Center でどのように分類してタグ付けするかを指定します。
詳細については「Project Center との接続」を参照してください。
その他の設定
C++test の一時ファイルの場所と詳細オプションを設定できます。
C++test 一時ファイル
一時的なデータ/ ファイルを C++test が保持する場所を指定します。一時的なデータ/ ファイルと は、インストゥルメントされたソース、コンパイルされたオブジェクト、リンクされたテスト用実行 モジュール、自動生成ヘッダー ファイルなどです。この設定は {cpptest:testware_loc} を制御します。
C++test はこれらのファイルを必要に応じて自動的に再生成できるため、これらのファイルをチー ム メンバー間で共有する必要はありません。したがって、これらのファイルをプロジェクトと共に 保存したりソース管理システムに追加したりするべきではありません。
[ 消去] ボタンをクリックすると一時データを削除できます。ただし、テスト実行とテスト実行の間 に一時データを削除しないことを推奨します。一時データを保持しておくと、パフォーマンスを大幅 に向上させることができます。
なお、最適なパフォーマンスを得るには、ローカル ハード ドライブを使用してください。
詳細オプション
詳細オプションでは、さまざまな低水準オプションとデバッグ オプションを指定できます。詳細に ついては「インストゥルメントの詳細オプション」を参照してください。
ソース ファイル エンコーディング
ソース ファイルをプロセスするときにマルチバイト エンコーディングを使用するかどうかを指定し ます。デフォルトは [ 自動 ( オン)] であり、現行システムのエンコーディングに基づいて自動的に マルチバイト文字のサポートがアクティブになります。マルチバイト文字のサポートを手動で設定す るには、[ オン] または [ オフ] を選択します。
なお、マルチバイト文字のサポートを有効にしてコードを解析すると、 パフォーマンスに影響する場 合があるので注意してください。
スコープ設定
テスト対象から除外するプロジェクト ファイルを指定できます。詳細については「特定のリソースのテスト」 を参照してください。