我正在使用Lombok 1.18.2和JaCoCo 0.8.3,它们在理论上可以识别/忽略lombok注释。我做了一个测试,在lombok.addLombokGeneratedAnnotation = true
中添加了lombok.config
参数,然后在目标类中看到了生成的注释,这些注释已反编译。
但是我很惊讶地打开了jacoco.exec文件,看到类似@Getter的东西增加了“ Total Probes”的值,但保持不变的是“ Executed Probes”。 这是预期的吗?
如果是这样,SonarQube如何才能聪明地使用它,如果通过将其指向jacoco.exec文件,则仅包含有关总/命中探测的信息?声纳如何分辨其中一个探头与龙目岛有关?
答案 0 :(得分:2)
我正在使用Lombok 1.18.2和JaCoCo 0.8.3,它们在理论上可以识别/忽略lombok注释。
从理论上讲不是practically。
不是“忽略lombok注释”,而是用@lombok.Generated
注释的方法,甚至是0.8.3 changelog中更精确的引用条目:
由注释注释的类和方法,其保留策略为运行时或类,其简单名称包含“ Generated”(以前需要相等),在生成报告时被滤除
但是我很惊讶地打开了jacoco.exec文件,看到类似@Getter的东西增加了“ Total Probes”的值,但保持不变的是“ Executed Probes”。这是预期的吗?
是的,这是预期的。在类的检测(插入探针)期间不会进行方法过滤。 exec
文件不是最终报告,它包含有关插入到类中的所有探针的原始信息。方法的过滤发生在生成报告(分析exec
和class
文件)期间,例如,在执行report
JaCoCo Ant Task期间。
如果是这样,SonarQube如何才能聪明地使用它,如果通过将其指向jacoco.exec文件,则仅包含有关总/命中探测的信息?声纳如何分辨其中一个探头与龙目岛有关?
SonarQube embeds JaCoCo as a library和use it to analyze exec
and class files for generation of their report。
这就是JaCoCo发布公告通常包含以下声明的原因,例如为0.8.2:
和以前一样-请注意
我们作为JaCoCo项目的一部分开发的集成的
0.8.2版本(Ant Tasks,Maven插件和命令行界面)提供Java 11支持和新的过滤器,
直接读取exec文件(不是最终报告)并将JaCoCo嵌入为生成报告库的工具将提供分析Java 11类文件并仅在它们更新到此版本的JaCoCo后使用新过滤器的功能。 。 因此,请关注/等待/等各个供应商,例如
SonarQube-https://jira.sonarsource.com/browse/SONARJAVA-2876,或尝试使用读取XML报告的新插件-https://github.com/SonarSource/sonar-jacoco