このセクションの内容

概要

入力スコープは、C/C++test で解析する対象の C および C++ のソースファイルを定義します。入力スコープはコンパイラ オプションおよび環境に関する完全な情報のセットを提供し、C/C++test が元のビルド環境を再現して正確なテスト結果を出すことができるようにします。コンパイラの定義については「静的解析の実行」を参照してください。

単一のファイルの解析

手順については「静的解析の実行」を参照してください。

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

手順については静的解析の実行を参照してください。

既存のビルド データ ファイルを使用したコードの解析

ビルド データ ファイルに定義されたソース ファイルだけが解析されます。ソース ファイルにインクルードされたヘッダー ファイルは、解析から除外されます。詳細は以下のセクションを参照してください。

ソース ファイル構造 (モジュール) の定義

C/C++test は、入力スコープを互いに関連のないソース ファイルのセットとして扱います。モジュールを定義すると、ソース ファイルの構造を取り入れ、ヘッダー ファイルなどの追加のファイルを入力スコープに含めることができます。 

モジュールを定義するには、モジュールの名前とルート ディレクトリを指定します。ルート ディレクトリおよびそのサブディレクトリに存在するすべてのテスト対象ファイルがモジュールに含められます。ルート ディレクトリおよびそのサブディレクトリに存在し、テスト対象のソース ファイルによってインクルードされているすべてのヘッダー ファイルもモジュールに含められ、ソース ファイルとともに解析されます。

モジュールのすべてのファイルに対して「モジュール相対パス」が使用できます。プロジェクト相対パスは、モジュールのルートから実際のファイルの場所までの相対パスとして計算されます。多くの場合、モジュール相対パスはマシンに依存しないため、テスト結果を容易に別のマシンと共有できます。 

モジュール構造のサンプル

1 つ目のブロックは、単純なディレクトリ/ファイル構造を表しています。2 つ目のブロックは、モジュールのルートとファイルの関係、およびどのファイルが解析の対象となるかを表しています。

/home/devel_1/project/src/foo.cpp tested file defined in bdf will be analyzed
/home/devel_1/project/includes/foo.h#included by foo.cpp
/home/devel_1/project/includes/other.h not #included by foo.cpp
/home/devel_1/common/common.h#included by foo.cpp

ルートの場所が /home/devel_1/project であるモジュール MyApp が定義されている場合、次のファイルがモジュールの一部としてテストされます。 

/home/devel_1/project/src/foo.cppbelongs to MyApp as MyApp/src/foo.cpp; will be analyzed
/home/devel_1/project/includes/foo.hbelongs to MyApp as MyApp/includes/foo.h; will be analyzed
/home/devel_1/project/includes/other.hnot #included; will not be analyzed
/home/devel_1/common/common.hdoes not belong to MyApp; will not be analyzed

基本的なモジュール構成の定義

モジュールを定義するには、-[<MODULE_NAME>=]<MODULE_ROOT_LOCATION> スイッチを使用します。モジュールの名前が指定されていない場合、ルート ディレクトリの名前が使用されます。   

-module MyApp=/home/devel_1/project
-module /home/devel_1/project
-module MyModule=../projects/module1
-module .

別の方法として、カスタム構成ファイルで cpptest.scope.module.<MODULE_NAME>=<MODULE_ROOT_LOCATION> プロパティを使用してモジュール構造を定義することもできます。

cpptest.scope.module.MyApp=/home/devel_1/project 
cpptest.scope.module.MyModule=../projects/module1

複数のルートを持つモジュールの定義

複数の互いに重ならない場所を定義するには、適切なルートの場所を指す論理名をモジュール名に追加します。 

-module MyApp/module1=/home/devel_1/project -module MyApp/module2=/home/external/module2/src
 
cpptest.scope.module.MyApp/module1=/home/devel_1/project cpptest.scope.module.MyApp/module2=/home/external/module2/src

入力スコープの細かい調整

単一のファイルまたはファイルのセットをテスト対象として指定するには、-resource スイッチを使用します。 

-resource /home/cpptest/examples/ATM/ATM.cxx 
-resource /home/cpptest/examples/ATM 
-resource ATM.cxx

パスでは以下のリソースを指定できます。

  • ファイル パス (指定されたファイルだけがテストされます)
  • ディレクトリ パス (指定されたディレクトリのファイルだけがテストされます)
  • ファイル名 (指定された名前のファイルだけがテストされます)

スコープにその他のフィルターを適用するには、-include および -exclude スイッチを使用します。

  • -include スイッチは、ファイル システムのパスに一致するファイルだけをテストするよう指定します。その他のファイルはスキップされます。
  • -exclude スイッチは、ファイル システムのパスに一致するファイル以外をテストするよう指定します。

-include-exclude の両方のスイッチが指定されている場合、-include に一致するが、-exclude に一致しないパターンだけがテストされます。

-include pattern 
-exclude pattern

-include および -exclude スイッチには、ファイルへの絶対パスを指定できます。ワイルドカードとしてアスタリスク (*) を使用できます。 

-include /home/project/src/ATM.cxx 
-include /home/project/CustomIncludes.lst 
-exclude /home/project/src/*.cxx 
-exclude /home/project/CustomExcludes.lst 

多数のファイルを -include/-exclude で指定する場合、リスト ファイル (*.lst) を作成し、そのリスト ファイルのパスを指定することもできます。*.lstファイルの各アイテムが個別のエントリとして扱われます。

  • No labels