android 如何创建Gradle任务以在本地运行声纳

eagi6jfj  于 2023-01-19  发布在  Android
关注(0)|答案(1)|浏览(111)

我已经为我的项目配置了Sonar,它运行良好,但我想在Gradle文件中创建一个自定义任务,以生成报告并直接在本地运行Sonar。
为此,我尝试创建此自定义任务:

task sonarLocalReport(dependsOn: ['jacocoTestReport', 'lint']) {
    group = "Reporting"
    description = "Generate Sonar reports for local check"
    doLast {
        project.extensions.getByName("sonar").ext.extraProperties = [
                "sonar.host.url": "http://localhost:9000",
                "sonar.login": "KEY"
        ]
    }}

我试着在声纳任务中添加额外的属性:

sonar {
    properties {
        property "sonar.projectKey", "App-Android"
        property "sonar.sourceEncoding", "UTF-8"
        property "sonar.projectName", "android"
        property "sonar.java.coveragePlugin", "jacoco"
        property "sonar.sources", "${project.projectDir}/src/main/java"
        property "sonar.tests", "${project.projectDir}/src/test/java"
        property "sonar.junit.reportPaths", "${project.buildDir}/test-results/testDebugUnitTest"
        property "sonar.coverage.jacoco.xmlReportPaths", "${project.buildDir}/reports/jacoco/jacocoTestReport/jacocoTestReport.xml"
        property "sonar.android.lint.reportPaths", "${project.buildDir}/reports/lint-results-debug.xml"
    }
}

当我运行我的自定义任务sonarLocalReport时,我在本地没有得到任何新的东西。
我不知道这是否不是向声纳任务添加新属性的方式,或者添加这些新属性后我是否需要运行声纳任务。

fiei3ece

fiei3ece1#

我找到了解决方案,它将是这样的:

sonar {
    properties {
        property "sonar.projectKey", "App-Android"
        property "sonar.sourceEncoding", "UTF-8"
        property "sonar.projectName", "android"
        ...
}

task sonarLocal(type: GradleBuild) {
    tasks = ['lint', 'jacocoTestReport']
    sonarLocal.finalizedBy('sonar')
    sonar {
        properties {
            property "sonar.host.url", "http://localhost:9000"
            property "sonar.login", "YOUR_KEY_GENERATED"
        }
    }
}

然后,您可以运行类似./gradlew app:sonarLocal的任务,它将在lintjacocoTestReportsonar之后运行,添加一些属性以便能够将数据发送到您的本地声纳服务器。

相关问题