JaCoCo: exclude generated methods (using it with Lombok)

前端 未结 3 914
说谎
说谎 2021-02-05 03:08

I am using JaCoCo and it is considering methods generated by Lombok (generated in the bytecode, not trace of them in the source code). How can I configure JaCoCo to ignore them?

相关标签:
3条回答
  • 2021-02-05 03:32

    Also another way to exclude lombok generated classes since jacoco 0.8.0 and lombok 1.16.14 see: https://www.rainerhahnekamp.com/en/ignoring-lombok-code-in-jacoco/

    Luckily, beginning with version 0.8.0, Jacoco can detect, identify and ignore Lombok-generated code. The only thing you as the developer have to do is to create a file named lombok.config in your directory’s root and set the following flag:

    lombok.addLombokGeneratedAnnotation = true
    

    This adds the annotation lombok.@Generated to the relevant methods, classes and fields. Jacoco is aware of this annotation and will ignore that annotated code.

    Please keep in mind that you require at least version 0.8.0 of Jacoco and v1.16.14 of Lombok.

    0 讨论(0)
  • 2021-02-05 03:39

    Use the excludes tag provide by jacoco.

                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.7.4.201502262128</version>
                <configuration>
                    <excludes>
                        <exclude>**/config/**</exclude>
                        <exclude>**/model/**</exclude>
                        <exclude>**/item/**</exclude>
                    </excludes>
                </configuration>
    
    0 讨论(0)
  • 2021-02-05 03:42

    As has already been answered, adding lombok.config in the root directory of the project solves the problem, but if you're using Maven and want to avoid adding lombok.config to your repository, you can use the Apache Maven AntRun Plugin in order to generate it automatically on build:

    <plugins>
       <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-antrun-plugin</artifactId>
          <version>3.0.0</version>
          <executions>
             <execution>
                <id>lombok-config</id>
                <phase>initialize</phase>
                <goals>
                   <goal>run</goal>
                </goals>
                <configuration>
                   <target>
                      <propertyfile file="lombok.config">
                         <entry key="config.stopBubbling" value="true" />
                         <entry key="lombok.addLombokGeneratedAnnotation" value="true" />
                      </propertyfile>
                   </target>
                </configuration>
                <?m2e execute?> <!-- Optional: enable this execution in Eclipse -->
             </execution>
          </executions>
       </plugin>
    </plugins>
    

    Don't forget to instruct your SCM to ignore this autogenerated file.

    0 讨论(0)
提交回复
热议问题