jenkins 向sonarqube gradle config添加源代码和测试集的正确语法是什么?

oyt4ldly  于 2023-04-20  发布在  Jenkins
关注(0)|答案(2)|浏览(142)

我有一个jhipster项目,在项目中定义了一个sonarqube任务。我们在/src/main/ui/src/...目录下构建了一个react UI,并在/src/main/ui/src/test/...目录下进行了测试。我们的sonarqube属性如下:

sonarqube {
    properties {
        property "sonar.host.url", "https://our_sonar_server"
        property "sonar.projectKey", "MyProjectGroup:MyProject"
        property "sonar.projectName", "MyProject"
        property "sonar.login", sonarLogin
        property "sonar.password", sonarPassword

        property "sonar.links.scm", "https://mygithub/myProject.git"
        property "sonar.links.scm_dev", "https://mygithub/MyProject.git"
        property "sonar.links.ci", ciLink

        if (pullRequest != null) {
            property "sonar.analysis.mode", "preview"
            property "sonar.github.pullRequest", pullRequest
            property "sonar.github.repository", "MyProjectGroup/MyProject"
            property "sonar.github.oauth", "my_oauth_hash"
            property "sonar.github.endpoint", "https://mygithubapi/v3"
        }
    }
}

我目前,声纳只拿起java是在标准/src/main/java.我已经尝试添加属性“sonar.sources”,“src/main/ui/src/*.js”属性“sonar.test”,“src/main/ui/src/test/**”以及一些变化.然而,jenkin build通过调用“./gradlew sonar-Pprod-x test”的shell步骤来调用它,但会失败,并出现类似“invalid value”或类似的错误。我找不到正确语法的例子。
编辑:我可以通过使用属性“sonar.sources”,“src/main/ui/src”属性“sonar.test”,“src/main/ui/src/test”来让声纳构建通过PR
然而,当在sonar服务器上检查项目时,我仍然没有看到任何被引用的javascript文件。

kcrjzv8t

kcrjzv8t1#

在合并我最后一次编辑后,js文件显示在sonarqube中。js测试也显示出来了,尽管它们没有显示任何覆盖率。只是单元测试的数量和通过率。可能需要更多的配置,但这不是最初问题的一部分。
在与我的经理交谈后,我们决定将源代码集缩小到两个子目录,“src/main/ui/src/app”和“src/main/ui/src/layouts”,这样测试就不会显示在源代码集下。文档建议您可以添加逗号分隔的列表,因此我创建了一个外部属性并在实际属性中引用了这些属性:

ext.jsAppSrc = "src/main/ui/src/app, src/main/ui/src/layout"
ext.jsLayoutSrc = "src/main/ui/src/layout"
ext.jsTest = "src/main/ui/test"
...
property "sonar.sources", jsAppSrc, jsLayoutSrc
property "sonar.test", jsTest

props评估正确,但sonar任务失败,错误为Could not find method property()for arguments [sonar.sources,src/main/ui/src/app,src/main/ui/src/layout on org. sonarqube. gradle. SonarQubeProperties.
然后,我进行了重构,将逗号分隔的列表放在一个属性中,然后成功完成了重构。

ext.jsAppSrc = "src/main/ui/src/app, src/main/ui/src/layout"
ext.jsTest = "src/main/ui/test"
...
property "sonar.sources", jsAppSrc
property "sonar.test", jsTest
fruv7luv

fruv7luv2#

您可以尝试定义自定义源集:https://docs.sonarqube.org/latest/analyzing-source-code/scanners/sonarscanner-for-gradle/#custom-source-sets

// build.gradle
sonar {
    properties {
        properties["sonar.sources"] += sourceSets.custom.allSource.srcDirs
        properties["sonar.tests"] += sourceSets.integTest.allSource.srcDirs
    }
}

相关问题