以下の手順は事前準備 - 付属資料の配置&初期設定を既に設定済みであることを前提に進めています。
そのため、事前準備の章をまだ実施していない場合は、先にそちらの実施をお願いいたします。
DockerfileからDockerイメージ作成
<付属資料ディレクトリ>直下のdockerfileディレクトリへ移動します。
Dockerfileをエディタで開き、PATH設定においてC/C++testインストールディレクトリを実際の環境にあわせて変更します。
※C/C++testインストールディレクトリ以外の記述は変更不要です。
[Dockerfile] ※該当箇所のみ抜粋 ENV PATH "/opt/app/parasoft/cpptest:/opt/app/gcc-arm-none-eabi-9-2019-q4-major/bin:$PATH"
以下のコマンドでDockerイメージをビルドします。
$ docker build -t cpptest:cpptest ./
完了後、Dockerイメージが追加されていることを確認します。cpptest:cpptestが追加されていればDockerイメージの作成は成功です。
$ docker images
Dockerコンテナを起動してサンプルプロジェクトをビルド
作成したDockerイメージからコンテナを作成する際にホスト上のファイルシステムをマウントして、コンテナ内からアクセスできるようにしてコンテナを起動します。
docker runコマンドでコンテナを起動します。マウントするディレクトリは<付属資料ディレクトリ>と、
<ツールディレクトリ>をマウントし、コンテナ内からアクセス可能にします。
$ docker run --name cpptest_docker --workdir=/home/cpptest/work_docker -itd -v /home/cpptest/work_docker:/home/cpptest/work_docker -v /opt/app/parasoft:/opt/app/parasoft cpptest:cpptest
実行イメージ) ※ 実行コマンドが長いため、この例では改行して実行していますが、1行で実行しても構いません。 keio@keio-VirtualBox:/home/cpptest/work_docker/dockerfile$ docker run --name cpptest_docker \ --workdir=/home/cpptest/work_docker \ -itd \ -v /home/cpptest/work_docker:/home/cpptest/work_docker \ -v /opt/app/parasoft:/opt/app/parasoft \ cpptest:cpptest
以降、2.と3.の手順は、コンテナ内のクロスコンパイラ(arm-none-eabi-gcc)を用いてサンプルプロジェクトのビルドが可能であることを確認するための手順であり、必須の手順ではありません。
不要な場合はC/C++testプロジェクトの作成から進めてください。
コンテナにログインして、FlowAnalysisプロジェクトをビルドします。
$ docker exec --user 1000 -it cpptest_docker /bin/bash
<付属資料ディレクトリ>/FlowAnalysisディレクトリに移動し、FlowAnalysisプロジェクトをビルドします。
$ cd FlowAnalysis/ $ make
C/C++testプロジェクトの作成
ビルドデータファイル(BDF)の作成
C/C++testには、cpptesttraceというトレーサーがあります。このトレーサーにてプロジェクトのビルド情報を収集し、その収集情報からC/C++testへプロジェクトをインポートすることができます。
ホスト上の <付属資料ディレクトリ>/cpptest_work/tools/generate_BDF.shを実行します。
※サンプルプロジェクト名の FlowAnalysis もしくは Sensor を引数で渡す必要があります。
$ ./generate_BDF.sh FlowAnalysis
lsコマンドで、ホスト上の<付属資料ディレクトリ>/cpptest_work/<サンプルプロジェクト>直下にcpptestscan.bdfが作成されていることを確認します。
$ ls ../../FlowAnalysis/
C/C++testプロジェクトへインポート
作成したBDFを基にホスト上のC/C++testでプロジェクトをインポートします。
start_cpptest.shを実行し、C/C++testを起動します。
$ ./start_cpptest.sh
[ファイル]>[新規]>[プロジェクト]を選択します。
[C/C++test]>[ビルド データ ファイルからプロジェクトを作成]を選択し、[次へ]をクリックします。
[ビルド データ ファイル]>[参照]からビルドデータファイル(BDF)の作成の成果物であるcpptestscan.bdfを選択します。
以下のダイアログが表示されるので、[OK]を選択してください。
[コンパイラ設定]>[種類]よりarm-none-eabi-gcc 9.x(x86_64)を選択します。
※プルダウンリストの一番上に表示されます。以下のダイアログが表示されるので、[はい]を選択してください。
以下のように、C コンパイラとC++ コンパイラ、リンカーがそれぞれ事前準備で<C/C++testインストールディレクトリ>/integration/docker のremote-arm-none-eabi-gcc(g++)が正しく指定されることを確認し、[終了]を選択します。
※事前準備 - 付属資料の配置&初期設定の手順4.を実施していない場合、C/C++testインストールディレクトリが異なっていることがあります。その場合、直接正しいC/C++testインストールディレクトリに変更してください。
C/C++testプロジェクトの作成はSensorプロジェクトでも同様の手順でプロジェクト作成が可能です。FlowAnalysisをSensorに読み替えて実施してください。Sensorプロジェクトは単体テスト向けに実装が不完全(いくつかの関数が未実装)のサンプルプロジェクトです。make時にシンボル未定義のリンクエラーが発生しますが、BDF作成およびプロジェクトインポートには影響ありません。単体テスト時に、未定義の関数に対してスタブを作成することでテストを行うことが可能です。
以上でテスト環境の構築が完了となります。静的解析を実施する場合は静的解析の実行 (ARM GCC)、単体テストの場合は単体テストの実行 (ARM GCC)をご参照ください。