このセクションの内容
概要
入力スコープは、C/C++test で解析する対象の C および C++ のソースファイルを定義します。入力スコープはコンパイラ オプションおよび環境に関する完全な情報のセットを提供し、C/C++test が元のビルド環境を再現して正確なテスト結果を出すことができるようにします。コンパイラの定義については「静的解析の実行」を参照してください。
単一のファイルの解析
手順については「静的解析の実行」を参照してください。
Makefile ベースのプロジェクトの解析
手順については「静的解析の実行」を参照してください。
既存のビルド データ ファイルを使用したコードの解析
ビルド データ ファイルに定義されたソース ファイルだけが解析されます。ソース ファイルにインクルードされたヘッダー ファイルは、解析から除外されます。詳細は以下のセクションを参照してください。
- .bdf ファイルの概念および作成方法については「静的解析の実行」を参照してください。
- .bdf ファイルを使用して解析を行うための手順については「静的解析の実行」を参照してください。
- テスト対象ファイルのスコープを広げ、ヘッダー ファイルを含める方法については、「ソース ファイル構造 (モジュール) の定義」を参照してください。
ソース ファイル構造 (モジュール) の定義
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.cpp | belongs to MyApp as MyApp/src/foo.cpp; will be analyzed |
/home/devel_1/project/includes/foo.h | belongs to MyApp as MyApp/includes/foo.h; will be analyzed |
/home/devel_1/project/includes/other.h | not #included; will not be analyzed |
/home/devel_1/common/common.h | does 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
ファイルの各アイテムが個別のエントリとして扱われます。