このセクションではC/C++ ツールチェーンまたは Docker コンテナによって提供されるテスト環境を使用して解析やテストを実行する方法を説明します。
このセクションの内容
C/C++test は Docker コンテナでの解析およびテストの実行をサポートしています。このシナリオでは、テスト環境または C/C++ ツールチェーンを含むコンテナで解析およびテストを実行するようローカル マシンにホストされた C/C++test を構成します。
C/C++test の Docker 統合は次のコンポーネントで構成されます。
[INSTALL_DIR]/integration/docker にある Docker コンテナでのリモート プロセス実行用スクリプト:remote-gcc – gcc コマンド ラッパーremote-g++ – g++ コマンド ラッパーremote-exec – 汎用コマンド ラッパーbuiltin://Run Unit Tests in Container – Docker コンテナ内で単体テストを実行するためのテスト コンフィギュレーションC/C++test と Docker コンテナ間の通信を可能にするには、ホスト上の C/C++test でテストしたいプロジェクトに関連するすべてのディレクトリにコンテナがアクセスできること、またC/C++test が識別子または名前でコンテナを識別できることを確認してください。
CPPTEST_CONTAINER_NAME 環境変数にコンテナの ID またはコンテナ名を設定します。利用しやすいよう、コンテナに読みやすく意味のある名前を付けることを推奨します。次のサンプルは、プロジェクトとすべてのソース ファイルが Eclipse ワークスペース (/home/devel/workspace) にあり、C/C++test が /opt/parasoft/cpptest にインストールされていると仮定します。--name オプションで指定されたコンテナ名 "gcc9-test-container" は、コンテナ イメージに GCC 9 コンパイラが含まれていることを示します。
docker run --rm -it -d -v /opt/parasoft/cpptest:/opt/parasoft/cpptest -v /home/devel/workspace:/home/devel/workspace --name gcc9-test-container gcc:9 |
環境変数にコンテナ名を設定します。
export CPPTEST_CONTAINER_NAME=gcc9-test-container |
Docker コンテナでテストを実行するには、カスタムコンパイラ設定を作成し、C/C++test のランタイム ライブラリをコンテナ内でビルドできるようにする必要があります。
<CUSTOM_COMPILER_CONFIG>/gui.properties ファイルを変更して次のオプションを設定または削除します。autoBuildRuntimeLib=true を設定linkerCmdLine から -lcpptestruntime64 を削除静的コード解析だけを実行する場合は、カスタム コンパイラ設定の作成をスキップできます。
プロジェクト プロパティを変更してプロジェクトのリモート ツールチェーンを設定する必要があります。
<CPPTEST_INSTALL_DIR>/integration/docker/remote-gcc<CPPTEST_INSTALL_DIR>/integration/docker/remote-g++<CPPTEST_INSTALL_DIR>/integration/docker/remote-g++<CPPTEST_INSTALL_DIR>/integration/docker からスクリプトをプロジェクトにコピーし、プロジェクトへの相対パスを指定することもできます。そうすると、設定をソース管理システムに保存し、チームで共有できます。例: ${project_loc}/docker/remote-gcc${project_loc}/docker/remote-g++${project_loc}/docker/remote-g++
静的解析を実行する前に、Docker コンテナが実行されていることを確認します (「コンテナの設定と開始」を参照)。それ以外の手順は必要ありません。
任意のテスト コンフィギュレーションを使用してコードを解析できます。解析時、C/C++test はプロジェクト プロパティで指定したラッパー スクリプトを経由してアクセスした Docker の C/C++ コンパイラを使用します (「コンテナでのテスト用にプロジェクトをセットアップする」を参照)。
C/C++test で単体テストを作成する前に、Docker コンテナが実行されていることを確認します (「コンテナの設定と開始」を参照)。それ以外の手順は必要ありません。
単体テストを生成するテスト コンフィギュレーション (たとえば builtin://Generate Unit Tests など) を使用できます。テスト生成時、C/C++test はプロジェクト プロパティで指定したラッパー スクリプトを経由してアクセスした Docker の C/C++ コンパイラを使用します (「コンテナでのテスト用にプロジェクトをセットアップする」を参照)。
C/C++test で単体テストを実行するには、次の操作を行います。
Run Unit Tests in Container を複製し、パラメーターを変更してカスタム テスト コンフィギュレーションを作成します。たとえば、[実行] > [全般] > [実行の詳細] > [リモート実行コマンド] で実行ラッパーを変更します。デフォルトは ${cpptest:install_dir}/integration/docker/remote-exec です。Run Unit Tests in Container テスト コンフィギュレーションを実行します。C/C++test は以下を実行します。remote-exec ラッパー スクリプトを使用してコンテナ内でテストを実行します。