1. ホーム
  2. maven

[解決済み] Maven Jacoco 設定 - レポートからクラス/パッケージを除外することができません。

2022-06-30 08:54:34

質問

私はmavenのマルチモジュールプロジェクトを持っており、コードカバレッジレポートのためにjacoco-mavenを使用しています。いくつかのクラスは、Springの設定であり、私はそれらに興味がないので、報告されるべきではない。

私は以下のようにmaven-jacocoプラグインを宣言しています。

<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.2.201409121644</version>
<configuration>
    <outputDirectory>${project.reporting.outputDirectory}/jacoco-ut</outputDirectory>
    <exclude>some.package.*</exclude>
    <exclude>**/*Config.*</exclude>
    <exclude>**/*Dev.*</exclude>
    <exclude>some/package/SomeClass.java</exclude>
</configuration>
<executions>
    <execution>
        <goals>
            <goal>prepare-agent</goal>
        </goals>
    </execution>
    <execution>
        <id>report</id>
        <phase>prepare-package</phase>
        <goals>
            <goal>report</goal>
        </goals>
    </execution>
    <execution>
        <id>post-unit-test</id>
        <phase>test</phase>
        <goals>
            <goal>report</goal>
        </goals>
    </execution>
</executions>
</plugin>

問題なのは mvn clean verify を実行したときに、私のxml設定が指摘しているように、除外されるべきクラスがまだjacocoによって報告されることです。どのように私はそれを適切に構成することができますか?

どのように解決するのですか?

あなたの XML は少し間違っています。除外の親フィールドにクラスの除外を追加する必要があります。 Jacocoドキュメント

<configuration>
    <excludes>
        <exclude>**/*Config.*</exclude>
        <exclude>**/*Dev.*</exclude>
    </excludes>
</configuration>

excludeフィールドの値は標準のワイルドカード構文を使ってディレクトリ target/classes/ に相対するコンパイルされたクラスのクラスパス (パッケージ名ではない) でなければなりません。

*   Match zero or more characters
**  Match zero or more directories
?   Match a single character

この方法で、パッケージとその子パッケージ/サブパッケージのすべてを除外することもできます。

<exclude>some/package/**/*</exclude>

のすべてのクラスを除外します。 some.package にある全てのクラスと、その子クラスを除外します。例えば some.package.child もレポートには含まれないでしょう。

私はテストし、私のレポートゴールは、上記を使用してクラスの数を減らして報告しました。

このレポートを Sonar にプッシュする場合、Sonar の設定でこれらのクラスを表示から除外するよう指示する必要があります。

設定 > 一般設定 > 除外 > コード カバレッジ

Sonar ドキュメント では、もう少し詳しく説明しています。

上記のコマンドを実行する

mvn clean verify

除外されたクラスが表示されます

除外されない

[INFO] --- jacoco-maven-plugin:0.7.4.201502262128:report (post-test) @ ** ---
[INFO] Analyzed bundle '**' with 37 classes

除外項目あり

[INFO] --- jacoco-maven-plugin:0.7.4.201502262128:report (post-test) @ ** ---
[INFO] Analyzed bundle '**' with 34 classes

これが役に立つといいのですが