42

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

4

3 回答 3

71

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

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

lombok.addLombokGeneratedAnnotation = true

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

请记住,您至少需要 Jacoco 0.8.0 版和 Lombok 1.16.14 版。

于 2018-08-14T11:53:56.983 回答
6

使用 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>
于 2015-06-24T10:30:38.473 回答
2

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

<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>

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

于 2020-05-03T13:35:32.623 回答