Maven 由于lombok@Data的原因,覆盖范围可能不好

Maven 由于lombok@Data的原因,覆盖范围可能不好,maven,sonarqube,jacoco,lombok,jacoco-maven-plugin,Maven,Sonarqube,Jacoco,Lombok,Jacoco Maven Plugin,我用jacoco做报道。当我看jacoco的报告时,报道似乎不错。但在Sonarqube中,覆盖率很低,因为它说lombok的@Data注释没有被测试覆盖 编译类被标记为@生成的,但声纳不会忽略它 如何排除分析的@数据?tl;博士:我的建议是忽略全班的报道 理由:大多数数据类不包含“真实代码”。如果一个类仅由属性和@Data注释组成,那么您就不会从覆盖范围中获得任何优势。如果你把逻辑放在类中,它可能不再是数据类了——想想SRP 也就是说,我曾经编写过一个数据类测试程序,试图涵盖所有情况。回想起来

我用jacoco做报道。当我看jacoco的报告时,报道似乎不错。但在Sonarqube中,覆盖率很低,因为它说lombok的
@Data
注释没有被测试覆盖

编译类被标记为
@生成的
,但声纳不会忽略它


如何排除分析的
@数据

tl;博士:我的建议是忽略全班的报道

理由:大多数数据类不包含“真实代码”。如果一个类仅由属性和
@Data
注释组成,那么您就不会从覆盖范围中获得任何优势。如果你把逻辑放在类中,它可能不再是数据类了——想想SRP

也就是说,我曾经编写过一个数据类测试程序,试图涵盖所有情况。回想起来,不值得这么麻烦。也许像这样的库也会有所帮助。

根据-从版本0.8.0开始,带有注释的方法
@lombok。生成的
会自动过滤掉

Changelog还指出:

直接读取exec文件并为此嵌入JaCoCo的工具(如SonarQube或Jenkins)只有在更新到此版本的JaCoCo后才会提供过滤功能

国家:

直接读取exec文件(不是最终报告)并嵌入JaCoCo以生成报告的工具只有在更新到此版本的JaCoCo后才能提供过滤功能。因此,请关注/等待/等各个供应商,例如

  • 声纳qube-
由我们开发的JaCoCo项目(Ant任务、Maven插件和命令行界面)的相应集成版本(0.8.0)生成的报告提供过滤功能


从今天(2018年1月30日)起,的修复程序应该在尚未发布的SonarJava插件版本5.1中。

一般来说,您不能只排除一行或两行,但您可以做一些其他事情,使您的覆盖率达到100%

使用
@Data
后覆盖率急剧下降的原因是它包含了大量注释,如
@ToString
@EqualsAndHashCode
@Getter
@Setter
@RequiredArgsConstructor
,sonar开始寻找您的bean/pojo可能使用或不使用的所有这些方法

有关
@Data
注释的详细信息-

我只是假设,但是,如果您仅为Getter和Setter使用
@Data
注释,那么请使用
@Getter
@Setter
注释,而不是
@Data
,我相信您将看到覆盖率的提高。

是正确的,但现在有一种方法可以自动添加该注释

为此,您可以在项目根目录中创建一个
lombok.config
文件,并在其中添加此行:

lombok.addLombokGeneratedAnnotation = true
全部细节。如文件所述:

Lombok可以配置为在可能的情况下向所有生成的节点添加@Lombok.Generated注释;对于JaCoCo(具有内置支持)或其他样式检查器和代码覆盖工具非常有用: lombok.addlombokggeneratedannotation=true


你试过这个吗?没有,但是忽略文件上的问题忽略整个文件。我不想要这种行为。我只想排除带有@generatedmable replicate的注释的方法