Jacocoの0.8.0が2018年1月2日にリリースされ、待ち焦がれていたLombokで生成されたメソッドを除外する機能がはいりました。
- JaCoCo - Change History
Methods annotated with @lombok.Generated to better integrate with Lombok >= 1.16.14. Initial analysis and contribution by Rüdiger zu Dohna (GitHub #513).
なお、他にも様々なフィルタが実装(または実装予定)されています。
こういった機能を使うことによって、必要な範囲に絞ったカバレッジが把握しやすくなると思います。
除外方法
Jacoco側では、@lombok.Generated
が付いているメソッドを一律対象外にするといった実装となっており、Jacoco側で何か設定で切り替えるといったものではありませんでした。
@lombok.Generated
は、Lombokの設定lombok.config
で付与することになります。デフォルトでは付与されません。
lombok.addLombokGeneratedAnnotation = true
を設定することによって付与されるようになります。
まとめると、、除外のために下記の2つが必要になります。
- Jacocoのバージョンを 0.8.0 以上にする
lombok.config
でlombok.addLombokGeneratedAnnotation = true
を設定する
Gradleでの設定例
Gradleプロジェクトで試してみました。コードは一式は下記にあります。
GradleでJacocoを使う場合には、build.gradle
にapply plugin: 'jacoco'
を指定するだけですが、2018年1月6日時点だとバージョン0.7.6が使われてしまうので、明示的にJacocoのバージョンを指定する必要があります。
apply plugin: 'java' apply plugin: 'jacoco' repositories { jcenter() } dependencies { compileOnly 'org.projectlombok:lombok:1.16.18' testCompile 'junit:junit:4.12' testCompile 'org.assertj:assertj-core:3.9.0' } jacoco { toolVersion = "0.8.0" }
lombok.config
は下記のように記載します。config.stopBubbling = true
はプロジェクトのルートであることをLombokに教えるための設定です。(これ以上親ディレクトリを辿って設定ファイルを探さないように)
config.stopBubbling = true lombok.addLombokGeneratedAnnotation = true
これで無事除外されました。