Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Exclude Setters and Getters in JaCoCo Code Coverage

With the cobertura-maven-plugin setters and getters can be excluded from code coverage using the ignoreTrivial option. Is there also such a possibility with the jacoco-maven-plugin?

This is my current configuration:

<plugin>
  <groupId>org.jacoco</groupId>
  <artifactId>jacoco-maven-plugin</artifactId>
  <version>0.7.1.201405082137</version>
  <configuration>
    <excludes>
      <exclude>com/welovecoding/web/blog/test/**/*.class</exclude>
    </excludes>
  </configuration>
  <executions>
    <execution>
      <id>amend-unit-test-java-agent-option</id>
      <goals>
        <goal>prepare-agent</goal>
      </goals>
    </execution>
    <execution>
      <id>report</id>
      <phase>prepare-package</phase>
      <goals>
        <goal>report</goal>
      </goals>
    </execution>
  </executions>
</plugin>
like image 909
Benny Neugebauer Avatar asked Aug 31 '14 13:08

Benny Neugebauer


2 Answers

From JaCoCo 0.8.0, it is possible to exclude the getters / setters (and also toString(), equals(), ...) automatically generated by Lombok from the coverage metrics thanks to filtering options :

Lombok

Methods annotated with @lombok.Generated (generated by Lombok getters, setters, equals, hashcode, toString, etc) - Done in 0.8.0

To that end, you will first need to create a lombok.config file located for example at the root folder of your projet, with the following contents :

lombok.addLombokGeneratedAnnotation = true

The @Generated annotation will be added to the setters / getters, etc. and will be skipped in the coverage analysis.

like image 65
potame Avatar answered Sep 18 '22 17:09

potame


Not supported officialy, see comments in :

https://github.com/jacoco/jacoco/issues/15

mentioned solution:

It's a long time since this issue is opened. It a really interesting feature. For instance it's implemented in clover and corbetura. There are fork that implement filtering : github.com/huangxiwei/jacoco , https://github.com/mchr3k/jacoco since the begining of the year. Why don't you merge those fork into master branch ? Even if all filtering is not implemented at start, main filters needed are listed in the wiki page you have written (Try with resources, sync block, enum static methods). Coverage is a very useful tool, more it's accruate more it's will be usefull. It helps alot when coverage reach a high value, it helps to focus on the right classes.

like image 44
Grzesuav Avatar answered Sep 17 '22 17:09

Grzesuav