使用Sonarrunner和Gradle从Jacoco报告中排除软件包

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Sonarrunner和Gradle从Jacoco报告中排除软件包相关的知识,希望对你有一定的参考价值。

有没有办法从SonarQube中排除包(由gradle + sonar-runner配备)覆盖率报告(由jacoco生成),而不是将它们完全排除在项目之外?

以下是我到目前为止尝试的内容:

版本信息

  • SonarHiwa 4.5.1
  • Gradle 2.2。

Jacoco配置

// JaCoCo test coverage configuration
tasks.withType(Test)  task ->
    jacoco 
        append = false

        // excluded classes from coverage defined in above configuration
        excludes = excludedClasses()
    

    jacocoTestReport 
        doFirst 
            classDirectories = fileTree(dir: "$buildDir/classes/main/").exclude(excludedClasses())
        
    


Sonarrunner配置

用于从声纳分析中排除包的属性设置。将此添加到我的配置会导致包在Sonar中根本不显示的情况。

property 'sonar.exclusions', excludedClasses().join(',')

用于从jacoco中排除包的属性设置。设置此选项会导致包裹被排除在覆盖率分析之外,但会显示0%会累积到不良总分。

property 'sonar.jacoco.exclusions', excludedClasses().join(',')
答案

我已经设法通过在sonar-project.properties中使用sonar.coverage.exclusions属性从coverage报告中排除特定包。财产在官方documentation中描述

另一答案

将@ Mikalai的答案和@ pavel的评论结合起来,可以更容易地复制和粘贴:

要从所有Sonar检查中排除包或类(覆盖,代码异味,错误等),请将以下内容添加到build.gradle

sonarqube 
    properties 
        property 'sonar.exclusions', "**/com/some/package/**"
    

要仅从Sonar代码覆盖率检查中排除包或类,请将以下内容添加到build.gradle

sonarqube 
    properties 
        property 'sonar.coverage.exclusions', "**/com/some/package/**"
    

以上是关于使用Sonarrunner和Gradle从Jacoco报告中排除软件包的主要内容,如果未能解决你的问题,请参考以下文章

使 Sonar Runner Gradle 任务依赖于我的一项任务

Sonar Runner 执行错误

SonarQube Runner 与扫描仪

如何使用 gradle 从 WSDL 和 XSD 生成类,相当于 maven-jaxb2-plugin

Gradle从入门到放弃

Jenkins Perforce 插件未从 Perforce 签出代码