将coverage.ec文件上传到声纳Android

Posted

技术标签:

【中文标题】将coverage.ec文件上传到声纳Android【英文标题】:Uploading coverage.ec file to sonar Android 【发布时间】:2017-11-18 14:04:00 【问题描述】:

我有一个 coverage.ec 文件,它会生成并显示我的 espresso UI 测试的代码覆盖率。我也在 gradle 中配置了声纳,如下所示:

sonarqube 
properties 
    property "sonar.projectName", "android 9"
    property "sonar.projectKey", "org.sonarqube:Android9"

    property "sonar.host.url", "http://localhost:9000"
    property "sonar.username", "admin"
    property "sonar.password", "password"

    property "sonar.projectVersion", "5"

    property "sonar.java.source", "7"

    property "sonar.android.lint.report", "build/outputs/lint-results.xml"

    property "sonar.sourceEncoding","UTF-8"
    property "sonar.sources","src/main/java"
    property "sonar.exclusions","build/**,**/*.png"
    property "sonar.test.exclusions", ""
    property "sonar.binaries", "build/classes"
    property "sonar.jacoco.reportPath","build/jacoco/testDevDebugUnitTest.exec"
    property "sonar.tests", "src/androidTest/java"
    //property "sonar.import_unknown_files", true

    //property "sonar.android.lint.report", "./build/outputs/lint-results.xml"

    property "sonar.jacoco.itReportPath", "build/outputs/code-coverage/connected/flavors/NORMAL/*.ec"

问题?声纳中根本没有显示代码覆盖率 - 什么都没有,0% 这真的很奇怪,而且在过去一周我在网上搜索时,我没有在网上找到任何东西。有人知道发生了什么吗?

【问题讨论】:

您在服务器上使用什么版本的声纳?根据docs.sonarqube.org/display/PLUG/…,sonar.jacoco.itReportPath 已过时 【参考方案1】:

您必须指定测试结果才能让声纳处理您的覆盖范围。 另请注意,sonar.jacoco.itReportPath 已过时。现在所有的覆盖文件都用sonar.jacoco.reportPaths属性指定。

您也不必手动指定源目录。请参阅androidTest 属性。

这是一个项目的配置,该项目同时具有测试(如 Robolectric)和 android 测试(如 Espresso)。

afterEvaluate 
    def flavor = "DEV"
    def variant = "devDebug"
    def testTaskName = "test$variant.capitalize()UnitTest"

    // output both android and host test results to single directory
    def junitReportsPath = "build/outputs/androidTest-results/connected/flavors/$flavor/"
    project.tasks[testTaskName].reports.junitXml.destination = junitReportsPath

    sonarqube 
        // you don't have to specify these manually as android sonar plugin handles it
        // as soon as you specify androidVariant
        // property "sonar.sources","src/main/java"
        // property "sonar.tests", "src/androidTest/java"
        androidVariant variant
        properties 
            property "sonar.jacoco.reportPaths",
                    ["build/jacoco/$testTaskName.exec",
                     "build/outputs/code-coverage/connected/flavors/$flavor/*.ec"]

            property "sonar.junit.reportsPath", junitReportsPath

            // other settings
            // ...
        
    

【讨论】:

【参考方案2】:

我想通了。我没有将 *.ec 用于我的 reportPath,而是将其更改为“coverage.ec”。然后它出现了。谢谢大家的帮助!

【讨论】:

以上是关于将coverage.ec文件上传到声纳Android的主要内容,如果未能解决你的问题,请参考以下文章

将 Jacoco 代码覆盖率发布到声纳的命令

我们可以将sonarqube分析重新/重新上载到服务器吗?

使用 .net 核心声纳扫描仪将声纳结果发布到 tfs 构建

使用 Ant 将 JaCoCo 集成到声纳中

将 project.properties 文件传递​​给声纳扫描仪

声纳失败,无法索引两次。请检查包含/排除模式是否为主文件和测试文件生成不相交的集合