我可以从Gradle自定义任务执行SonarQube吗?

时间:2020-05-20 07:49:07

标签: gradle sonarqube

我可以从Gradle自定义任务中执行SonarQube吗? 我想将projectKey&Name动态设置为波纹管:

sonarqube {
    properties {
        property "sonar.host.url", "http://example.com:10009"
        property "sonar.login", "ffabcdfa0e21dcdf039d4dd5d1d999997d930b270a"
        property "sonar.sourceEncoding", "UTF-8"

        // set dynamically
        property "sonar.projectKey",  "$project.ext.sonarqube_projectkey"
                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        property "sonar.projectName", "$project.ext.sonarqube_projectname"
                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

        property "sonar.projectVersion", android.defaultConfig.versionName
        property "sonar.projectBaseDir", "${rootDir}/../"
    }
}

task run_sonarqube_A {
    doFirst {
        project.ext.sonarqube_projectkey = "key_foo_A"
                                           ^^^^^^^^^^^
        project.ext.sonarqube_projectname= "name_foo_A"
                                           ^^^^^^^^^^^
    }

    doLast {
        // how to execute sonarqube?
    }
}

task run_sonarqube_B {
    doFirst {
        project.ext.sonarqube_projectkey = "key_foo_B"
                                           ^^^^^^^^^^^
        project.ext.sonarqube_projectname= "name_foo_B"
                                           ^^^^^^^^^^^
    }

    doLast {
        // how to execute sonarqube?
    }
}

我尝试如下:

sonarqube.shouldRunAfter run_sonarqube_A

失败如下:

FAILURE: Build failed with an exception.

* Where:
Build file 'D:\project\99_system\foo\build.gradle' line: 212

* What went wrong:
A problem occurred evaluating project ':foo'.
> Could not find method shouldRunAfter() for arguments [task ':foo:run_sonarqube_A'] on object of type org.sonarqube.gradle.SonarQubeExtension.

是否可以通过自定义任务执行SonarQube?

如果我只运行“ gradlew run_sonarqube_A”,我想要的是自动执行声纳法。

1 个答案:

答案 0 :(得分:0)

我不确定您想要实现什么。对我来说,您似乎只想执行SonarQube分析。通过使用SonarQube Gradle Plugin是可能的。 SonarScanner for Gradle上对此进行了说明。

您应该添加:

plugins {
    id 'org.sonarqube' version '2.8'
}

删除所有sonar属性和run_sonarqube任务,然后执行:

gradle sonarqube -Dsonar.host.url=http://example.com:10009 -Dsonar.login=ffabcdfa0e21dcdf039d4dd5d1d999997d930b270a

这些属性:

  • sonar.sourceEncoding
  • sonar.projectKey
  • sonar.projectName
  • sonar.projectVersion
  • sonar.projectBaseDir

是基于Gradle元数据归档的。例如,sonar.projectKey等于group,项目name

build.gradle

group = 'org.example'

settings.gradle

rootProject.name = 'project'

然后

sonar.projectKey=org.example:project

动态设置groupname没问题,因为它们是在Groovy脚本(build.gradlesettings.gradle)中定义的。