【问题标题】:Can I execute SonarQube from Gradle custom task?我可以从 Gradle 自定义任务中执行 SonarQube 吗?
【发布时间】:2020-09-06 12:06:49
【问题描述】:

我可以从 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”,我想要的是自动执行 sonarqube。

【问题讨论】:

    标签: gradle sonarqube


    【解决方案1】:

    我不确定你想要达到什么目标。对我来说,您似乎只想执行 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)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-07
      • 1970-01-01
      • 1970-01-01
      • 2016-11-10
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      相关资源
      最近更新 更多