このセクションの内容

実行モジュール

実行モジュール (cpptestcli) へのパスが $PATH 変数に含まれていることを確認してください。「インストール」を参照してください。

インクリメンタルな静的解析

C/C++test は、開発プロセスへの影響を最小限に抑えるよう最適化されています。前回の解析実行で収集された情報を再利用することで、その後の実行での解析時間を短縮できます。情報は作業ディレクトリ (-workspace オプションを参照) の .cpptest フォルダーに保存されます。

最適なパフォーマンスを保つため、.cpptest フォルダーやフォルダーの内容を削除しないでください。

前提条件

コンパイラ

コードを解析する前に、特定の 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 は以下のタスクを実行します。

  1. オリジナルのビルドを実行します (make clean all)
  2. テスト対象のファイルを検出します
  3. ファイルに対して解析を実行します
  4. 結果を出力コンソールにレポートします
  5. 今後の実行で使用できるよう、すべてのビルド情報を 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 ユーティリティへのフル パスを指定する必要があります。cpptestscancpptesttrace で使用できるオプションは、以下の表のとおりです。オプションは、cpptestscan コマンドに直接指定するか、環境変数を介して指定できます。コマンドラインの接頭辞を変えることで、ほとんどのオプションが cpptestscan または cpptesttrace に適用できます。

基本的な cpptestscan の使用法:

cpptestscan [options] [compile/link command]
cpptestscan --cpptestscanHelp

基本的な cpptesttrace の使用法:

cpptesttrace [options] [build command]
cpptesttrace --cpptesttraceHelp



オプション環境変数説明デフォルト

--cpptestscanOutputFile=<OUTPUT_FILE>

--cpptesttraceOutputFile=<OUTPUT_FILE>

CPPTEST_SCAN_OUTPUT_FILEビルド情報を追加するファイルを定義します。cpptestscan.bdf

--cpptestscanProjectName=<PROJECT_NAME>

--cpptesttraceProjectName=<PROJECT_NAME>

CPPTEST_SCAN_PROJECT_NAMEC/C++test プロジェクトの名前を定義します。現在の作業ディレクトリ名

--cpptestscanRunOrigCmd=[yes|no]

--cpptesttraceRunOrigCmd=[yes|no]

CPPTEST_SCAN_RUN_ORIG_CMDyes の場合、オリジナル コマンドラインが実行されます。yes

--cpptestscanQuoteCmdLineMode=[all|sq|none]

--cpptesttraceQuoteCmdLineMode=[all|sq|none]

CPPTEST_SCAN_QUOTE_CMD_LINE_MODE

C/C++test がコマンドラインの実行を準備するときに、どのようにパラメーターを引用符で囲むかを指定します。

all: すべてのパラメーターが引用符で囲まれます。

none: どのパラメーターも引用符で囲まれません。

sq: 空白文字または引用符号があるパラメーターだけを引用符で囲みます。

--cpptestscanQuoteCmdLineMode はLinux ではサポートされません。

all

--cpptestscanCmdLinePrefix=<PREFIX>
--cpptesttraceCmdLinePrefix=<PREFIX>

CPPTEST_SCAN_CMD_LINE_PREFIX[empty] ではなく、かつオリジナル実行ファイルの実行がオンの場合、指定のコマンドがオリジナル コマンドラインの前 に付けられます。 [empty]

--cpptestscanEnvInOutput=[yes|no]

--cpptesttraceEnvInOutput=[yes|no]

CPPTEST_SCAN_ENV_IN_OUTPUT

yes の場合、選択した環境変数とコマンドライン パラメーターが出力ファイルにダンプされます。さらに詳しく設定するには

--cpptestscanEnvFile および

--cpptestscanEnvars オプションを使用します。

no

--cpptestscanEnvFile=<ENV_FILE>

--cpptesttraceEnvFile=<ENV_FILE>

CPPTEST_SCAN_ENV_FILE

有効な場合、指定したファイルにはすべてのビルド コマンドに共通の環境変数が保持されます。メインの出力ファイルは差分だけを保持します。メインの出力ファイルのサイズを縮小するには、このオプションを使用します。--cpptestscanEnvInOutput を有効にして

このオプションを使用してください。

[empty]

--cpptestscanEnvars=[*|<ENVAR_NAME>,...]

--cpptesttraceEnvars=[*|<ENVAR_NAME>,...]

CPPTEST_SCAN_ENVARSダンプする環境変数名を指定するか、'*' を使用してすべてを指定します。--cpptestscanEnvInOutput を有効にしてこのオプションを使用してください。*

--cpptestscanUseVariable=[VAR_NAME=VALUE,...]

--cpptesttraceUseVariable=VAR_NAME=VALUE,...]

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 は以下のタスクを実行します。

  1. 既存の cpptest.bdf ファイルからテスト対象ファイルの情報を読み取ります。
  2. ファイルに対して解析を実行します
  3. 結果を出力コンソールにレポートします

オリジナルのビルド コマンドは実行されません。

複数のファイルを指定するには、-input スイッチを複数回使用します。

cpptestcli -config "builtin://Recommended Rules" -compiler gcc_4_5 -module . -input project1.bdf -input project2.bdf

ビルド データ ファイルに定義されたソース ファイルだけが解析されます。ソース ファイルにインクルードされたヘッダー ファイルは、解析から除外されます。テスト対象ファイルのスコープを広げ、ヘッダー ファイルを含める方法については、「テストスコープの設定」を参照してください。

CMake ベースのプロジェクトの解析

CMake ベースのプロジェクトを解析するには、次の作業を行います。

  1. 使用する CMake のビルドがコンパイル コマンドファイルを JSON 形式で出力できることを確認します (CMAKE_EXPORT_COMPILE_COMMANDS 変数を使用すると、CMake でファイルを出力するよう設定できます)。
  2. 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 は以下のタスクを実行します。

  1. Compile_commands.json ファイルから解析スコープの情報を読み取ります。
  2. スコープ内のファイルに対して解析を実行します。
  3. 結果をレポートします。

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 ベースのプロジェクトを解析するには、次の作業を行います。

  1. 環境変数をセットアップします。

=の後にダブル クオーテーションを使用しないようにしてください。使用すると、文字列が誤って解釈されます。 

    1. CPPTEST_INSTALL_DIR 変数をセットアップします。

      set CPPTEST_HOME=<CPPTEST_INSTALL_DIR>
  1. (CMake のみ) CMake を使用してMSBuild ファイルを生成します。 

    cd <PROJECT_DIR>
    mkdir build
    cd build
    cmake ..
  2. 統合スクリプトを実行します。 

    <cpptestpy.exe> <msbuild_cpptest.py> -b -f project.vcxproj
  3. MSBuild を使用してプロジェクトをビルドします。

    msbuild -t:Rebuild project.sln

    現在の作業ディレクトリに .bdf ファイルが作成されます。 

  4.  .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>

  • No labels