初期セットアップ
Parasoft Jtest と Maven を統合するには、以下の 2 つの settings.xml ファイルのうちどちらかの Maven 設定を変更します。
$M2_HOME/conf/settings.xml- Maven のインストールディレクトリにあるグローバル設定$HOME/.m2/settings.xml- ユーザーのホームディレクトリの.m2フォルダーにあるユーザー設定
両方のファイルがある場合、ユーザー固有の設定がグローバル設定を上書きします。
Maven のインストール ディレクトリからグローバル設定ファイルを $HOME/.m2 ディレクトリにコピーしてテンプレートして使用し、下記の説明に従って変更することができます。
継続的インテグレーション サーバーや IDE などの一部のツールは、ツールに組み込まれた Maven を使用します。そのような場合、ユーザー設定が使用され、グローバル設定は無視されます。その場合、Jtest との統合に必要なすべての変更がユーザー設定ファイルに含まれるようにしてください。
settings.xml ファイルで以下を設定します。
<pluginRepository>-<INSTALL_DIR>\integration\mavenにある Jtest 付属の Maven リポジトリへのローカルパスを指定します。<pluginGroups>- コマンド ラインからのプラグインの呼び出しを容易にするため、適切なグループ ID、成果物、ゴールを指定します。jtest.homeプロパティ - コマンド ラインからのプラグインの呼び出しを容易にするため、Jtest インストール ディレクトリへのパスを指定します。
settings.xml ファイルは次のようになります。
<settings>
<!-- ... -->
<pluginGroups>
<!-- ... -->
<pluginGroup>com.parasoft.jtest</pluginGroup>
<pluginGroup>com.parasoft.jtest.tia</pluginGroup>
</pluginGroups>
<profiles>
<!-- ... -->
<profile>
<id>jtest-settings-profile</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<jtest.home>PATH/TO/JTEST</jtest.home>
</properties>
<pluginRepositories>
<pluginRepository>
<id>jtest-local</id>
<url>file://${jtest.home}/integration/maven</url>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<mirrors>
<!-- ... -->
<!-- prevention against mirrors with wildcard (*) matching -->
<mirror>
<id>jtest-local-mirror</id>
<mirrorOf>jtest-local</mirrorOf>
<!-- mirrors tag does not support properties -->
<url>file://PATH/TO/JTEST/integration/maven</url>
<!-- properties are not resolved in this tag -->
</mirror>
</mirrors>
</settings>
Jtest 実行の設定
Jtest の解析およびテスト コードを設定する方法はいくつかあります。
- プロジェクトの
pom.xmlファイルで直接プラグイン パラメーターを設定する pom.xmlファイルの<settings>または<settingsList>Plugin パラメーター によって指定された.propertiesファイル- Maven のコマンドライン オプション
-Djtestまたは-Dproperty - Jtest インストール ディレクトリまたは HOME ディレクトリにある
jtestcli.propertiesファイル (「設定の概要」を参照)
コマンドラインで直接 jtest ゴールの実行を指定するか、POM ファイルで指定することを推奨します。
優先順位
Maven での解析を設定し、ユーザー プロパティを変数 (${...}) として指定した場合、次の優先順位が適用されます。
-Djtest.[Maven property name](例:-Djtest.settings="my.general.properties")pom.xmlファイル-Dproperty.[property name](例-Dproperty.dtp.url=https://server1.mycompany.com:8443)
プロパティをハードコーディングした場合 (pom.xml で実値として指定した場合)、優先順位は最高であり、コマンド ラインの設定では上書きできません。結果として次の優先順位が適用されます。
pom.xmlファイル-Djtest.[Maven property name](例:-Djtest.settings="my.general.properties")-Dproperty.[property name](例-Dproperty.dtp.url=https://server1.mycompany.com:8443)
たとえば、pom.xml でユーザー プロパティ <config>${jtest.config}</config> として指定されたテスト コンフィギュレーションは、-Djtest.config で上書きできます。しかし、<config>builtin://Demo Configuration</config> としてハードコーディングされている場合は上書きできません。
jtestcli.properties ファイルで指定された設定の優先順位は常に最低です。
POM ファイルでの解析の設定
プロジェクトの pom.xml ファイルで直接プラグイン パラメーターを指定することで、解析の設定を行うことができます。設定パラメーターの一覧は「Maven 用 Jtest ゴール リファレンス」を参照してください。
pom.xml ファイルでのプラグインの設定は次のようになります。
<project>
<!-- ... -->
<build>
<!-- ... -->
<plugins>
<!-- ... -->
<plugin>
<groupId>com.parasoft.jtest</groupId>
<artifactId>jtest-maven-plugin</artifactId>
<version>2020.1.0</version>
<configuration>
<settings>settings.properties</settings>
<config>builtin://Recommended Rules</config>
<resources>
<resource>**/my/package/**/*.java</resource>
<resource>**/*.xml</resource>
</resources>
<exclude>**/test/**</exclude>
<report>report_dir</report>
<publish>true</publish>
</configuration>
</plugin>
</plugins>
</build>
</project>
サンプルに示されたすべてのプロパティはオプションです。
継承の無効化
デフォルトでは、Jtest はルート プロジェクトのレポートを生成する際に各プロジェクト (モジュール) の解析を実行します。そのため、ネストされたモジュールごとに重複して解析が行われないよう、POM に <inherited>false</inherited> タグを含めることが重要です。
コマンド ラインでの解析の設定
-D コマンド ライン オプションを使用して適切な設定を渡すことで、Maven コマンド ラインで直接に解析を設定することができます。
-Djtest.[setting]を使用すると、Jtest Plugin for Maven 固有の設定を指定できます。「Maven 用 Jtest ゴール リファレンス」を参照してください。
例:mvn jtest:jtest -Djtest.config="builtin://Critical Rules"-Dproperty.[setting]を使用すると、KEY=VALUE パターンで表される任意の Jtest 設定 (「設定リファレンス」を参照) を指定できます。
例:mvn jtest:jtest -Dproperty.console.vebosity.level=high
設定が適用される順序については、「優先順位」を参照してください。
サンプル
サンプル 1: 次のコマンド ラインは、デフォルトの builtin://Recommended Rules テスト コンフィギュレーションを使用して解析対象ビルドのすべてのモジュールを解析します。
mvn jtest:jtest
サンプル 2: 次の解析は、jtest.settingsList オプションで渡された 2 つの .properties ファイルを使用して設定されます。テスト コンフィギュレーションおよび解析スコープは、jtest.config および jtest.resource によって渡されます。Jtest は "my.groupId:my-artifacId" プロジェクトのパターン "/src/main/java/my/package/**/*.java" に一致するファイルを解析します。
mvn jtest:jtest -Djtest.config="builtin://Critical Rules" -Djtest.resource="my.groupId:my-artifacId/src/main/java/my/package/**/*.java" -Djtest.settingsList="project.specific.properties","/etc/jtest/license.properties"
サンプル 3: 次の解析は、jtest.settings オプションで渡された .properties ファイルを使用して設定されます。テスト コンフィギュレーションは jtest.config によって渡されます。property.console.verbosity コマンド ライン オプションは、.properties ファイルで指定された console.verbosity オプションを上書きします。
mvn jtest:jtest -Djtest.config="builtin://Recommended Rules" -Djtest.settings="my.general.properties" -Dproperty.console.verbosity.level=high
POM ファイルでのコンパイル データの手動カスタマイズ
コンパイルを実行するプラグインが多数あることや、Maven によるビルドはカスタマイズ性が高いことが理由で、Jtest Plugin for Maven によって自動検出されたコンパイル データに実際と異なる点やエラーが含まれていることが、まれにあります。そのような問題は、Jtest のレポート で セットアップの問題 として表示される場合があります。
検出されたコンパイル データにエラーが含まれているのが確かである場合、解析対象モジュールの POM ファイルで、コンパイル データを拡張またはオーバーライドできます。
次のサンプルは、解析対象 Maven サブモジュールのカスタマイズされたコンパイル データです。この構成は、追加の classpath 要素を指定して、モジュールに新しいソース レベルを設定するよう拡張されています。コンパイル ID が指定されていないため、デフォルトのコンパイル ID が使用されます (maven-compiler-plugin の実行のデフォルト ID は default-compile です)。
<project>
<!-- ... -->
<build>
<!-- ... -->
<plugins>
<!-- ...
configuration with non default compiler plugin appending
${extra-classpath-element} and changing sourcelevel which
cannot be detected automatically
-->
<plugin>
<groupId>com.parasoft.jtest</groupId>
<artifactId>jtest-maven-plugin</artifactId>
<version>2020.1.0</version>
<configuration>
<compilation>
<!-- no id specified so Maven default: "default-compile" id will be used -->
<classpath>
<path>${extra-classpath-element}</path>
</classpath>
<sourcelevel>1.6</sourcelevel>
</compilation>
</configuration>
</plugin>
</plugins>
</build>
</project>
すべてのプロジェクトのコンパイル データを変更する必要がある場合、
-Djtest.dataUpdate コマンド ライン オプションを使用できます。
Jtest プラグインによって自動的に検出されたコンパイル データをカスタマイズする方法の詳細については、「コンパイル データ モデル」を参照してください。