...
<INSTALL_DIR>/bin/cpptestcc- ビルド プロセスに統合し、カバレッジデータを収集できるようアプリケーションをインストゥルメントするカバレッジツールです。<INSTALL_DIR>/bin/engine/coverage/runtime- インストゥルメントされたアプリケーションに統合する必要があるカバレッジランタイム ライブラリです。
cpptestcc によるカバレッジの収集は、以下の 3 つのフェーズで行われます。
cpptestccツールをビルドに統合し、アプリケーションをインストゥルメントする。- インストゥルメントされたコードを実行し、raw カバレッジ データを収集する。
- ビルトイン テスト コンフィギュレーションを使用して raw カバレッジ データを C/C++test にインポートし、C/C++test でカバレッジを確認する。
...
<INSTALL_DIR>/binへのパスをPATHシステム変数に追加し、cpptestccを実行できるようにします。- コンパイル コマンドを変更し、
--を区切り文字としたコンパイラコマンドの接頭辞としてcpptestcc実行モジュールを含めます。 例:元のコンパイル コマンド ライン
Code Block cc -I app/includes -D defines -c source.cpp
変更後のコンパイル コマンド ライン
Code Block cpptestcc -compiler gcc_10-64 -line-coverage -- cc -I app/includes -D defines -c source.cpp
Info cpptestccツールを利用するには、少なくとも以下のパラメーターがコマンドラインに設定されている必要があります。- コンパイラ識別子
-compiler <COMPILER_ID>- カバレッジメトリクス (例:
-decision-coverage)その他のオプションについては、「cpptestcc コマンド ライン リファレンス」を参照してください。
- リンカー コマンドを変更し、C/C++test に付属のビルド済みカバレッジランタイム ライブラリへのパスを指定して、アプリケーションにこのライブラリを追加します。例:
元のコンパイル コマンド ライン
Code Block lxx -L app/lib app/source.o somelib.lib -o app.exe
変更後のコンパイル コマンド ライン
Code Block lxx -L app/lib app/source.o somelib.lib [INSTALL_DIR]/bin/engine/coverage/runtime/lib/cpptest.lib -o app.exeInfo icon false title 重要 カバレッジ ランタイムのライブラリが共有 (動的ロード) ライブラリとしてリンクされる場合、インストゥルメントされたアプリケーションの開始時にカバレッジ ツールのライブラリを確実にロードできるようにする必要があります。通常は、
<INSTALL_DIR>/bin/engine/coverage/runtime/binをPATH環境変数に追加するか (Windows の場合)、または<INSTALL_DIR>/bin/engine/coverage/runtime/libをLD_LIBRARY_PATH環境変数に追加する必要があります (Linux の場合)。Info icon false C/C++test には、Window および Linux のネイティブ アプリケーション用にビルド済みのカバレッジ ランタイム ライブラリが付属しています。クロスプラットフォームおよび組み込みテストの場合は、
<INSTALL_DIR>/bin/engine/coverage/runtimeのソースからランタイム ライブラリをビルドする必要があります。 詳細は「カバレッジ ランタイム ライブラリ」を参照してください。 - アプリケーションをビルドします。コードをインストゥルメントする際、
cpptestccは.cpptest/cpptestccフォルダーを作成します。ここには、重要なカバレッジ関連データ (「カバレッジ マップ」) が保存されます。デフォルトでは、フォルダーは現在のコンパイルの作業ディレクトリに作成されます。-workspace <path>オプションを使用してデフォルトの場所を変更できます。詳細は「cpptestcc コマンド ライン リファレンス」を参照してください。 - アプリケーションを実行します。
cpptest_results.clogファイルにカバレッジ データ (「カバレッジ ログ」) が保存されます。 - C/C++test がインストールされた IDE で、アプリケーションのすべてのソース ファイルを含む新規プロジェクトを作成します。
ファイルおよびすべてのパスに変更がないことを確認します。
- プロジェクトを選択し、IDE のメニューで [Parasoft] > [テスト コンフィギュレーション] > [Utilities] > [Load Application Coverage] をクリックしてカバレッジ データをインポートします (詳細は「カバレッジ データのインポート」を参照)。
- カバレッジ情報を参照します (「Reviewing Coverage Information」を参照)。
...
C/C++test には、インクルードされたツールを実行するための Python スクリプトが付属しています。スクリプトは次の場所にあります。
| Code Block |
|---|
<CPPTEST_INSTALL_DIR>/bin/engine/bin/cpptestpy.exe |
MSBuild 統合スクリプトは次の場所にあります。
...
CPPTEST_INSTALL_DIR変数をセットアップします。Code Block set CPPTEST_HOME=<CPPTEST_INSTALL_DIR>
PATH変数をセットアップします。Code Block set PATH=%PATH%;%CPPTEST_HOME\bin\engine\coverage\runtime\bin
(CMake のみ) CMake を使用して MSBuild ファイルを生成します。
Code Block cd <PROJECT_DIR> mkdir build cd build cmake ..
統合スクリプトを実行します。
Code Block <cpptestpy.exe> <msbuild_cpptest.py> -c -f project.vcxproj
MSBuild を使用してプロジェクトをビルドします。
Code Block msbuild -t:Rebuild project.sln
カバレッジを収集するには、ビルド ディレクトリに移動してプロジェクトを実行します。
Code Block cd x64\Debug project.exe
現在の作業ディレクトリにカバレッジ情報を含む .clog ファイルが作成されます。
デフ ォルトのファイル名はcpptest_results.clogです。カバレッジ レポートを生成します。
Code Block cpptestcli.exe \ -data ../workspace \ -bdf cpptestscan.bdf \ -property bdf.import.location=BDF_LOC \ -config "builtin://Load Application Coverage"
| Anchor | ||||
|---|---|---|---|---|
|
cpptestcc コマンド ライン リファレンス...
| ファイル | 説明 |
|---|---|
<INSTALL_DIR>/bin/engine/coverage/runtime/lib/cpptest.a | Cygwin GNU GCC で使用される 32 bit 版のインポート ライブラリです。リンク コマンド ラインに追加します。 |
<INSTALL_DIR>/bin/engine/coverage/runtime/lib/cpptest64.a | Cygwin GNU GCC コンパイラで使用される 64 bit 版のインポート ライブラリです。リンク コマンド ラインに追加します。 |
<INSTALL_DIR>/bin/engine/coverage/runtime/lib/cpptest.lib | Microsoft Visual C++ コンパイラで使用される 32 bit 版のインポート ライブラリです。リンク コマンド ラインに追加します。 |
<INSTALL_DIR>/bin/engine/coverage/runtime/lib/cpptest64.lib | Microsoft Visual C++ コンパイラで使用される 64 bit 版のインポート ライブラリです。リンク コマンド ラインに追加します。 |
<INSTALL_DIR>/bin/engine/coverage/runtime/bin/cpptest.dll | 32 bit 版の動的リンク ライブラリです。PATH 環境変数に <INSTALL_DIR>/bin/engine/coverage/runtime/bin を追加します。 |
<INSTALL_DIR>/bin/engine/coverage/runtime/bin/cpptest64.dll | 64 bit 版の動的リンク ライブラリです。PATH 環境変数に <INSTALL_DIR>/bin/engine/coverage/runtime/bin を追加します。 |
Linux (x86 および x86-64)
| ファイル | 説明 |
|---|---|
<INSTALL_DIR>/bin/engine/coverage/runtime/lib/libcpptest.so | 32-bit 版の共有ライブラリです。リンク コマンド ラインに追加します。LD_LIBRARY_PATH に <INSTALL_DIR>/bin/engine/coverage/runtime/lib を追加します。 |
<INSTALL_DIR>/bin/engine/coverage/runtime/lib/libcpptest64.so | 64-bit 版の共有ライブラリです。リンク コマンド ラインに追加します。LD_LIBRARY_PATH に <INSTALL_DIR>/bin/engine/coverage/runtime/lib を追加します。 |
...
- ビルド スクリプト内のリンカー コマンド ラインを特定します。
ビルド スクリプトを変更し、リンカー コマンド ラインの任意の場所にカバレッジ ランタイム ライブラリを指定します。できればすべてのオブジェクト ファイルの後に指定します。例:
Code Block $(LXX) $(PRODUCT_OBJ) $(OFLAG_EXE)$(PROJ_EXECUTABLE) $(LXXFLAGS) $(SYSLIB) $(EXECUTABLE_LIB_LXX_OPTS) <INSTALL_DIR>/bin/engine/coverage/runtime/lib/cpptest.libPATH環境変数にlibディレクトリへのパスが追加され、テスト対象プログラム起動時にライブラリを発見できるようになっていることを確認します。cpptest.dll(またはcpptest64.dll) ファイルを実行モジュールと同じディレクトリ、またはテスト対象アプリケーションの起動時に動的リンク ライブラリを検索するその他の場所にコピーすることを検討するとよいでしょう。
...
- ビルド スクリプト内のリンカー コマンド ラインを特定します。
ビルド スクリプトを変更し、リンカー コマンド ラインの任意の場所にカバレッジ ランタイム ライブラリを指定します。できればすべてのオブジェクト ファイルの後に指定します。例:
Code Block $(LXX) $(PRODUCT_OBJ) $(OFLAG_EXE)$(PROJ_EXECUTABLE) $(LXXFLAGS) $(SYSLIB) $(EXECUTABLE_LIB_LXX_OPTS) -L <INSTALL_DIR>/bin/engine/coverage/runtime/lib -lcpptest-Lおよび-lcpptestオプションが追加されていることに注意してください。- テスト対象実行モジュールが共有ライブラリへのパスを見つけられるよう、
LD_LIBRARY_PATH環境変数にlibディレクトリへのパスが追加されていることを確認します。
...
| Table of Content Zone | ||||||
|---|---|---|---|---|---|---|
| ||||||
エラーや警告の情報など、カバレッジ ワークスペースの診断情報を表示する方法カバレッジ ワークスペースにはインストゥルメントされたコード、対応する静的カバレッジ データとともに、コードがインストゥルメントされたときに生成されたログや設定ファイルが保存されています。 デフォルトでは、現在のディレクトリにあるカバレッジ ワークスペースにある診断データが検索されます。-workspace オプションを使用して別のワークスペースの場所を指定することもできます。 例:
カバレッジ ワークスペースの診断情報を Parasoft 製品サポートに送信する方法
デフォルトでは、現在のディレクトリにあるカバレッジ ワークスペースにある診断データが検索されます。-workspace オプションを使用して別のワークスペースの場所を指定することもできます。 例:
アプリケーション カバレッジのレポートを生成したとき、見つからないソース ファイルがあった場合カバレッジ レポートを生成するとき、C/C++test はコード カバレッジ収集のためにインストゥルメントされたすべてのファイルが元の場所にあることを必要とします。C/C++test が元の場所でファイルを見つけられなかった場合、カバレッジ レポートは不完全になります。そのような場合、C/C++test は警告メッセージとともに見つからないファイルのリストを表示します。 別の場所に移動されたファイルのカバレッジ データを含むカバレッジ レポートを生成するには、
元のパスの中で '*' をワイルドカードとして使用できます。例:
リスト ファイル (*.lst) でパス マッピングのリストを指定し、ファイルの場所を値として設定することもできます。例:
*.lst ファイルの各項目は個別のエントリとして扱われます。 例次の例では、カバレッジ収集のために foo.cpp ファイルがインストゥルメントされた後、別の場所に移動されました。
foo.cpp ファイルのカバレッジ データを含むカバレッジ レポートを生成するには、次の操作を行います。
コード カバレッジ収集のためにコードをインストゥルメントできなかった場合にビルドを失敗させる方法デフォルトでは、ファイルを正常にインストゥルメントできない場合、ビルドでは元の (インストゥルメントされていない) ファイルが使用され、警告が表示されます。カバレッジ収集のためにインストゥルメントできないソース ファイルがあった場合にビルドを失敗させるには、 例cpptestcc -disable-auto-recovery-mode [...] 1 回のビルドで複数回コンパイルされるファイルのカバレッジを収集する方法デフォルトでは、ビルドに含まれるソース ファイルごとに 1 つのコンパイルのカバレッジ データが保存されます。結果として、まれに 1 回のビルドでソース ファイルが複数回コンパイルされる場合、最後のコンパイルのカバレッジ データだけが保存されます。結果として、レポートを生成すると、次の警告とともに不完全なカバレッジ レポートが生成される場合があります。「コードの構造に関する一部の情報が現在のワークスペースに存在しないため、カバレッジ レポートは不完全です。」1 つのソース ファイルに対して複数のカバレッジ データ (コンパイルごとに 1 つのバリアント) を保存するには、
例cpptestcc -coverage-data-variants [...] |