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

Lombok、Gradle、Jacoco和声纳的过滤覆盖范围

严成礼
2023-03-14

我正在将 Gradle 4.4 用于 JaCoCo 0.8.0 的 Java 项目,并将声纳与声纳贾瓦 5.0.1 配合使用。

我有一个用龙目岛@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文件,其属性为< code > lombok . addlombokgeneratedannotation = true ,生成的内容实际上有< code>@lombok。在build/classes中生成的批注。

然而,声纳的覆盖率仍然很低。它报告了大量要覆盖的条件和线路。

共有2个答案

卜季萌
2023-03-14

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

我按照这个网站的指示:https://netwolfuk.wordpress.com/2017/10/29/maven-sonarqube-jacoco-lombok-and-teamcity/

它归结为:

>

  • 告诉maven将其依赖项复制到Sonar可以找到的地方。这很简单,只需添加:

    dependency:copy-dependencies
    

    将以下内容添加到声纳构建步骤中:

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

  • 霍永年
    2023-03-14

    如JaCoCo版本0.8.0发布公告所述:

    请注意:

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

    因此,请遵循/wait/etc各自的供应商,如SonarQube-https://jira.sonarsource.com/browse/SONARJAVA-2608

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

    使用Gradle JaCoCo插件,您可以使用“工具版本”为“JaCoCoReport”任务选择运行时和版本-https://docs . Gradle . org/current/user guide/JaCoCo _ Plugin . html

    这在JaCoCo变更日志中也有说明:

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

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

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

     类似资料:
    • 我正在尝试为webapp生成代码覆盖率,以便使用jacoco和sonar进行手动测试。 我能够通过以下方式修改catalina.bat来生成jacoco.exec文件: I然后复制JACOCO。执行文件到sonarcube内的目标文件夹,然后运行ant sonar。建造。xml包含以下条目: 我从ant获得的输出如下。我在url上看不到任何报道http://localhost:9000/dashb

    • 我们有一个多模块的maven项目。 每个模块都有一对testng和powermock单元测试用例。我们正在使用jacoco进行代码覆盖率报告。但是,jacoco在分析单元测试复盖率时基于testng单元测试用例,而忽略了powermock单元测试用例。因此,总的代码覆盖率越来越低。 如何配置jacoco来同时获取testng和jacoco测试用例?

    • 我有一个基本的maven多模块,父模块是POM,其子模块是domain、service和Web。 我已经在pom父级中添加了jacoco插件和所需的配置,以便将测试覆盖率报告附加到一个Sonar很容易找到的文件中。 我的问题是,Sonar只显示第一个模块的测试覆盖范围(是domain)(即使我用编辑器打开文件,看到其他模块的类名被追加在其中)。 这种配置会有什么问题? 为了它的价值,声纳分析被称为

    • 我正在通过Ant运行声纳任务,由RHEL环境中的Jenkins触发。我成功地使用Cobertura进行Junit代码复盖,并使用Surefire进行报告。声纳进口Surefire报告良好。 我很困惑如何真正做到这一点。网页http://www.sonarsource.org/measure-coveration-by-integration-tests-with-sonar-updated/参考了

    • 我正在使用: 声纳v.3.2(有jacoco) Maven 3.0.4 跟随”http://johndobie.blogspot.in/2012/05/easy-unit-and-integration-code-coverage.html#comment-表格“以获得单元的单独代码覆盖率 日志显示如下: POM文件:

    • 我有一个用Lombok的@Data注释的类,在一个gradle项目中,使用Sonarqube和Jacoco插件。 源代码可在 github 上找到 我有一个本地运行的sonarqube服务器作为docker容器运行,开始如下: 我添加了一个“lombok.config”文件,要求它添加@lombok。根据文档中的“全局配置键”部分,为其生成的代码生成注释。 我有以下声纳状态配置。 当我第一次运行s