java之从 Sonar 覆盖报告中排除 Lombok 类

dyllove98 阅读:88 2024-06-03 14:00:57 评论:0

最新 Jacoco 插件 (仍然是快照版本, 0.7.10-SNAPSHOT ),有一个很好的新功能来过滤 Lombok 生成的代码( https://github.com/jacoco/jacoco/wiki/FilteringOptions )。
我们需要做的就是添加一个 lombok.config存储库根目录下的文件:

lombok.addLombokGeneratedAnnotation=true  
当我在内部生成 Jacoco 报告时,我看到了不同之处。
然而,当我的常规质量作业执行并将结果发布到 Sonar 时,我得到了不同(即更糟)的结果。
为什么我的本地报告和 Sonar 中的结果不同?有什么解决方法吗?

请您参考如下方法:

正如这里提到的:https://github.com/jacoco/jacoco/pull/513#issuecomment-293176354

过滤是在报告生成时(创建 html、xml 等)而不是在收集执行信息(创建 exec 文件)时执行的。所以直接读取执行数据而不是读取xml的工具(这是他们这边的一种错误,纯粹依赖内部中间格式,但是已经完成了)并创建自己的报告(例如SonarQube,Jenkins等) ) 将需要在 JaCoCo 发布后更新他们对 JaCoCo 的依赖,以便过滤报告。当我们的发布完成时,我们将明确通知下游项目(特别是上面提到的所有项目)。所以再次 - 请耐心等待。感谢您的理解。

我没有找到让 Sonar 读取最终报告而不是 exec 文件的方法,所以我想我们需要耐心等待官方 0.7.10 jacoco 插件发布,然后在 Sonar 方面进行更新!

------ 2018 年 5 月 9 日更新

新版本已经发布,我可以确认它对我有用。

使用 :

  • Sonar 6.7
  • SonarJava 插件 5.1.1.13214
  • jacoco maven 插件 0.8.1
  • lombok.addLombokGeneratedAnnotation=true in lombok.config

  • 我现在向 Sonar 报告了更好的覆盖结果,因为现在忽略了 Lombok 生成的代码。它确实有助于确定“真正的”未覆盖区域是什么,以及它是否有风险。


    标签:java
    声明

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    关注我们

    一个IT知识分享的公众号