【问题标题】:How do I aggregate Sonar reports for multimodule project in Gradle?如何在 Gradle 中为多模块项目聚合声纳报告?
【发布时间】:2018-09-09 14:02:28
【问题描述】:

我有一个多模块 Gradle 4.6 项目和 Sonarqube 7。Sonarqube 和 Jacoco 配置如下:

apply plugin: 'org.sonarqube'

sonarqube {
    properties {
        property 'sonar.host.url', sonarHostUrl
        property 'sonar.jacoco.reportPaths', "$buildDir/reports/jacoco"
    }
}

apply plugin: 'jacoco'

jacoco {
    toolVersion = "0.7.9"
}

jacocoTestReport {
    group = "Reporting"
    reports {
        xml.enabled true
        xml.destination "${buildDir}/reports/jacoco/report.xml"
        csv.enabled false
        html.enabled true
    }
}

test {
    jacoco {
        append = true
    }
}

我正在使用以下命令运行构建和声纳:

./gradlew clean build jacocoTestReport --info

./gradlew sonarqube -Dsonar.branch=nonMasterBranch --info

我希望它能够汇总 Sonar 报告并向我展示 Sonarqube 中的单个项目(我在 jacoco 配置中使用 append=true)。但是,我得到的每个模块的项目非常混乱。

非常感谢您的任何想法!我已经为这个地狱任务工作了太多时间并且没有任何想法:C

【问题讨论】:

    标签: gradle sonarqube jacoco sonar-runner gradle-plugin


    【解决方案1】:

    根据this answer,你应该试试Jacoco Coverage Gradle Plugin

    只需将其添加到您的根项目中即可:

    buildscript {
        repositories {
            jcenter()
        }
    
        dependencies {
            classpath 'com.palantir:jacoco-coverage:0.4.0'      
        }
    }
    
    apply plugin: 'com.palantir.jacoco-full-report'
    

    根据文档:

    com.palantir.jacoco-full-report 插件添加了一个任务,该任务产生 Jacoco 报告,用于所有测试的组合代码覆盖率 当前项目的子项目。

    【讨论】:

    • 谢谢,可能是救援!我应该在所有项目、子项目还是只在根项目中使用它?我已经尝试将它添加到根项目或子项目中。在第一种情况下,它不会生成任何覆盖数据,在第二种情况下,它会做同样的事情。我按如下方式运行它:gradle clean build jacocoFullReport --info。我还尝试将声纳插件添加到根和子项目 - 运气不好
    • 在根项目中应用完整的报告插件,在子项目中应用常规的jacoco插件
    • 我已将 jacocoTestReport 任务配置移至根项目并将其重命名为 jacocoFullReport,并使用 gradle clean build jacocoFullReport --info 运行它 - 它再次为每个模块生成报告:c
    猜你喜欢
    • 2020-09-12
    • 2017-09-07
    • 1970-01-01
    • 2021-03-25
    • 2015-12-25
    • 2013-03-21
    • 2015-09-28
    • 2017-05-09
    • 2018-11-21
    相关资源
    最近更新 更多