当前位置: 首页 > 知识库问答 >
问题:

Sonarqube糟糕的报道,因为lombok@Data

常子濯
2023-03-14

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

编译的类被标记为@Generated但 Sonar 不会忽略它。

如何排除分析的@Data

共有3个答案

申屠浩歌
2023-03-14

一般来说,你不能只排除一两行,但是,你可以做一些其他的事情,让你100%的覆盖率。

使用< code>@Data后,您会看到覆盖率急剧下降的原因是,它包含了许多注释,如< code>@ToString 、< code>@EqualsAndHashCode 、< code>@Getter 、< code>@Setter 、< code > @ RequiredArgsConstructor 等。声纳开始寻找你的bean/pojo可能使用或不使用的所有这些方法。

有关@Data注释的详细信息-https://projectlombok.org/features/Data

我只是假设,但是,如果您只对Getter和Setter使用< code>@Data注释,那么使用< code>@Getter和< code>@Setter注释,而不是< code>@Data,我相信您会看到您的覆盖率有所提高。

吴山
2023-03-14

根据JaCoCo changelog -从0.8.0版本开始的方法,带有注释< code>@lombok。生成的被自动过滤掉。

变更日志还指出:

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

JaCoCo 0 . 8 . 0版本发布公告声明:

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

    < li >索纳库贝-https://jira.sonarsource.com/browse/SONARJAVA-2608

由我们作为JaCoCo项目的一部分开发的集成的相应版本(0.8.0)生成的报告(蚂蚁任务、Maven插件和命令行界面)提供过滤功能。

截至今天(2018年1月30日),针对https://jira.sonarsource.com/browse/SONARJAVA-2608的修复应该是在尚未发布的SonarJava插件版本5.1中。

谭泳
2023-03-14

戈丁的答案是正确的,但是现在有一种方法可以自动添加注释。

为此,您可以创建<code>lombok。在项目根目录中配置文件,并在其中添加以下行:

lombok.addLombokGeneratedAnnotation = true

完整详情请点击此处。如文档中所述:

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

 类似资料:
  • 问题内容: 我不是PHP开发人员,但我在很多地方都看到人们似乎把它当作瘟疫之类。为什么? 问题答案: 表示通过GET或POST传递的所有变量都可以作为脚本中的全局变量使用。由于访问未声明的变量不是PHP中的错误(这是警告),因此可能导致非常讨厌的情况。考虑一下,例如: 这本身不是一件坏事(精心设计的代码不应生成警告,因此不应访问可能未声明的变量(并且出于相同原因也不 需要 )),但是PHP代码通常

  • 我正在测试简单拓扑以检查Kafka喷口的性能。它包含kafka spout和Bolt来确认每个元组。Bolt执行方法: 拓扑结构如下所示: 其他拓扑设置: 我在10分钟内得到了1.5kk元组。螺栓的性能约为0,5。所以我的逻辑很简单:如果我双倍喷注和螺栓并行提示-我将得到双倍的性能。下一个测试是1个工人2个Kafka喷口,2个简单的夹子螺栓和Topology.Acker.Executors=2。以

  • 在我第一次使用JavaFX时,场景被错误地显示,我没有找到原因。例如,在E(fx)clipse页面的第一个基本教程中提出了以下代码: 它应该显示文本“Hello FX”,但显示以下内容: 我的Java版本是适用于Windows 64(Win 7)的8u65。

  • 译者注:该小结关于错误处理的观点,译者并不完全赞同,关于本小结的部分想法请参考关于16.10.2小节错误处理的一些见解 依附于第13章模式的描述和第17.1小节与第17.2.4小节的总结。 16.10.1 不要使用布尔值: 像下面代码一样,创建一个布尔型变量用于测试错误条件是多余的: var good bool // 测试一个错误,`good`被赋为`true`或者`false`

  • 一进去,面试官迟到,等了近十分钟,面试官到了,开始面试 先狂问我的毕设,具体到其中的算法实现。由于算法不是自己写的,具体细节并不了解,就只能说不会,然后就被质疑是不是自己做的,在毕设中担任了什么工作,怎么具体细节都不清楚,我只能说是使用了别人做的算法包,具体实现细节不是特别清楚 之后开始正式的java坐牢环节 一上来直接问我用的jdk版本,我说了jdk8,然后居然问我为什么用jdk8。我直接一脸问

  • 问题内容: 类似于这个问题… 您实际上在Java代码中发现了哪些最差的做法? 我的是: 在Servlet中使用实例变量(实际上,这不仅是错误的做法,而且还是错误) 使用HashMap之类的Collection实现,而不使用适当的接口 使用看似神秘的类名,例如SmsMaker(SmsFactory)或CommEnvironment(CommunicationContext) 问题答案: 我必须维护J