JaCoCo:排除生成的方法(与Lombok一起使用)



我使用的是JaCoCo,它正在考虑Lombok生成的方法(在字节码中生成,而不是在源代码中跟踪它们)。如何配置JaCoCo以忽略它们?

也是排除自jacoco 0.8.0和lombok 1.16.14以来lombok生成的类的另一种方法。

幸运的是,从0.8.0版本开始,Jacobo可以检测、识别和忽略Lombok生成的代码。作为开发人员,您唯一需要做的就是在目录的根目录中创建一个名为lombok.config的文件,并设置以下标志:

lombok.addLombokGeneratedAnnotation = true

这将注释lombok.@Generated添加到相关的方法、类和字段中。Jacobo知道这个注释,并将忽略那个注释代码。

请记住,您至少需要Jacobo的0.8.0版本和Lombok的v1.16.14版本。

使用jacoco提供的excludes标记。

            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.7.4.201502262128</version>
            <configuration>
                <excludes>
                    <exclude>**/config/**</exclude>
                    <exclude>**/model/**</exclude>
                    <exclude>**/item/**</exclude>
                </excludes>
            </configuration>

正如已经回答的那样,在项目的根目录中添加lombok.config可以解决问题,但如果您正在使用Maven并希望避免将lombok.config添加到存储库中,则可以使用Apache Maven AntRun插件在构建时自动生成它:

<plugins>
   <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-antrun-plugin</artifactId>
      <version>3.1.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>

不要忘记指示SCM忽略此自动生成的文件。

要解决这个问题,我们需要一种方法告诉JaCoCo忽略lombok生成的代码。这可以通过指示lombok使用@lombok.generated注释所有生成的方法来实现,JaCoCo将自动忽略该方法。

使用以下内容创建一个lombok.config文件:

# This tells lombok this directory is the root,
# no need to look somewhere else for java code.
config.stopBubbling = true
# This will add the @lombok.Generated annotation
# to all the code generated by Lombok,
# so it can be excluded from coverage by jacoco.
lombok.addLombokGeneratedAnnotation = true

并将其放在repo的根目录中,或放在src/文件夹中。唯一的要求是,所有带有lombok注释的代码都可以在该文件下面或旁边找到。

相关内容

  • 没有找到相关文章

最新更新