初期セットアップ

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> としてハードコーディングされている場合は上書きできません。

(info) 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>

(info) すべてのプロジェクトのコンパイル データを変更する必要がある場合、-Djtest.dataUpdate コマンド ライン オプションを使用できます。

Jtest プラグインによって自動的に検出されたコンパイル データをカスタマイズする方法の詳細については、「コンパイル データ モデル」を参照してください。

  • No labels