はじめに
本ページは、Dockerコンテナ上にインストールされたクロスコンパイラと実行環境を用いて、ホストPC上のC++testで静的解析・単体テストを行うサンプル環境の評価手順です。この仕組みを利用することにより、Dockerコンテナ上でしかビルド・実行ができないプロジェクトでも、ホスト上のC++testのライセンスを用いて静的解析・単体テストを行うことができます。また、ホスト上のC++testから実行するため、JenkinsなどのCI/CDを実現するツールと組み合わせて1つのライセンスで複数のDockerコンテナ内のクロス環境に対するテスト(※)を実行することが可能になります。
※1つのライセンスで実行可能なテストは1つ(単一プロセス)のみです。1ライセンスで複数のテストを並列実行できるわけではございません。
注意:
・本仕組みはホストOS/コンテナOS(ゲストOS)どちらもLinuxの場合に動作可能です。
ホストのソースコードパスとマウントしたDockerコンテナのソースコードパスが一致する必要があるためです。Dockerコンテナ上にC++testをインストールする場合、ホストOS/ゲストOSの制約はありません。
・Dockerのインストール手順は本資料には記載されておりません。
Dockerのインストール手順はLinuxのディストリビューションに合わせてDocker公式ページをご確認ください。
サンプル環境の概要
ホストOS上にインストールされたC++testからテストを実行すると、docker execコマンドを通してDockerコンテナ上のクロスコンパイラと実行環境を用いて静的解析・単体テストを行います。ホストのソースコードをマウントして実行するため、テスト結果をホスト上のC++testから確認できます。
添付資料
Dockerfile
|
custom_compiler |
test_configs |
set_env.sh/generate_BDF.sh/start_cpptest.sh
|
integration/docker |
サンプル環境構築手順
本手順書では、以下のディレクトリを前提として説明しています。これらのディレクトリパスはご利用の環境により異なりますので適宜読み替えてください。
<ホームディレクトリ>: /home/cpptest
<ツールディレクトリ>: /opt/app/parasoft
<C++testインストールディレクトリ>: /opt/app/parasoft/cpptest
事前準備 - 付属資料の配置&初期設定
付属資料を配置するための新規のディレクトリを<ホームディレクトリ>に作成します。
※ディレクトリ名称は任意ですが、マルチバイト文字は含めないようにしてください。
$ mkdir /home/cpptest/work_docker
手順1.のディレクトリに移動後、付属資料(Attachment.zipファイル)を配置し、展開します。
以降、work_dockerディレクトリを<付属資料ディレクトリ>とします。
$ unzip Attachment.zip
<付属資料ディレクトリ>/cpptest_work/tools/integrationディレクトリを<C++testインストールディレクトリ>にコピーします。
$ cp -r integration /opt/app/parasoft/cpptest
<付属資料ディレクトリ>/cpptest_work/tools/custom_compiler/arm-none-eabi-gcc_v9_x/gui.propertiesをエディタで開き、cppExecutable、cExecutable、linkerExecutableの三か所に記載されている<C++testインストールディレクトリ>を実際の環境にあわせて変更します。
[gui.properties] ※該当箇所のみ抜粋 cppExecutable=/opt/app/parasoft/cpptest/integration/docker/remote-arm-none-eabi-g++ cExecutable=/opt/app/parasoft/cpptest/integration/docker/remote-arm-none-eabi-gcc linkerExecutable=/opt/app/parasoft/cpptest/integration/docker/remote-arm-none-eabi-g++
<付属資料ディレクトリ>/cpptest_work/tools/set_env.shをエディタで開き、CPPTEST_INS_DIR変数の<C++testインストールディレクトリ>を実際の環境にあわせて変更します。
export CPPTEST_INS_DIR=/opt/app/parasoft/cpptest
start_cpptest.shを実行し、C++testを起動します。
$ ./start_cpptest.sh
[Parasoft] > [設定]にて、設定ダイアログを開き、ツリーより[Parasoft] > [コンフィギュレーション]を選択します。
それぞれ以下のように設定し、[適用]をクリック、[OK]を選択します。
ユーザー コンフィギュレーション: <付属資料ディレクトリ>/cpptest_work/tools/test_config
ユーザー定義ルール: チェック無効
カスタム コンパイラ: <付属資料ディレクトリ>/cpptest_work/tools/custom_compiler
[Parasoft] > [テストコンフィギュレーション]にて、テストコンフィギュレーションダイアログを開き、ツリーより[Parasoft] > [ユーザー定義] > [02. シンボル情報収集(docker)]を選択します。
テストコンフィギュレーションダイアログの右側より [実行]タブを選択し、[実行の詳細] > [テスト実行フロー:]下のRemote execution commandの右側の<C++testのインストールディレクトリ>を実際の環境にあわせて変更します。変更後、[適用]をクリック、[閉じる]を選択します。
[Parasoft] > [ユーザー定義] > [03. Run Unit Tests for ARM(docker)] に対しても、手順10.を行い、実際の環境にあわせて変更します。
以上で、初期設定は完了となります。この手順は初回のみ実施いただければ問題ありません。