2

マルチモジュールのプロジェクトがあります。IDE としてを使用しています。プラグインを使用して Maven を構成しました。IntelliJ にこれらの変更を認識させ、そのカバレッジ データを更新させるにはどうすればよいですか (注: [カバレッジの更新] ツールバー ボタンをクリックする必要があります)。

次のようにmaven-clover2-pluginを構成しようとしました:

  <plugin>
    <groupId>com.atlassian.maven.plugins</groupId>
    <artifactId>maven-clover2-plugin</artifactId>
    <version>3.2.2</version>
    <configuration>
      <baseDir>${project.basedir}</baseDir>
      <cloverMergeDatabase>
        ${project.basedir}.clover\cloverMerge.db
      </cloverMergeDatabase>
    </configuration>
    <executions>
      <execution>
        <id>main</id>
        <phase>package</phase>
        <goals>
          <goal>instrument</goal>
          <goal>aggregate</goal>
          <goal>check</goal>
        </goals>
      </execution>
      <execution>
        <id>site</id>
        <phase>pre-site</phase>
        <goals>
          <goal>instrument</goal>
          <goal>aggregate</goal>
          <goal>check</goal>
        </goals>
      </execution>
      <execution>
        <id>clean</id>
        <phase>clean</phase>
        <goals><goal>clean</goal></goals>
      </execution>
    </executions>
  </plugin>

次に、使用するプロジェクト設定を構成し、プロジェクトディレクトリへの相対を
.clover\cloverMerge.db確認しました。チェックボックス。

しかし、それはうまくいきませんでした。

注:インストルメンテーション
の構成の下部に、マルチモジュール プロジェクトがある場合は、これらの場所を明示的に設定しないでください。 そのため、その場所を Maven と IDEA の両方のデフォルトのままにしてみましたが、どちらも機能しませんでした。

また、Clover for IDEA インストール ガイド - 既知の問題

Maven ビルド ツールを使用している場合は、Maven と同じ > IntelliJ 出力ディレクトリの使用を避ける必要があります。Maven は target/classesおよびtarget/test-classesディレクトリを使用するため、
これらのディレクトリを指定しないでください。IntelliJのclover.db場所も、Maven が使用する場所とは異なる必要があります。

ファイル破損の問題があるのに、なぜそれらを区別する必要があるのですか? それらが区別されている場合、完全に別のプロセスでビルドを繰り返すことなく、どうすれば素晴らしいカバレッジの強調表示などを取得できますか?

4

2 に答える 2

2

さて、私はついに答えを見つけました。後世のためにここに残します。

解決策は複雑で、ややハックですが、動作します

  1. 親プロジェクトのpom.xmlファイルを更新する

    • クローバーDB: <cloverDatabase>${project.basedir}.clover\clover.db</cloverDatabase>
    • CloverDB をマージします。
      <cloverMergeDatabase> ${project.basedir}.clover\cloverMerge.db </cloverMergeDatabase>
  2. IntelliJ IDEAで実行する単体テストを作成する

    • setup a起動前- Maven ゴールの実行
      clean clover2:setup prepare-package -DSkipTests
      単体テスト画面の実行構成
  3. Maven 実行構成を作成する
    • 単体テストを起動前の状態にする
    • コマンドラインでMavenを実行しますclover2:aggregrate
      構成を実行して、Maven にテストを実行させ、結果を集計します。
  4. clover の Intellij プロジェクト設定を更新して、マージ ファイルを指すようにします。
    • Relative to project directory であることを確認してください。チェックボックスがオンになっています。
    • Pomファイルと同じ値で指定されたユーザーへのInitString 。
      私の場合: .clover\cloverMergeDB
      チェックボックスがチェックされ、ファイル名が表示された設定画面
  5. コマンドが実行されたら、Refresh Coverageアイコンをクリックするだけで、アイデアのカバレッジ データを表示して操作できます。
    • テストが失敗した場合は、IntelliJ テスト ランナー タブを使用して理由を確認することもできます。
于 2015-03-05T01:42:01.690 に答える
0

インストルメンテーションの構成の下部に、マルチモジュール プロジェクトがある場合は、これらの場所を明示的に設定しないでください。

ドキュメントには実際には次のように記載されています。マルチモジュール プロジェクトがある場合は、これらの場所を明示的に(絶対パスを使用して)設定しないでください。理由は簡単です。絶対パスを使用すると、モジュールごとに個別の clover.db が作成されず、clover.db ファイルが 1 つだけ作成されます。

「Maven ビルド ツールを使用している場合は、Maven と同じ IntelliJ 出力ディレクトリを使用しないようにする必要があります。Maven は target/classes および target/test-classes ディレクトリを使用するため、これらを指定しないでください」[...] なぜすべきかファイル破損の問題はありますか?

問題は次のとおりです。IntelliJ IDEA は独自のエンジンを使用してソースをコンパイルします。これは、ソースをコンパイルするために元のプロジェクトのビルド システム (たとえば、Maven) を呼び出す必要がないことを意味します。

つまり、Maven ベースのプロジェクトがあり、Clover-for-Maven プラグインがインストールされていて、同時に Clover-for-IDEA が IntelliJ IDE にインストールされていて、これら 2 つの Clover 統合で使用されている場合クラスとデータベースの同じ出力フォルダー

...その後、これら 2 つの Clover 統合がファイルの上書きを開始する可能性があります。

ほとんどの場合、これは望ましい動作ではありません。これは、IDEA でのソース コードの変更やプロジェクトの再構築アクションなどによって、ソースの再コンパイルがトリガーされるためです。Clover-for-Maven によって以前に取得された結果を削除できます。

于 2015-03-07T21:05:21.980 に答える