首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gradle / Jacoco / SonarQube问题

Gradle / Jacoco / SonarQube问题
EN

Stack Overflow用户
提问于 2016-05-11 03:31:35
回答 1查看 675关注 0票数 0

一旦系统允许,我会悬赏一大笔钱。

我特别遇到的问题是覆盖范围和集成测试的工作。对于这些错误,我看到的是没有提供信息的错误:

代码语言:javascript
复制
Resource not found: com.something.somethingelse.SomeITCase

没有信息,因为它没有任何关联,也没有太多意义的人谁没有任何上下文。

这是我看到的另一个奇怪的地方。在没有对子项目进行集成测试的情况下,我看到了以下内容:

代码语言:javascript
复制
JaCoCoItSensor: JaCoCo IT report not found: /dev/build/dilithium/target/jacoco-it.exec

我为什么要见target?这不是一个Maven项目。全局搜索显示,代码库中的任何地方都没有提到target目录。

然后是the documentation的这一部分

代码语言:javascript
复制
sonarqube {
    properties {
        properties["sonar.sources"] += sourceSets.custom.allSource.srcDirs
        properties["sonar.tests"] += sourceSets.integTest.allSource.srcDirs
    }
}

据我所知,sourceSets.integTest.allSource.srcDirs返回的是文件,而不是字符串。此外,它还应该是:

代码语言:javascript
复制
sonarqube {
    properties {
        property "sonar.tests", "comma,separated,file,paths"
    }

注意,如果你有一个不存在的目录,你会得到一个错误。Gradle的标准是简单地忽略不存在的目录。您的代码最终如下所示:

代码语言:javascript
复制
sonarqube {
    StringBuilder builder = new StringBuilder()
    sourceSets.integrationTest.allSource.srcDirs.each { File dir ->

        if ( dir.exists() ) {
            builder.append(dir.getAbsolutePath())
            builder.append(",")
        }
    }
    if (builder.size() > 1) builder.deleteCharAt(builder.size() -1 )

    if (builder.size() > 1 )
        properties["sonar.tests"] += builder.toString()

    properties["sonar.jacoco.reportPath"] +=
            "$project.buildDir/jacoco/test.exec,$project.buildDir/jacoco/integrationTest.exec"

}

声纳报告完全没有覆盖范围。如果我搜索*.exec文件,我会看到我所期望的。那就是:

代码语言:javascript
复制
./build/jacoco/test.exec
./build/jacoco/integrationTest.exec

...but奇怪的是,我也看到了这一点:

代码语言:javascript
复制
./build/sonar/com.proj_name_component_management-component_proj-recordstate/jacoco-overall.exec

那是什么?为什么它会在这样一个非标准的位置?

好的,我添加了以下代码:

代码语言:javascript
复制
properties {
    println "Before: " + properties.get("sonar.tests")
    println "Before: " + properties.get("sonar.jacoco.reportPath")

    property "sonar.tests", builder.toString()
    property "sonar.jacoco.reportPath", "$project.buildDir/jacoco/test.exec,$project.buildDir/jacoco/integrationTest.exec"

    println "After: " + properties.get("sonar.tests")
    println "After: " + properties.get("sonar.jacoco.reportPath")
}

...which结果为:仍在运行

EN

回答 1

Stack Overflow用户

发布于 2016-05-11 03:55:26

我不想要任何赏金或积分。这只是个建议。你能得到一些Jacoco的报告吗?

就我个人而言,我会将2:即Jacoco报告生成和Sonar分开。我首先会尝试简单地生成Jacoco,然后我会看看为什么Sonar不能得到它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37147380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档