SonarQube不承认一些Lombok注释 - Jacoco的误导性测试覆盖结果

时间:2015-12-21 12:39:31

标签: java eclipse sonarqube lombok

SonarQube支持部分Lombok注释(getters - setters等)。但是,它仍然不支持@EqualsAndHashCode@ToString方法。

我在StackOverflow和其他网站上尝试了所有答案。但是,它在我的情况下不起作用。

有没有办法说SonarQube或Jacoco,它们不会分析这些注释,或者不将它们包含在测试覆盖率结果中,或者解决这个问题的方法是什么?

3 个答案:

答案 0 :(得分:7)

从Jacoco 0.7.10开始,现在可以通过在lombok.config中将标志lombok.addLombokGeneratedAnnotation设置为true来排除Lombok生成的代码。

更多关于http://www.rainerhahnekamp.com/ignoring-lombok-code-in-jacoco

答案 1 :(得分:4)

让我们把SonarQube排除在等式之外,因为它只是揭示问题的工具。

JaCoCo通过检测字节码来工作:这意味着它在字节码中的特定位置添加了一些指令(探测器),并查看在测试运行期间哪些探测器被命中。

在它的一边,Lombok在字节码级别生成方法。 然后,这些生成的方法由JaCoCo检测,并且不在您的测试范围内。

所以你必须配置JaCoCo来忽略这些方法,或者在lombok发挥作用之前对仪器类进行配置,或者为这些生成的方法编写测试。

答案 2 :(得分:3)

您可以configure Lombok生成@SuppressFBWarnings生成的代码。可以,您可以配置JaCoCo来监听该批注。很遗憾,@javax.annotation.Generated有保留来源,因此对您没用。

披露:我是龙目岛开发者