エラーや警告の情報など、カバレッジ ワークスペースの診断情報を表示する方法
カバレッジ ワークスペースにはインストゥルメントされたコード、対応する静的カバレッジ データとともに、コードがインストゥルメントされたときに生成されたログや設定ファイルが保存されています。-status
オプションを使用すると、エラーや警告の情報、ファイル数など、カバレッジ ワークスペースから収集された診断データを表示できます。より詳細な情報を表示するには、-status-verbose
を使用します。
デフォルトでは、現在のディレクトリにあるカバレッジ ワークスペースにある診断データが検索されます。-workspace オプションを使用して別のワークスペースの場所を指定することもできます。
例
cpptestcc -status
cpptestcc -status -workspace /path/to/workspace
cpptestcc -status-verbose
cpptestcc -status-verbose -workspace /path/to/workspace
カバレッジ ワークスペースの診断情報を Parasoft 製品サポートに送信する方法
-techsupport
オプションを使用してテクニカル サポート パッケージを作成できます。ログ ファイル、正常にインストゥルメントされなかった可能性があるファイルのプリプロセス済みソースコードなど、すべての診断データを含む .zip ファイルが作成されます。
デフォルトでは、現在のディレクトリにあるカバレッジ ワークスペースにある診断データが検索されます。-workspace オプションを使用して別のワークスペースの場所を指定することもできます。
例
cpptestcc -techsupport
cpptestcc -techsupport -workspace /path/to/workspace
アプリケーション カバレッジのレポートを生成したとき、見つからないソース ファイルがあった場合
カバレッジ レポートを生成するとき、C/C++test はコード カバレッジ収集のためにインストゥルメントされたすべてのファイルが元の場所にあることを必要とします。C/C++test が元の場所でファイルを見つけられなかった場合、カバレッジ レポートは不完全になります。そのような場合、C/C++test は警告メッセージとともに見つからないファイルのリストを表示します。
別の場所に移動されたファイルのカバレッジ データを含むカバレッジ レポートを生成するには、CPPTEST_COVERAGE_SRC_ROOT
環境変数を使用して元のパスをローカル (現在の) パスにマッピングします。
CPPTEST_COVERAGE_SRC_ROOT=/original/path1=/local/path1;/original/path2=/local/path2;...
元のパスの中で '*' をワイルドカードとして使用できます。例:
CPPTEST_COVERAGE_SRC_ROOT=/*/path=/local/path
リスト ファイル (*.lst) でパス マッピングのリストを指定し、ファイルの場所を値として設定することもできます。例:
CPPTEST_COVERAGE_SRC_ROOT=/path/mapping.lst
*.lstファイルの各アイテムが個別のエントリとして扱われます。
例
次の例では、カバレッジ収集のために foo.cpp ファイルがインストゥルメントされた後、別の場所に移動されました。
- インストゥルメントされたファイルの元の場所:
/home/server/project-123/foo.cpp
- インストゥルメントされたファイルの現在の場所 (レポート生成時の場所):
/home/devel/project/foo.cpp
foo.cpp ファイルのカバレッジ データを含むカバレッジ レポートを生成するには、次の操作を行います。
- CPPTEST_COVERAGE_SRC_ROOT 環境変数を使用してパスのマッピングを定義します。例:
> export CPPTEST_COVERAGE_SRC_ROOT=/home/server/project-123=/home/devel/project
- カバレッジ レポートを生成します。
コード カバレッジ収集のためにコードをインストゥルメントできなかった場合にビルドを失敗させる方法
デフォルトでは、ファイルを正常にインストゥルメントできない場合、ビルドでは元の (インストゥルメントされていない) ファイルが使用され、警告が表示されます。カバレッジ収集のためにインストゥルメントできないソース ファイルがあった場合にビルドを失敗させるには、-disable-auto-recovery-mode
オプションを使用します。
例
cpptestcc -disable-auto-recovery-mode [...]
1 回のビルドで複数回コンパイルされるファイルのカバレッジを収集する方法
デフォルトでは、ビルドに含まれるソース ファイルごとに 1 つのコンパイルのカバレッジ データが保存されます。結果として、まれに 1 回のビルドでソース ファイルが複数回コンパイルされる場合、最後のコンパイルのカバレッジ データだけが保存されます。結果として、レポートを生成すると、次の警告とともに不完全なカバレッジ レポートが生成される場合があります。「コードの構造に関する一部の情報が現在のワークスペースに存在しないため、カバレッジ レポートは不完全です。」1 つのソース ファイルに対して複数のカバレッジ データ (コンパイルごとに 1 つのバリアント) を保存するには、-coverage-data-variants
オプションを使用します。
1 つのソース ファイルの異なるコンパイルがコードの競合 (たとえば、1 つの関数の異なるバリアントなど) を発生させないよう注意してください - このようなケースはサポートされません。
例
cpptestcc -coverage-data-variants [...]
constexpr 関数のカバレッジを収集する方法
C/C++test は constexpr 関数にコード インストゥルメンテーションを適用しません。結果として、constexpr 関数に対してコード カバレッジ解析は実行されません。この制約は、以下のケースにも適用されます。
- 非 constexpr 関数で使用されている constexpr 関数
- 暗黙的に constexpr として扱われる関数。例: C++17 のラムダ関数
- C++20 の consteval 指定子を付けて宣言された関数