このセクションの内容
前提条件
コンパイラ
コードを解析する前に、特定の C および C++ コンパイラの特定のバージョンを使用するよう C/C++test を構成する必要があります。テスト対象コードのビルドに使用した元々のコンパイラおよびバージョンに即したものを指定する必要があります。元のコンパイラ実行モジュールへのパスが $PATH 変数に含まれていなければなりません (コンパイラをフル パスで指定した場合を除く)。
コンパイラ構成識別子を指定するには、-compiler
オプションを使用します。
cpptestcli -config "builtin://Recommended Rules" -compiler gcc_4_5 -input cpptest.bdf
または、カスタム構成ファイルに cpptest.compiler.family
エントリを追加して指定することもできます。
cpptest.compiler.family=gcc_4_5
すべてのテストで同じコンパイラの同じバージョンを使用する場合、[INSTALL_DIR] または [USER_HOME]ディレクトリにあるグローバルな構成ファイル cpptestcli.properties
にコンパイラ識別子を指定できます。「設定の概要」を参照してください。
コンパイラの検出
コンパイラの構成を検出するには、以下のいずれかの操作を行います。
-detect-compiler
スイッチを使用して構成を自動検出しますcpptestcli -detect-compiler gcc
-list-compilers
スイッチを使用してすべてのサポート対象コンパイラのリストから構成を検出します。cpptestcli -list-compilers
詳細については「コンパイラの設定」および「サポート対象コンパイラ」を参照してください。
使用例
以降の手順では、以下を仮定します。
- GNU GCC 4.5 コンパイラが使用されている (構成識別子: gcc_4_5)。
- 前述の前提条件が満たされている。
- ユーザーは [INSTALL_DIR]/examples/ATM ディレクトリ でコマンドを実行する。
単一のファイルの解析
解析を実行し、--
スイッチ (セパレーター) を使用して元々のコンパイラ コマンドを指定します。
--
スイッチの後のすべての値は、コンパイラ コマンドとして解釈されるため、C/C++test 固有のオプションは、--
スイッチより前に指定する必要があります。
cpptestcli -config "builtin://Recommended Rules" -compiler gcc_4_5 -- gcc -I include Bank.cxx
C/C++test は、元々のコンパイラおよびコンパイラ オプションを使用してBank.cxx ファイルを解析し、検出された違反を出力コンソールにレポートします。
指定されたソース ファイルだけが解析されます。ソース ファイルにインクルードされたヘッダー ファイルは、解析から除外されます。テスト対象ファイルのスコープを広げ、ヘッダー ファイルを含める方法については、「テストスコープの設定」を参照してください。
-fail
オプションを使用して、静的解析の指摘事項がレポートされた場合にゼロ以外の終了コードを生成することもできます (「コマンドラインの終了コード).」を参照)。
Makefile ベースのプロジェクトの解析
解析を実行し、-trace
スイッチを使用してオリジナルのビルド コマンドを指定します。
-trace
の後のすべての値は、ビルド コマンドとして解釈されるため、C/C++test 固有のオプションは、-trace
より前に指定する必要があります。
cpptestcli -config "builtin://Recommended Rules" -compiler gcc_4_5 -module . -trace make clean all
C/C++test は以下のタスクを実行します。
- オリジナルのビルドを実行します (make clean all)
- テスト対象のファイルを検出します
- ファイルに対して解析を実行します
- 結果を出力コンソールにレポートします
- 今後の実行で使用できるよう、すべてのビルド情報を cpptest.bdf ファイルに格納します (ビルド データ ファイルの詳細は「ビルド データ ファイルについて」を参照)。
ビルド コマンドを実行したときにコンパイルされたファイルだけがテスト対象として検出されます。Makefile に含まれるソース ファイルだけが解析されます。ソース ファイルにインクルードされたヘッダー ファイルは、解析から除外されます。テスト対象ファイルのスコープを広げ、ヘッダー ファイルを含める方法については、「テストスコープの設定」を参照してください。
ビルド データ ファイルについて
ビルド データ ファイルは、作業ディレクトリ、コンパイルのコマンドライン オプション、オリジナル ビルドのリンク プロセスといったビルド情報を格納します。ビルド データ ファイル (.bdf) へのパスを指定すると、プロジェクトを再ビルドせずに解析を実行できます。「再ビルドせずにプロジェクトを再解析する」を参照してください。
bdf を作成するには、-trace
スイッチを使用するか、[INSTALL_DIR]/bin ディレクトリにあるスタンドアロンの cpptestscan
または cpptesttrace
ユーティリティを使用します。「cpptestscan
および cpptesttrace
ユーティリティを使用する」を参照してください。
以下のサンプルはビルド データ ファイルからの抜粋です。
working_dir=/home/place/project/hypnos/pscom project_name=pscom arg=g++ arg=-c arg=src/io/Path.cc arg=-Iinclude arg=-I. arg=-o arg=/home/place/project/hypnos/product/pscom/shared/io/Path.o
cpptestscan
および cpptesttrace
ユーティリティを使用する
cpptestscan
ユーティリティは、標準ビルド中にコンパイラあるいはリンカーのラッパーとして使用されます。既存のコードで cpptestscan
を使用するには、コンパイラ/ リンカーの実行ファイルの接頭辞として cpptestscan
を指定してコードをビルドします。これは次の 2 つの方法で実行できます。
- コンパイラ/ リンカーの実行ファイルのラッパーとして
cpptestscan
を呼び出すようにビルド コマンドを変更する。 - コマンドラインでコンパイラ変数を上書きしたくない場合 (または上書きできない場合)、実際の Makefile またはビルド スクリプト中に
cpptestscan
を埋め込む。
既存のビルドで cpptesttrace
を使用するには、ビルドコマンド自体に接頭辞として cpptesttrace
を指定してコードをビルドします。cpptesttrace
は、ビルド中に実行されたコンパイラとリンカーのプロセスをトレースし、トレースした内容をビルド データ ファイルに格納します。
どちらの場合も、PATH 環境変数に cpptestscan または cpptesttrace ユーティリティへのフル パスを指定する必要があります。cpptestscan
と cpptesttrace
で使用できるオプションは、以下の表のとおりです。オプションは、cpptestscan
コマンドに直接指定するか、環境変数を介して指定できます。コマンドラインの接頭辞を変えることで、ほとんどのオプションが cpptestscan
または cpptesttrace
に適用できます。
基本的な cpptestscan
の使用法:
cpptestscan [options] [compile/link command] cpptestscan --cpptestscanHelp
基本的な cpptesttrace
の使用法:
cpptesttrace [options] [build command] cpptesttrace --cpptesttraceHelp
オプション | 環境変数 | 説明 | デフォルト |
---|---|---|---|
| CPPTEST_SCAN_OUTPUT_FILE | ビルド情報を追加するファイルを定義します。 | cpptestscan.bdf |
| CPPTEST_SCAN_PROJECT_NAME | C/C++test プロジェクトの名前を定義します。 | 現在の作業ディレクトリ名 |
| CPPTEST_SCAN_RUN_ORIG_CMD | yes の場合、オリジナル コマンドラインが実行されます。 | yes |
| CPPTEST_SCAN_QUOTE_CMD_LINE_MODE | C/C++test がコマンドラインの実行を準備するときに、どのようにパラメーターを引用符で囲むかを指定します。
--cpptestscanQuoteCmdLineMode はLinux ではサポートされません。 | all |
| CPPTEST_SCAN_CMD_LINE_PREFIX | [empty] ではなく、かつオリジナル実行ファイルの実行がオンの場合、指定のコマンドがオリジナル コマンドラインの前 に付けられます。 | [empty] |
| CPPTEST_SCAN_ENV_IN_OUTPUT | yes の場合、選択した環境変数とコマンドライン パラメーターが出力ファイルにダンプされます。さらに詳しく設定するには --cpptestscanEnvFile および --cpptestscanEnvars オプションを使用します。 | no |
| CPPTEST_SCAN_ENV_FILE | 有効な場合、指定したファイルにはすべてのビルド コマンドに共通の環境変数が保持されます。メインの出力ファイルは差分だけを保持します。メインの出力ファイルのサイズを縮小するには、このオプションを使用します。--cpptestscanEnvInOutput を有効にして このオプションを使用してください。 | [empty] |
| CPPTEST_SCAN_ENVARS | ダンプする環境変数名を指定するか、'*' を使用してすべてを指定します。--cpptestscanEnvInOutput を有効にしてこのオプションを使用してください。 | * |
| CPPTEST_SCAN_USE_VARIABLE | スキャン対象のビルド情報内の "VALUE" 文字列を "${VAR_NAME}" 変数使用に置き換えます。 | [empty] |
--cpptesttraceTraceCommand=[<regexp>|<regexp>|...] | CPPTEST_SCAN_TRACE_COMMAND | ビルド プロセス情報を収集する際にトレースされるコマンド名を定義します。名前は正規表現で指定し、ビルド プロセスで使用されるオリジナルのコンパイラ/リンカー コマンドと一致する必要があります。 |
再ビルドせずにプロジェクトを再解析する
コード解析を実行し、-input
スイッチを使用して既存のビルド データ ファイルのパスを指定します。例:
cpptestcli -config "builtin://Recommended Rules" -compiler gcc_4_5 -module . -input cpptest.bdf
C/C++test は以下のタスクを実行します。
- 既存の cpptest.bdf ファイルからテスト対象ファイルの情報を読み取ります。
- ファイルに対して解析を実行します
- 結果を出力コンソールにレポートします
オリジナルのビルド コマンドは実行されません。
複数のファイルを指定するには、-input
スイッチを複数回使用します。
cpptestcli -config "builtin://Recommended Rules" -compiler gcc_4_5 -module . -input project1.bdf -input project2.bdf
ビルド データ ファイルに定義されたソース ファイルだけが解析されます。ソース ファイルにインクルードされたヘッダー ファイルは、解析から除外されます。テスト対象ファイルのスコープを広げ、ヘッダー ファイルを含める方法については、「テストスコープの設定」を参照してください。
CMake ベースのプロジェクトの解析
CMake ベースのプロジェクトを解析するには、次の作業を行います。
- 使用する CMake のビルドがコンパイル コマンドファイルを JSON 形式で出力できることを確認します (
CMAKE_EXPORT_COMPILE_COMMANDS
変数を使用すると、CMake でファイルを出力するよう設定できます)。 C/C++test のコマンド ラインに
-input <PATH_TO_COMPILE_COMMANDS_JSON>
を含め、コンパイル コマンド ファイルの場所を渡します。コマンドは次のようになります。cpptestcli -config "builtin://Recommended Rules" -compiler gcc_4_5 -module . -input compile_commands.json
C/C++test は以下のタスクを実行します。
Compile_commands.json
ファイルから解析スコープの情報を読み取ります。- スコープ内のファイルに対して解析を実行します。
- 結果をレポートします。
C/C++test は、コンパイル コマンド ファイルに定義されたソース ファイルだけを解析します。ソース ファイルにインクルードされたヘッダー ファイルは、解析から除外されます。解析のスコープを拡張し、ヘッダー ファイルを解析に含める方法については「テストスコープの設定」を参照してください。
MSBuild ベースのプロジェクトの解析
C/C++test には、.bdf ファイルを生成するよう MSBuild プロジェクトをすばやく再設定するスクリプトが付属しています。このスクリプトは、Visual Studio および CMake が生成した MSBuild プロジェクトをサポートしています。スクリプトは、ターゲットの .vcxproj ファイルのバックアップを作成してから変更し、すべてのビルド ターゲットで必要な Parasoft 機能を有効化します。
C/C++test には、インクルードされたツールを実行する Python スクリプト ランチャーが付属しています。ランチャーは次の場所にあります。
<CPPTEST_INSTALL_DIR>/bin/engine/bin/cpptestpy.exe
MSBuild 統合スクリプトは次の場所にあります。
<CPPTEST_INSTALL_DIR>/integration/msbuild/msbuild_cpptest.py
MSBuild ベースのプロジェクトを解析するには、次の作業を行います。
- 環境変数をセットアップします。
=
の後にダブル クオーテーションを使用しないようにしてください。使用すると、文字列が誤って解釈されます。
CPPTEST_INSTALL_DIR
変数をセットアップします。set CPPTEST_HOME=<CPPTEST_INSTALL_DIR>
(CMake のみ) CMake を使用してMSBuild ファイルを生成します。
cd <PROJECT_DIR> mkdir build cd build cmake ..
統合スクリプトを実行します。
<cpptestpy.exe> <msbuild_cpptest.py> -b -f project.vcxproj
MSBuild を使用してプロジェクトをビルドします。
msbuild -t:Rebuild project.sln
現在の作業ディレクトリに .bdf ファイルが作成されます。
.bdf ファイルに対して静的解析を実行します。
cpptestcli.exe \ -compiler <COMPILER> \ -config "builtin://Recommended Rules" \ -module . \ -input cpptestscan.bdf
.bdf ファイルに対して静的解析を実行する方法の詳細については、「About Build Data Files」を参照してください。
Microsoft Visual Studio のプロジェクトまたはソリューションの解析
C/C++test は、Visual Studio のプロジェクトおよびソリューション ファイルを読み取って、プロジェクトまたはソリューションのすべてのソース ファイルおよびインクルードされたヘッダー ファイルを解析できます。Visual Studio のプロジェクトまたはソリューション ファイルを指定するには、-input
スイッチを使用します。
cpptestcli -config "builtin://Recommended Rules" -input MyProject.vcproj
プロジェクトまたはソリューションの解析中に使用するビルド構成とプラットフォームを指定できます。ソリューションまたはプロジェクトのファイル名の後に、ビルド構成とプラットフォームの名前を追加します。以下はその一例です。
cpptestcli -config "builtin://Recommended Rules" -input MyProject.vcproj@Debug|x64
別の方法として、以下のプロパティを使用して、すべての Visual Studio ソリューションとプロジェクトの解析中に使用するビルド構成とプラットフォームを指定できます。
cpptest.input.msvc.config=Debug cpptest.input.msvc.platform=x64
Microsoft Visual Studio の設定については、「Visual Studio の設定」を参照してください。
解析を実行する前に、適切なバージョンの Microsoft Visual C++ コンパイラへのパスが $PATH に含まれていることを確認してください。Microsoft Visual Studio 6 はサポートされていません。
C/C++test テスト データの場所の指定
.cpptest
ディレクトリに排他的にアクセスできる必要があります。デフォルトでは、このディレクトリは、現行の作業ディレクトリに作成され、ここに実行時固有のデータの一部が格納されます。結果として、1 つのディレクトリ内で同時に 1 つの C/C++test インスタンスだけが実行できます。-workspace
スイッチを使用すると、.cpptest ディレクトリの場所を変更できます。
-workspace <WORKSPACE_LOCATION>