このセクションの内容
Jtest は、ビルド システム プラグインが自動的に生成する jtest.data.json データ ファイルを処理します。また、JSON ファイルを手動で作成できます。詳細については 「カスタム.jsonデータ ファイルの作成」を参照してください。
JSON ファイルはプライマリ テスト スコープを決定します。-resource、-include、および -exclude オプションを使ってスコープを絞り込むことができます。
resource または include オプションでパターンが指定されている場合、このパターンに一致しないリソースは解析から自動的に除外されます。
resource オプションによるスコープの変更次のいずれかでリソース パターンを指定することにより、スコープを変更できます。
-resource コマンドライン オプション (複数の -resource スイッチを使用して複数のリソースを指定できます)
-resource [pattern] |
.properties ファイルの jtest.resource 設定 (複数のリソースを指定するにはカンマで区切ります)。詳細については「設定の概要」を参照。
jtest.resource=pattern1,pattern2 |
Maven または Ant の <resource> パターン:
<resources>
<resource>pattern1</resource>
<resource>pattern2</resource>
</resources> |
リソース パターンの一般的な構文は次のとおりです。
[project name]/[resource path relative to the project] |
Ant 形式のワイルドカードやその他のパラメーターを使用してパターンを指定できます。
| パラメーター | 説明 |
|---|---|
? | パス区切り文字以外の任意の 1 文字に一致するワイルドカード |
* | パス区切り文字以外の任意の 0 文字以上に一致するワイルドカード |
** | 0 個以上のパス セグメントに一致するワイルドカード |
/ | すべてのオペレーティング システムの区切り文字 |
"[non-alphanumeric characters]" | リソース パスに空白またはその他の非英数文字が含まれる場合、引用符を使用します。 |
-resource 引数に 1 つしか値が含まれていない場合、値はプロジェクト名と比較され、ワイルドカード (*) が使用されます。次の表は、-resource スイッチの使用方法のサンプルです。
| 式 | 結果 |
|---|---|
-resource ProjectName/src | 指定されたディレクトリおよびサブディレクトリのすべてのファイルが解析されます (ワイルドカードを使用しない場合、ディレクトリの完全な名前を指定する必要があります)。 |
-resource ProjectName/**/*.java | 指定されたプロジェクトのすべての Java ファイルが解析されます。 |
-resource **/src/main/java/my/company/*.java | 現在のビルドに含まれるすべてのプロジェクトの指定したサブディレクトリにあるすべての Java ファイルが解析されます。 |
-resource ProjectName/src/main/java/my/company/File.java | 指定された単一のファイルが解析されます。 |
-resource c:/resource.lst |
|
ProjectName の値は、次のルールに従って生成されます。
projectNameTemplate パラメーターを使って、Maven と Gradle のプロジェクト名をカスタマイズできます。詳細については「Maven 用 Jtest ゴール リファレンス」および「 Gradle 用 Jtest タスク リファレンス」を参照してください。
指定したスコープが外部リソースを含む場合、生成されるパスに文字列 EXT が含まれます。たとえば、解析対象のプロジェクトが、別の場所にあるソース ファイルをリンクで含んでいるかもしれません。以下の例では、Simple.java ファイルは Demo プロジェクトにありますが、Money.java ファイルはリンクで追加されていてプロジェクトの外部にあります。
Demo/src/main/java/examples/eval/Simple.java Demo/EXT/examples/bank/Money.java |
include および exclude オプションによるスコープの変更次のいずれかを使ってパターンを指定することにより、スコープを変更できます。
-include および -exclude コマンドライン オプション
-include pattern -exclude pattern |
.properties ファイルの jtest.include および jtest.exclude の設定。詳細については「設定の概要」を参照。
jtest.include=pattern jtest.exclude=pattern |
Maven または Ant の <resource> パターン:
<include>pattern</include> <exclude>pattern</exclude> |
include と exclude の両方のパターンが指定されている場合、Jtest は、exclude パターンに一致するリソースを除いて、include パターンで指定されたリソースを解析します。
include または exclude パターンは、次のいずれかを指定することにより定義できます。
path: [ディスク上の絶対パス]Ant 形式のワイルドカードやその他のパラメーターを使用してパターンを指定できます。
| パラメーター | 説明 |
|---|---|
? | パス区切り文字以外の任意の 1 文字に一致するワイルドカード |
* | パス区切り文字以外の任意の 0 文字以上に一致するワイルドカード |
** | 0 個以上のパス セグメントに一致するワイルドカード |
/ | セパレーター |
| path: | ハード ディスクの絶対パスに一致する接頭辞 |
多数のファイルを -include/-exclude で指定する場合、リスト ファイル (*.lst) を作成し、そのリスト ファイルのパスを指定することもできます。*.lstファイルの各アイテムが個別のエントリとして扱われます。
| 使用法 | 説明 |
|---|---|
-include com/** | "com" で始まるすべてのパッケージをテストします。 |
-include path:**/Bank.java | Bank.java ファイルだけをテストします。 |
-include path:C:/Project/src/** | C:/Project/src のすべてのサブファイルおよびサブディレクトリをテストします。 |
-include path:C:/Project/src/* | C:/Project/src のすべてのファイルをテストしますが、サブディレクトリはテストしません。 |
-include c:/include.lst |
|
-exclude **/internal/** | パッケージ名に "internal" を含むクラス以外のすべてのものをテストします。 |
jtest.includeTestSources オプションによるスコープの変更jtest.includeTestSources コマンド ライン オプションを使用してテスト ソース コードを解析に含めることによってスコープを変更できます。
-Dproperty.jtest.includeTestSources=true |
このオプションはデフォルトでオフです。(IDE では、テスト ソース コードはデフォルトで解析に含められます)
注意: このオプションは、Jtest Plugin for Ant では動作しません。
通常、Jtest はビルド システム プラグインが自動的に生成する jtest.data.json データ ファイルを処理します。別の方法として、手動で .json ファイルを作成し、-data コマンド ライン オプションで .json ファイルへのパスを指定できます (「静的解析の実行」を参照)。
Jtest が使用するデータ ファイルを手動で作成するには、-project オプションを指定して jtestcli を実行します。デフォルトでは、-project.location オプションで設定されたプロジェクトのルートに example.data.json ファイルが作成されますが、-project.jsonpath を使用して .json ファイルの場所と名前をカスタマイズできます。
このファイルを手動で更新する場合、必ず UTF-8 エンコーディングで保存します。 |
利用可能なオプションのリストについては「カスタム JSON の作成」を参照してください。
追加のファイル フィルターをセットアップすることで、ローカルで変更されたファイルまたは現在の作業ブランチで変更されたファイルだけに解析範囲を制限できます。これにより、ソース管理システムにコードをチェックインしたり、メインの開発ストリームにコードをマージする前に、最近のコードの変更で入り込んだバグを検出し、修正する作業に集中できるようになります。
デフォルトのスコープを変更すると解析をスピードアップできるいっぽうで、プロジェクトに含まれる他のリソースの情報を必要とするルールのレポートする違反に影響を与える可能性があります。特に、実行パスを解析したり、メトリクスを計算したり、重複コードをチェックしたりするルールは、スコープから除外されたファイルにアクセスできない場合、違反を誤検出したり、違反を検出できない場合があります。 そのため、すべてのルール違反が検出されるよう、定期的に全体スコープでの解析を実行するよう推奨します。シナリオの例としては、デスクトップで Jtest を実行するときは限定されたスコープで解析し、サーバーでの自動化されたビルド時に全体スコープの解析を行うことが考えられます。 |
scope.scontrol=true が設定され、ソース管理システムに基づいた作成者の算出が有効化されていること (「スコープと作成者の設定」を参照)解析のスコープをローカルで変更されたファイルだけに限定するには、.properties 設定ファイルに次のオプションを追加します。
scope.scontrol.files.filter.mode=local |
"master" や "trunk" などのメインの統合ストリームと異なっている現在の作業ブランチのファイルだけに解析のスコープを限定するには、.properties 設定ファイルに次のオプションを追加します。
scope.scontrol.files.filter.mode=branch |
作業ブランチとメインの統合ストリームではなく別のブランチを比較したい場合、または特定のリビジョンと比較したい場合は、参照として使用するブランチまたはリビジョンの名前または ID を指定する必要があります。次の設定は、カスタムブランチ/リビジョンと異なっている現在の作業ブランチのファイルに解析スコープを限定します。
scope.scontrol.files.filter.mode=branch scope.scontrol.ref.branch=[name/ID of the custom reference branch/revision] |
.properties ファイルで設定されたスコープ フィルター設定は、すべてのテスト コンフィギュレーションに影響を与えます。
「スコープと作成者の設定」を参照してください。
別の方法として、テスト コンフィギュレーションで追加のスコープ フィルターを定義することもできます。それには、カスタム テスト コンフィギュレーションを作成し、適用するフィルターを指定します。「カスタム テスト コンフィギュレーションの作成」を参照してください。GUI で設定されたスコープ フィルターは、特定のテスト コンフィギュレーションにだけ適用され、.properties ファイルで設定されたスコープ フィルターによって上書きされます。