【问题标题】:Filtering coverage with Lombok, Gradle, Jacoco and Sonar使用 Lombok、Gradle、Jacoco 和 Sonar 过滤覆盖范围
【发布时间】:2018-07-08 04:03:18
【问题描述】:

我在我的 Java 项目中使用 Gradle 4.4 和 JaCoCo 0.8.0,Sonar 和 SonarJava 5.0.1。

我有一个用 lombok 的 @Value@Builder 注释的类。

我在 build.gradle 中的 JaCoCo 配置如下所示:

jacoco {
    toolVersion = "0.8.0"
    reportsDir = file("$buildDir/reports/jacoco")
}

jacocoTestReport.doFirst{
    classDirectories = files("buildDir/classes")
}

task jacocoReport(type: JacocoReport){
    sourceSets sourceSets.main
    executionData test, integrationTest
}

另外,我有 lombok.confi 文件,属性为 lombok.addLombokGeneratedAnnotation = true,生成的东西实际上在 build/classes 中有 @lombok.Generated 注释。

但是,Sonar 的覆盖率仍然很低。它报告了大量的条件和要覆盖的行。

【问题讨论】:

    标签: java gradle sonarqube jacoco lombok


    【解决方案1】:

    announcement of release of JaCoCo version 0.8.0中所述:

    请注意

    直接读取 exec 文件(不是最终报告)并嵌入 JaCoCo 以生成报告的工具只有在更新到该版本的 JaCoCo 后才会提供过滤功能。

    所以请关注/等待/等各个供应商,例如 SonarQube - https://jira.sonarsource.com/browse/SONARJAVA-2608

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

    使用 Gradle JaCoCo 插件,您可以使用“toolVersion”为“JaCoCoReport”任务选择运行时和版本 - https://docs.gradle.org/current/userguide/jacoco_plugin.html

    这在JaCoCo changelog中也有说明:

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

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

    综上所述:Gradle 生成的报告应该已经被过滤了,SonarQube 生成的报告将在 SonarJava 升级后被过滤。

    【讨论】:

      【解决方案2】:

      除了配置 lombok 之外,我还必须告诉声纳扫描仪在哪里可以找到依赖项。是摆脱 SonarQube 中“应删除未使用的私有字段”消息的唯一方法。

      我按照该网站的说明进行操作:https://netwolfuk.wordpress.com/2017/10/29/maven-sonarqube-jacoco-lombok-and-teamcity/

      归结为:

      1. 告诉 maven 将其依赖项复制到 Sonar 可以找到它们的地方。这很简单,添加:

        dependency:copy-dependencies
        
      2. 在声纳构建步骤中添加以下内容:

        -Dsonar.java.libraries=target/dependency/*.jar
        

      【讨论】:

        猜你喜欢
        • 2012-04-14
        • 2012-06-11
        • 2013-02-07
        • 2019-12-27
        • 2023-03-27
        • 2016-11-08
        • 2022-01-06
        • 2017-06-03
        • 2016-04-08
        相关资源
        最近更新 更多