このセクションの内容

概要

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

resource.lst ファイルに記載されたプロジェクトを解析します。次のように 1 行に 1 個のプロジェクト名を指定してください。
ProjectName1
ProjectName2
-resource 引数の値として、resource.lst ファイルのパスを指定します。

プロジェクト名の解決

ProjectName の値は、次のルールに従って生成されます。

  • Ant のプロジェクト名は project タグの name プロパティから 取得されます。
  • Maven のプロジェクト名は groupId:artifactId から 取得されます。
  • Gradle のプロジェクト名は gradle.settings ファイルから 取得されます。
  • IDE で設定されたプロジェクト名はそのまま使用されます。

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.include の設定。詳細については「設定の概要」を参照。

    jtest.include=pattern jtest.exclude=pattern
  • Maven または Ant の <resource> パターン:

    <include>pattern</include> <exclude>pattern</exclude>

(info) include と exclude の両方のパターンが指定されている場合、Jtest は、exclude パターンに一致するリソースを除いて、include パターンで指定されたリソースを解析します。

include または exclude パターンの構文

include または exclude パターンは、次のいずれかを指定することにより定義できます。

  • リソースの完全修飾名
  • path: [ディスク上の絶対パス]

Ant 形式のワイルドカードやその他のパラメーターを使用してパターンを指定できます。

パラメーター説明
?パス区切り文字以外の任意の 1 文字に一致するワイルドカード
*パス区切り文字以外の任意の 0 文字以上に一致するワイルドカード
**0 個以上のパス セグメントに一致するワイルドカード
/セパレーター
path:ハード ディスクの絶対パスに一致する接頭辞

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

使用法説明
-include com/**"com" で始まるすべてのパッケージをテストします。
-include path:**/Bank.javaBank.java ファイルだけをテストします。
-include path:C:/Project/src/**C:/Project/src のすべてのサブファイルおよびサブディレクトリをテストします。
-include path:C:/Project/src/*C:/Project/src のすべてのファイルをテストしますが、サブディレクトリはテストしません。
-include c:/include.lst

include.lst ファイルにリストされたすべてのファイルをテストします。各行が 1 つのパターンとして扱われます。
例:
include.lst ファイルに次の行がある場合、
**/*Account
path:**/Bank.java
コマンドで次のように指定したのと同じです。
-include **/*Account
-include path: **/Bank.java

-exclude **/internal/**パッケージ名に "internal" を含むクラス以外のすべてのものをテストします。

カスタム .json データ ファイルの作成

通常、Jtest はビルド システム プラグインが自動的に生成する jtest.data.json データ ファイルを処理します。別の方法として、手動で .json ファイルを作成し、-data コマンド ライン オプションで .json ファイルへのパスを指定できます (「静的解析の実行」を参照)。

Jtest が使用するデータ ファイルを手動で作成するには、-project オプションを指定して jtestcli を実行します。デフォルトでは、-project.location オプションで設定されたプロジェクトのルートに example.data.json ファイルが作成されますが、-project.jsonpath を使用して .json ファイルの場所と名前をカスタマイズできます。

利用可能なオプションのリストについては「カスタム JSON の作成」を参照してください。

ソース管理データに基づくファイル フィルターの定義

追加のファイル フィルターをセットアップすることで、ローカルで変更されたファイルまたは現在の作業ブランチで変更されたファイルだけに解析範囲を制限できます。これにより、ソース管理システムにコードをチェックインしたり、メインの開発ストリームにコードをマージする前に、最近のコードの変更で入り込んだバグを検出し、修正する作業に集中できるようになります。

デフォルトのスコープを変更すると解析をスピードアップできるいっぽうで、プロジェクトに含まれる他のリソースの情報を必要とするルールのレポートする違反に影響を与える可能性があります。特に、実行パスを解析したり、メトリクスを計算したり、重複コードをチェックしたりするルールは、スコープから除外されたファイルにアクセスできない場合、違反を誤検出したり、違反を検出できない場合があります。

そのため、すべてのルール違反が検出されるよう、定期的に全体スコープでの解析を実行するよう推奨します。シナリオの例としては、デスクトップで Jtest を実行するときは限定されたスコープで解析し、サーバーでの自動化されたビルド時に全体スコープの解析を行うことが考えられます。

前提条件

ローカルで変更されたファイルの解析

解析のスコープをローカルで変更されたファイルだけに限定するには、.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 ファイルで設定されたスコープ フィルターによって上書きされます。


  • No labels