最新Jacocoプラグイン(まだスナップショットバージョン、0.7.10-SNAPSHOT
)には、Lombokで生成されたコードを除外するための素晴らしい新機能があります( https://github.com/jacoco/jacoco/wiki/FilteringOptions )。リポジトリのルートにlombok.config
ファイルを追加するだけで、
lombok.addLombokGeneratedAnnotation=true
Jacocoレポートを内部で生成すると、違いがわかります。ただし、私の通常の品質ジョブを実行して結果をSonarに公開すると、異なる(つまり、より悪い)結果が得られます。
ローカルレポートとソナーで同じ結果にならないのはなぜですか?回避策はありますか?
ここで言及したように: https://github.com/jacoco/jacoco/pull/513#issuecomment-293176354
フィルタリングは、実行情報の収集時(execファイルの作成時)ではなく、レポート生成時(html、xmlなどの作成時)に実行されます。そのため、xmlの読み取りの代わりに実行データを直接読み取るツール(これは、純粋な内部中間形式に依存するという側のミスの一種ですが、行われることは行われます)と独自のレポート(SonarQube、Jenkinsなど)を作成します)レポートのフィルタリングを取得するために、リリースされたらJaCoCoへの依存関係を更新する必要があります。リリースが完了すると、これについて下流のプロジェクト(特に上記のすべて)に明示的に通知します。したがって、もう一度-しばらくお待ちください。よろしくお願いします。
ソナーがexecファイルの代わりに最終レポートを読み取る方法が見つからなかったので、我慢して、公式の0.7.10 jacocoプラグインのリリースを待ってから、ソナー側の更新を待つ必要があると思います。
------ 2018年5月9日更新
新しいバージョンがリリースされました、そして私はそれが私のために働くことを確認できます。
使用:
Lombokで生成されたコードが無視されるようになったため、Sonarに報告されるカバレッジ結果が大幅に向上しました。 「実際の」カバーされていない領域が何であるか、そしてそれが危険かどうかを識別するのに本当に役立ちます。
最初に、ロンボクのバージョンが少なくとも1.16.14であることを確認する必要があります
pom.xml:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
<version>1.16.14</version>
</dependency>
次に、Jacocoのバージョンが少なくとも.8.であることを確認する必要があります
pom.xml:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.0</version>
<!-- // -->
</plugin>
次に、プロジェクトのsrc
フォルダーにlombok.config
ファイルを追加する必要があります(resources
フォルダーではない)
lombok.config:
# tells Lombok that this is the root directory and that it shouldn’t search parent directories for more configuration files
config.stopBubbling = true
# tells Lombok to add @lombok.Generated annotation to all generated methods
lombok.addLombokGeneratedAnnotation = true