このセクションの内容
はじめに
C/C++test のマルチメトリクス カバレッジ解析機能は、スタンドアロンアプリケーションやライブラリを C/C++test の外で実行した際のコード カバレッジをモニターできます。
C/C++testには、以下のコンポーネントからなるスタンドアロンのカバレッジ パッケージが付属しています。
[INSTALL_DIR]/cpptestcc
- ビルド プロセスに統合し、カバレッジデータを収集できるようアプリケーションをインストゥルメントするカバレッジツールです。[INSTALL_DIR]/engine/coverage/runtime
- インストゥルメントされたアプリケーションに統合する必要があるカバレッジランタイム ライブラリです。
cpptestcc
によるカバレッジの収集は、以下の 3 つのフェーズで行われます。
cpptestcc
ツールをビルドに統合し、アプリケーションをインストゥルメントする。- インストゥルメントされたコードを実行し、raw カバレッジ データを収集する。
- ビルトイン テスト コンフィギュレーションを使用して raw カバレッジ データを C/C++test にインポートし、C/C++test でカバレッジを確認する。
cpptestcc
のクイックスタート
cpptestcc
を実行できるよう、PATH
システム変数に[INSTALL_DIR]
へのパスを追加します。- コンパイル コマンドを変更し、
--
を区切り文字としたコンパイラコマンドの接頭辞としてcpptestcc
実行モジュールを含めます。 例:元のコンパイル コマンド ライン
cc -I app/includes -D defines -c source.cpp
変更後のコンパイル コマンド ライン
cpptestcc -compiler gcc_7 -line-coverage -- cc -I app/includes -D defines -c source.cpp
cpptestcc
ツールを利用するには、少なくとも以下のパラメーターがコマンドラインに設定されている必要があります。- コンパイラ識別子
-compiler <COMPILER_ID>
- カバレッジメトリクス (例:
-decision-coverage
)その他のオプションについては、「Command Line Reference for cpptestcc」を参照してください。
- リンカー コマンドを変更し、C/C++test に付属のビルド済みカバレッジランタイム ライブラリへのパスを指定して、アプリケーションにこのライブラリを追加します。例:
元のコンパイル コマンド ライン
lxx -L app/lib app/source.o somelib.lib -o app.exe
変更後のコンパイル コマンド ライン
lxx -L app/lib app/source.o somelib.lib [INSTALL_DIR]/engine/coverage/runtime/lib/cpptest.lib -o app.exe
重要
カバレッジ ランタイムのライブラリが共有 (動的ロード) ライブラリとしてリンクされる場合、インストゥルメントされたアプリケーションの開始時にカバレッジ ツールのライブラリを確実にロードできるようにする必要があります。それには、通常、
[INSTALL_DIR]/engine/coverage/runtime/bin
をPATH
環境変数に追加するか (Windows の場合)、[INSTALL_DIR]/engine/coverage/runtime/lib
をLD_LIBRARY_PATH
環境変数に追加します (Linux の場合)。C/C++test には、Window および Linux のネイティブ アプリケーション用にビルド済みのカバレッジ ランタイム ライブラリが付属しています。クロスプラットフォームおよび組み込みテストの場合は、[INSTALL_DIR]/engine/coverage/runtime
のソースからランタイム ライブラリをビルドする必要があります。詳細は「カバレッジ ランタイム ライブラリ」を参照してください。 - アプリケーションをビルドします。コードをインストゥルメントする際、
cpptestcc
は.cpptest/cpptestcc
フォルダーを作成します。ここには、重要なカバレッジ関連データ (「カバレッジ マップ」) が保存されます。デフォルトでは、フォルダーは現在のコンパイルの作業ディレクトリに作成されます。-workspace <path>
オプションを使用してデフォルトの場所を変更できます。詳細は「Command Line Reference for cpptestcc」を参照してください。 - アプリケーションを実行します。
cpptest_results.clog
ファイルにカバレッジ データ (「カバレッジ ログ」) が保存されます。 - C/C++test がインストールされた IDE で、アプリケーションのすべてのソース ファイルを含む新規プロジェクトを作成します。
ファイルおよびすべてのパスに変更がないことを確認します。 - プロジェクトを選択し、IDE のメニューで [Parasoft] > [テスト コンフィギュレーション] > [Utilities] > [Load Application Coverage] をクリックしてカバレッジ データをインポートします (詳細は「Importing the Coverage Data」を参照)。
- カバレッジ情報を参照します (「カバレッジ情報の参照」を参照)。
カバレッジ データのインポート
Load Application Coverage テスト コンフィギュレーションは、.cpptest/cpptestcc
フォルダーと cpptest_results.clog
ファイルの両方がデフォルトの場所にあると仮定します。場所をカスタマイズするには、テスト コンフィギュレーションの実行の詳細オプション ([実行] > [全般] > [実行の詳細]) で以下のように設定します。
- Coverage map files root location - デフォルト: ${project_loc}/.cpptest/cpptestcc
- Coverage log files - デフォルト: ${project_loc}/*.clog
デフォルトでは、Load Application Coverage テスト コンフィギュレーションは、すべてのサポート対象カバレッジ メトリクスの情報をロードしようとします。サポート対象カバレッジ メトリクスのリストをカスタマイズするには、 [実行] > [全般] > [実行の詳細] > [インストゥルメント モード] > [インストゥルメント機能]> [C/C++ コード カバレッジ メトリクス] に移動し、レポートしたいメトリクスを選択します。
コンパイル コマンドラインで cpptestcc
ツールに対して有効に指定したメトリクスと一貫性を保つよう推奨します。
cpptestcc
コマンド ライン リファレンス
次のコマンドを実行すると、利用可能なオプションがコンソールに表示されます: cpptestcc -help
以下のオプションがあります。
- -compiler <name|path>
- -list-compilers
- -include <file|pattern> and -exclude <file|pattern>
- -ignore <pattern>
- -line-coverage
- -optimized-line-coverage
- -function-coverage
- -optimized-function-coverage
- -statement-coverage
- -optimized-statement-coverage
- -block-coverage
- -optimized-block-coverage
- -path-coverage
- -decision-coverage
- -optimized-decision-coverage
- -simple-condition-coverage
- -optimized-simple-condition-coverage
- -mcdc-coverage
- -call-coverage
- -optimized-call-coverage
- -coverage-early-init
- -coverage-auto-finalization
- -optimized-coverage-corruption-detection
- -template-coverage
- -workspace <path>
- -psrc <file>
- -version
-compiler <name|path>
コード解析およびインストゥルメンテーションに使用するコンパイラ構成の名前を指定します。「コンパイラ」でサポート対象コンパイラの一覧を参照するか、-list-compilers
コマンド ライン オプションを使用してサポート対象コンパイラの一覧をコンソールに表示します。
例:
cpptestcc -compiler gcc_3_4
cpptestcc -compiler vc_11_0
設定ファイルの書式 (-psrc を参照): cpptestcc.compiler <name>
-list-compilers
サポート対象のすべてのコンパイラ コンフィギュレーション名を出力します。
設定ファイルの書式 (-psrc を参照): cpptestcc.listCompilers
-include <file|pattern> and -exclude <file|pattern>
指定されたパターンに一致するすべてのファイルをインストゥルメントのスコープに含めたり、スコープから除外します。
最終的なフィルタリングは、すべての include/exclude を指定された順序で適用した結果によって決まります。
次のワイルドカードがサポートされています。
?
- 任意の 1 文字*
- 任意の文字の連続
シェルが *
ワイルドカードをファイルまたはディレクトリのリストに展開するのを防ぐには、regex:
接頭辞を使用して値を指定します。
このオプションは複数回指定できます。
設定ファイルの書式 (-psrc を参照): cpptestcc.include <path|pattern>
例 1:
サンプル プロジェクト レイアウト:
<project root> + external_libs + src + include
プロジェクトのレイアウトが上記のとおりである場合、下記のコマンドは external_libs
ディレクトリのすべてのファイルをインストゥルメント スコープから除外します。
cpptestcc -include regex:*/<project root>/* -exclude regex:*/<project root>/external_libs <other command line options>
例 2:
サンプル プロジェクト レイアウト:
<project root> <sourcefiles>.cpp <headerfiles>.hpp
プロジェクトのレイアウトが上記のとおりである場合、下記のコマンドはヘッダー ファイルだけをインストゥルメントします (ソース ファイルはインストゥルメントされません)。
cpptestcc -include regex:*-exclude regex:*.cpp <remaining part of cmd>
-ignore <pattern>
処理時に無視されるソース ファイルを指定します。指定されたパターンに一致するファイルは、コンパイルはされますが、パースもインストゥルメントもされません。
-ignore と -exclude の比較
-ignore
オプションは、指定されたファイルを完全に処理から外すため、カバレッジ エンジンはファイルをパースしません。
-include/-exclude
フィルターはソース コードがパースされた後に適用されるため、ヘッダーファイルを個別にインストルメントするかしないか選択できます。
-ignore
オプションを使用すると、一部のコード セクション (たとえば外部ライブラリなど) のカバレッジ解析を無視することでカバレッジ解析ビルド時間のオーバーヘッドを短縮したり、処理中に問題 (パース エラーなど) の原因となる特定のファイルを無視できます。
次のワイルドカードがサポートされています。
?
- 任意の 1 文字*
- 任意の文字の連続
シェルが *
ワイルドカードをファイルまたはディレクトリのリストに展開するのを防ぐには、regex:
接頭辞を使用して値を指定します。
このオプションは複数回指定できます。
設定ファイルの書式 (-psrc を参照): cpptestcc.ignore <path|pattern>
例:
cpptestcc -ignore "*/Lib/*" <remaining part of cmd>
cpptestcc -ignore regex:*/file.c <remaining part of cmd>
cpptestcc -ignore c:/proj/file.c <remaining part of cmd>
cpptestcc -ignore "*/MyLib/*.cpp" -ignore file.cpp <remaining part of cmd>
-line-coverage
行カバレッジ メトリクスの収集を有効にします。
ランタイム カバレッジの結果は、コード実行と同時に結果ログに書き込まれます。これによってテスト対象コードの実行時間にオーバーヘッドが加わりますが、アプリケーションがクラッシュした場合でもカバレッジ データが収集されることを保証できます。
設定ファイルの書式 (-psrc を参照): cpptestcc.lineCoverage [true|false]
-optimized-line-coverage
最適化された行カバレッジの収集を有効にします。
ランタイム カバレッジの結果はメモリに格納され、アプリケーションの終了後またはユーザーが要求したときに結果ログに書き込まれます。これによってパフォーマンスが向上しますが、アプリケーションがクラッシュした場合は結果が失われます。
設定ファイルの書式 (-psrc を参照): cpptestcc.optimizedLineCoverage [true|false]
-function-coverage
関数カバレッジの収集を有効にします。
設定ファイルの書式 (-psrc を参照): cpptestcc.functionCoverage [true|false]
-optimized-function-coverage
最適化された関数カバレッジの収集を有効にします。設定ファイルの書式 (-psrc を参照):
cpptestcc.optimizedFunctionCoverage [true|false]
-statement-coverage
ステートメント カバレッジの収集を有効にします。設定ファイルの書式 (-psrc を参照):
cpptestcc.statementCoverage [true|false]
-optimized-statement-coverage
ステートメント カバレッジの収集を有効にします。
設定ファイルの書式 (-psrc を参照): cpptestcc.optimizedStatementCoverage [true|false]
-block-coverage
ブロック カバレッジの収集を有効にします。
設定ファイルの書式 (-psrc を参照): cpptestcc.blockCoverage [true|false]
-optimized-block-coverage
最適化されたブロック カバレッジの収集を有効にします。
設定ファイルの書式 (-psrc を参照): cpptestcc.optimizedBlockCoverage [true|false]
-path-coverage
パス カバレッジの収集を有効にします。
設定ファイルの書式 (-psrc を参照): cpptestcc.pathCoverage [true|false]
-decision-coverage
判断文 (Decision) カバレッジの収集を有効にします。
設定ファイルの書式 (-psrc を参照): cpptestcc.decisionCoverage [true|false]
-optimized-decision-coverage
最適化された判断文 (Decision) カバレッジの収集を有効にします。
設定ファイルの書式 (-psrc を参照): cpptestcc.optimizedDecisionCoverage [true|false]
-simple-condition-coverage
単純条件カバレッジの収集を有効にします。
設定ファイルの書式 (-psrc を参照): cpptestcc.simpleConditionCoverage [true|false]
-optimized-simple-condition-coverage
最適化された単純条件カバレッジの収集を有効にします。
設定ファイルの書式 (-psrc を参照): cpptestcc.optimizedSimpleConditionCoverage [true|false]
-mcdc-coverage
MC/DC カバレッジの収集を有効にします。
設定ファイルの書式 (-psrc を参照): cpptestcc.mcdcCoverage [true|false]
-call-coverage
コール カバレッジの収集を有効にします。
設定ファイルの書式 (-psrc を参照): cpptestcc.callCoverage [true|false]
-optimized-call-coverage
最適化されたコール カバレッジの収集を有効にします。
設定ファイルの書式 (-psrc を参照): cpptestcc.optimizedCallCoverage [true|false]
-coverage-early-init
アプリケーションのエントリ ポイント先頭でカバレッジ モジュールの初期化を有効にします。
設定ファイルの書式 (-psrc を参照): cpptestcc.coverageEarlyInit [true|false]
-coverage-auto-finalization
このオプションがオンの場合、アプリケーション終了時に自動的にカバレッジの収集を終了します。このオプションはデフォルトでオンです。
設定ファイルの書式 (-psrc を参照): cpptestcc.coverageAutoFinalization [true|false]
-optimized-coverage-corruption-detection
最適化されたカバレッジで破損検出アルゴリズムを有効にします。
設定ファイルの書式 (-psrc を参照): cpptestcc.optimizedCoverageCorruptionDetection [true|false]
-template-coverage
テンプレート クラスおよび関数のカバレッジ収集を有効にします。
設定ファイルの書式 (-psrc を参照): cpptestcc.templateCoverage [true|false]
-workspace <path>
コード解析およびインストゥルメント時にコードの構造に関する情報が保存されるカスタム ディレクトリを指定します。cpptestcc
ツールは、最終的なカバレッジ レポートを生成する際にこの情報を使用します。
デフォルトでは、情報は現在のコンパイルの作業ディレクトリに保存されます。コンパイルで複数の作業ディレクトリを使用する場合、すべてのカバレッジ データが同じ場所に保存されるよう、カスタム ディレクトリを指定することを推奨します。
設定ファイルの書式 (-psrc を参照): cpptestcc.workspace <path>
-psrc <file>
その他の cpptestcc
オプションを設定した設定ファイルへのパスを指定します。
デフォルトでは、cpptestcc
ツールは現在の作業ディレクトリまたはユーザーの HOME ディレクトリにある .psrc
ファイルを読み取ります。このオプションを使用すると、設定ファイルのカスタムの場所を指定できます。
オプションがコマンド ラインと設定ファイルの両方で設定されている場合、cpptestcc
はコマンド ラインで指定された値を使用します。
-version
バージョン情報を出力します。
-help
ヘルプ メッセージを出力して終了します。
カバレッジ ランタイム ライブラリ
カバレッジ ランタイム ライブラリは、アプリケーション実行時にカバレッジ情報を出力するためにソース コード インストゥルメンテーションによって使用されるヘルパー関数およびサービスのコレクションです。インストゥルメントされたアプリケーションは、ライブラリなしではリンクできません。テスト対象プロジェクトのタイプによって、異なる方法でランタイム ライブラリを最終的なテスト可能バイナリにリンクすることができます。
インストゥルメントされたコードに基本的なサービスを提供するほか、ライブラリはコード カバレッジ ソリューションを特定の開発環境向けに調整するためにも使用されます。たとえば、テスト対象の組み込みデバイスと開発ホストの間でカバレッジ結果を送受信するために非標準的なトランスポートをサポートする場合などです。
ビルド済みのバージョンとカスタマイズされたビルド
C/C++test にはランタイム ライブラリのビルド済みのバージョンが付属しています。これらのバージョンは、C/C++test がインストールされているのと同じプラットフォームでの使用に適しています。多くの場合、ネイティブで開発されたアプリケーションは、ランタイム ライブラリのビルド済みのバージョンを使用してコード カバレッジを収集できます。
クロスプラットフォームのアプリケーションを開発するユーザーは、適切なクロス コンパイラおよび場合によってはリンカーを使用してカバレッジ ランタイム ライブラリのカスタム ビルドを用意する必要があります。C/C++test にはコード カバレッジ ランタイム ライブラリのソース コードが付属しています。
カバレッジ ランタイム ライブラリのカスタム ビルドの準備に必要なプロセスは、通常は、カバレッジ ランタイム ライブラリのソース コードをコンパイルすることだけです。状況によっては、一部のソース コードをインストールしてコード カバレッジを特定の開発プラットフォーム向けに変更する必要がある場合もあります。このプロセスについては、後のセクションで説明します。
ビルド済みランタイム ライブラリの使用
C/C++test には以下のバイナリ ファイルが含まれています。
Windows (x86 および x86-64)
ファイル | 説明 |
---|---|
[INSTALL_DIR]/engine/coverage/runtime/lib/cpptest.a | Cygwin GNU GCC で使用される 32 bit 版のインポート ライブラリです。リンク コマンド ラインに追加します。 |
[INSTALL_DIR]/engine/coverage/runtime/lib/cpptest64.a | Cygwin GNU GCC コンパイラで使用される 64 bit 版のインポート ライブラリです。リンク コマンド ラインに追加します。 |
[INSTALL_DIR]/engine/coverage/runtime/lib/cpptest.lib | Microsoft Visual C++ コンパイラで使用される 32 bit 版のインポート ライブラリです。リンク コマンド ラインに追加します。 |
[INSTALL_DIR]/engine/coverage/runtime/lib/cpptest64.lib | Microsoft Visual C++ コンパイラで使用される 64 bit 版のインポート ライブラリです。リンク コマンド ラインに追加します。 |
[INSTALL_DIR]/engine/coverage/runtime/bin/cpptest.dll | 32 bit 版の動的リンク ライブラリです。PATH 環境変数に [INSTALL_DIR]/engine/coverage/runtime/bin を追加します。 |
[INSTALL_DIR]/engine/coverage/runtime/bin/cpptest64.dll | 64 bit 版の動的リンク ライブラリです。PATH 環境変数に[INSTALL_DIR]/engine/coverage/runtime/bin を追加します。 |
Linux (x86 および x86-64)
ファイル | 説明 |
---|---|
[INSTALL_DIR]/engine/coverage/runtime/lib/libcpptest.so | 32 bit 版の共有ライブラリです。リンク コマンド ラインに追加します。LD_LIBRARY_PATH に [INSTALL_DIR]/engine/coverage/runtime/lib を追加します。 |
[INSTALL_DIR]/engine/coverage/runtime/lib/libcpptest64.so | 64 bit 版の共有ライブラリです。リンク コマンド ラインに追加します。LD_LIBRARY_PATH に [INSTALL_DIR]/engine/coverage/runtime/lib を追加します。 |
あらかじめ用意されていない形式のランタイム ライブラリを使用する必要がある場合、特定の開発環境の要件に合わせたカバレッジ ランタイム ライブラリのカスタム ビルドを用意します。詳細については「ランタイム ライブラリのカスタマイズ」を参照してください。
リンカー コマンド ラインとの統合
カバレッジ ランタイム ライブラリをテスト対象アプリケーションと統合するリンク プロセスでは、通常はリンカー コマンド ラインの変更が必要であり、場合によっては実行環境の変更も必要です。このセクションでは、C/C++test に付属しているビルド済みのバージョンを使用する場合にリンク プロセスを変更する方法を説明します。
Windows Cygwin GNU GCC コンパイラ用の静的ライブラリの場合
- ビルド スクリプト内のリンカー コマンド ラインを特定します。
- ビルド スクリプトを変更し、リンカー コマンド ラインの任意の場所にカバレッジ ランタイム ライブラリを指定します。できればすべてのオブジェクト ファイルの後に指定します。
Microsoft Visual C++ コンパイラ用の動的リンク ライブラリの場合
- ビルド スクリプト内のリンカー コマンド ラインを特定します。
ビルド スクリプトを変更し、リンカー コマンド ラインの任意の場所にカバレッジ ランタイム ライブラリを指定します。できればすべてのオブジェクト ファイルの後に指定します。例:
$(LXX) $(PRODUCT_OBJ) $(OFLAG_EXE)$(PROJ_EXECUTABLE) $(LXXFLAGS) $(SYSLIB) $(EXECUTABLE_LIB_LXX_OPTS) [INSTALL_DIR]/engine/coverage/runtime/lib/cpptest.lib
PATH
環境変数に[INSTALL_DIR]/engine/coverage/runtime/bin
ディレクトリが追加されており、テスト対象プログラムを開始したときにライブラリをロードできることを確認します。cpptest.dll
(またはcpptest64.dll
) ファイルを実行モジュールと同じディレクトリ、またはテスト対象アプリケーションの起動時に動的リンク ライブラリを検索するその他の場所にコピーすることを検討するとよいでしょう。
GNU GCC コンパイラ用共有ライブラリの場合
- ビルド スクリプト内のリンカー コマンド ラインを特定します。
ビルド スクリプトを変更し、リンカー コマンド ラインの任意の場所にカバレッジ ランタイム ライブラリを指定します。できればすべてのオブジェクト ファイルの後に指定します。例:
$(LXX) $(PRODUCT_OBJ) $(OFLAG_EXE)$(PROJ_EXECUTABLE) $(LXXFLAGS) $(SYSLIB) $(EXECUTABLE_LIB_LXX_OPTS) -L [INSTALL_DIR]/engine/coverage/runtime/lib -lcpptest
-L [INSTALL_DIR]/engine/coverage/runtime/lib
and-lcpptest
オプションが追加されていることに注意してください。- テスト対象実行モジュールが共有ライブラリを確実に見つけられるよう、
LD_LIBRARY_PATH
環境変数に[INSTALL_DIR]/engine/coverage/runtime/lib
を追加します。
ランタイム ライブラリのカスタマイズ
以下の条件に当てはまる場合、ランタイム ライブラリをカスタマイズする必要がある可能性があります。
- 別の形式のバイナリ ファイルが必要である。
- 結果を転送するためにデフォルト以外の通信チャネルを有効にする
- 結果を転送するために通信チャネルのカスタム 実装をインストールする
- 標準サポート以外のマルチスレッド アプリケーションを有効にする
- マルチスレッド アプリケーションをサポートするためのカスタム実装をインストールする
ライブラリのソース コードの構造
C/C++test に付属しているランタイム ライブラリのソース コードは、[INSTALL_DIR]/engine/coverage/runtime
ディレクトリにあります。次の表は、使用方法の説明です。
コンポーネント | 説明 |
---|---|
include | ライブラリのインクルード ファイルがあるディレクトリです。 |
src | ライブラリのソース ファイルがあるディレクトリです。 |
Makefile | ランタイム ライブラリのビルド用に提供されている基本的な Makefile です。 |
target | 最も一般的に使用される開発環境用にランタイム ライブラリ ビルドを準備するためのコンパイラ固有のオプションを含む Makefile インクルード ファイルのセットがあるディレクトリです。 |
channel | サポート対象の通信チャネル用構成を含む Makefile インクルード ファイルのセットがあるディレクトリです。 |
通信チャネルサポートの切り替え
ランタイム ライブラリはさまざまな通信チャネル経由でのデータ収集をサポートしています。使用される通信チャネルは開発環境に依存します。多くの場合、結果を 1 つまたは複数のファイルに格納するのが適切ですが、TCP/IP ソケットまたは RS232 による転送が必要な場合もあります。特定の通信チャネルを有効にするには、ライブラリのソース ファイル cpptest.c
をコンパイルするときに専用のマクロに値を設定します。値を設定するには、コンパイル コマンド ラインに -D<MACRO>
を追加します。次の表は、通信チャネル制御マクロの一覧です。
チャネル | 説明 |
---|---|
CPPTEST_NULL_COMMUNICATION | 空の実装です。このチャネルを有効にすると、結果は送信されません。初回のテスト ビルドおよびデバッグに適しています。 |
CPPTEST_FILE_COMMUNICATION | ファイルベースの実装です。ANSI C のファイル I/O インターフェイスが使用されます。このチャネルを有効にすると、結果はローカル ドライブのファイルに書き込まれます。 次の詳細設定マクロがあります。
|
CPPTEST_SPLIT_FILE_COMMUNICATION | ファイルベースの実装です。ANSI C のファイル I/O インターフェイスが使用されます。このチャネルを有効にすると、結果はローカル ドライブのファイルに書き込まれます。 以下のマクロを使ってこのチャネルを設定できます。
一連のすべてのファイルが同じディレクトリに置かれるようにします。
|
CPPTEST_UNIX_SOCKET_COMMUNICATION | TCP/IP ソケット ベースの実装です。POSIX API が使用されます。このチャネルを有効にすると、結果は指定された TCP/IP ポートに送信されます。次の詳細設定マクロがあります。
|
CPPTEST_WIN_SOCKET_COMMUNICATION | 上記と同じですが、MS Windows API が使用されます。 |
CPPTEST_UNIX_SOCKET_UDP_COMMUNICATION | CPPTEST_UNIX_SOCKET_COMMUNICATION と同じですが、UDP ベースの実装です。 |
CPPTEST_RS232_UNIX_COMMUNICATION | RS232 ベースの実装です。POSIX API が使用されます。このチャネルを有効にすると、結果は指定された RS232 システム デバイスを経由して送信されます。次の詳細設定マクロがあります。
|
CPPTEST_RS232_WIN_COMMUNICATION | CPPTEST_RS232_UNIX_COMMUNICATIONと同じですが、MS Windows API が使用されます。 |
CPPTEST_RS232_STM32F103ZE_COMMUNICATION | STM32F103x USART ベースの実装です。STM Cortex ライブラリ インターフェイスが使用されます (ST/STM32F10x/stm32f10x.h ヘッダー ファイルが必要です)。 |
CPPTEST_HEW_SIMIO_COMMUNICATION | Renesas HEW シミュレーター固有の実装です。 |
CPPTEST_LAUTERBACH_FDX_COMMUNICATION | Lauterbach TRACE32 ベースの実装です (FDX が使用されます)。 |
CPPTEST_ITM_COMMUNICATION | ARM CoreSight ITM ユニット ベースの通信です。CMSIS ヘッダー ファイルが必要です。 |
CPPTEST_CUSTOM_COMMUNICATION | カスタム実装のための空のテンプレートを有効にします。 |
提供されている Makefile でカバレッジ ランタイム ライブラリをビルドする場合、[INSTALL_DIR]/engine/coverage/runtime/channel
ディレクトリにある make 設定ファイルを使用できます。
カスタム通信チャネルのサポートをインストール
お使いの開発環境に合う通信チャネルの実装がない場合、カスタム実装を使用できます。次の手順は、ランタイム ライブラリをカスタマイズして通信チャネルのカスタム実装を使用する方法を説明しています。
[INSTALL_DIR]/engine/coverage/runtime/src/cpptest.c
のコピーを作成して編集用にファイルを開きます。セクション 1.13 "Custom Communication Implementation" の場所を探します。
カスタム通信の実装セクションには、4 つの異なるメソッドのための空のテンプレートがあります。関数 説明 void cpptestInitializeStream(void)
この関数は通信チャネルの初期化を行います。たとえば、ソケットの作成および接続や、UART デバイスの初期化などを行います。 void cpptestFinalizeStream(void)
この関数は、通信チャネルの後処理を行います。たとえば、TCP/IP ソケットのクローズなどを行います。 int cpptestSendData(const char *data, unsigned size)
この関数は、データ バッファーからのサイズ バイトを送信します。 void cpptestFlushData(void)
この関数は、データをフラッシュします。フラッシュの意味は、トランスポートタイプによって異なります。一部の実装では、あまり意味がない可能性もあります。その場合、関数は空のままにしておきます。 - お使いの環境の要件に合わせてこれらのメソッドを実装します。
- コンパイル コマンド ラインに次のマクロ定義を付加して
cpptest.c
をコンパイルします。"-DCPPTEST_CUSTOM_COMMUNICATION"
- 生成されたオブジェクトファイルでは不十分な場合、要求に合わせてさらにファイルを処理できます (共有ライブラリを作成するなど)。
マルチスレッド API サポートの切り替え
ランタイム ライブラリはマルチスレッド アプリケーションをサポートします。POSIX、Windows、および VxWorks API がサポートされます。特定のマルチスレッド API のサポートを有効にするには、cpptest.c
をコンパイルするときにコンパイル コマンド ラインに -D<MACRO>
を追加します。次の表は、マルチスレッド API サポート制御マクロの一覧です。
マクロ | 説明 |
---|---|
CPPTEST_NO_THREADS | 空の実装です。カバレッジ ランタイムはマルチスレッド アプリケーションと共に使用できません。 |
CPPTEST_WINDOWS_THREADS | Windows のマルチスレッド API 実装です。 |
CPPTEST_UNIX_THREADS | POSIX のマルチスレッド API 実装です。 |
CPPTEST_VXWORKS_THREADS | VxWorks のマルチスレッド API 実装です。 |
カスタム スレッド API サポートのインストール
サポート対象外のマルチスレッド API を使用するマルチスレッド アプリケーションと共に C/C++test のカバレッジ エンジンを使用する場合、お使いのマルチスレッド API と共に動作するようランタイム ライブラリをカスタマイズできます。それには、次の手順を行う必要があります。
[INSTALL_DIR]/engine/coverage/runtime/src/cpptest.c
のコピーを作成して編集用にファイルを開きます。セクション 2.5 "Custom Communication Implementation" の場所を探します。
カスタム通信の実装セクションには、4 つの異なるメソッドのための空のテンプレートがあります。関数 説明 static int cpptestLock(void)
この関数は、カバレッジ ツール ランタイム ライブラリ内の処理が同期されることを保証します。あるスレッドがランタイム ライブラリ サービスへのアクセスをロックした場合、その間はアトミックな処理が行われ、他のスレッドがランタイム ライブラリ サービスを使用できないことを意味します。ロックが解放されると、他のスレッドがランタイム ライブラリ サービスを使用できるようになります。 static int cpptestUnlock(void)
ランタイム ライブラリ サービスを解放します。 お使いの環境の要件に合わせてこれらのメソッドを実装します。
コンパイル コマンド ラインに次のマクロ定義を付加して
cpptest.c
をコンパイルします。"-DCPPTEST_CUSTOM_THREADS"
生成されたオブジェクトファイルでは不十分な場合、要求に合わせてさらにファイルを処理できます (共有ライブラリを作成するなど)。
ランタイム ライブラリのビルド
ランタイムのビルド プロセスを簡略化するため、C/C++test には簡単な Makefile が付属しています (「Library Source Code Structure」を参照)。しかし、ソース コードがすでにビルド プロセス用に最適化されているため、多くの場合、付属の make ファイルは必要ありません。常に必要なステップは、cpptest.c
ソース ファイルのコンパイルだけです。生成されたオブジェクト ファイルをさらに処理する必要があるかどうかは、個々の開発環境や、ランタイム ライブラリを共有ライブラリとして提供するかなどの要件によります。
付属の Makefile を使用したランタイム ライブラリのビルド
[INSTALL_DIR]/engine/coverage/runtime
をローカル ディレクトリにコピーします。- コンパイル フラグを変更する必要がある場合 (たとえば特定のクロスコンパイラ固有の指定や定義を追加してランタイム ライブラリの再設定を強制する場合など)、ターゲット ライブラリに新しい make 設定ファイルを用意します。簡単に設定を行うには、既存のターゲット設定ファイルをコピーし、必要に応じて内容を修正します。
次のコマンド ラインを呼び出すと、単一のオブジェクト
cpptest.<OBJ_EXT>
を含むサブディレクトリbuild
が作成されます。それを使用してインストゥルメントされたアプリケーションとリンクできます。make TARGET_CFG=<target config file name> CHANNEL_FILE=<channel config file name>
コマンドは次のようになります。
make TARGET_CFG=gcc-static.mk CHANNEL_FILE=channel/unix-socket.mk
チャネル タイプを指定することもできます。
make TARGET_CFG=gcc-static.mk CHANNEL_TYPE=unix-socket
- カバレッジ ランタイム ライブラリを共有ライブラリ、動的リンク ライブラリ、またはその他のバイナリ形式でリンクする必要がある場合、目的に合わせて Makefile をカスタマイズするか、カスタム ビルドをセットアップする必要があります。
ランタイム ライブラリのユーザー ビルド
カバレッジ ランタイム ライブラリのユーザー ビルドをセットアップするには、次の操作を行います。
[INSTALL_DIR]/engine/coverage/runtime/src/cpptest.c
から任意の場所に cpptest.c ファイルをコピーします。- 「ランタイム ライブラリのカスタマイズ」の説明に従って任意のカスタマイズを行います。
- 任意のビルド システムをセットアップします (例: IAR Embedded Workbench プロジェクトまたはその他のソース コード ビルダー)。
- コンパイル フラグを変更し、コンパイラ インクルード フラグ (通常は
-I
) に次の値を含めます。-I[INSTALL_DIR]/engine/coverage/runtime/include
- 5.必要な設定の定義 (通常は
-D
) を追加します。 例:-DCPPTEST_FILE_COMMUNICATION -DCPPTEST_NO_THREADS
- ビルダーを実行します (たとえば、IDE でビルド コマンドを選択します)。
- 結果として作成されたオブジェクト ファイルの場所を確認し、インストゥルメントされたアプリケーションとリンクします。