[英]How to create a gradle task to run sonar locally
我已經為我的項目配置了聲納,它工作正常,但我想在 Gradle 文件中創建一個自定義任務來生成報告並直接在本地運行聲納。
為此,我嘗試創建此自定義任務:
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
時,我在本地沒有得到任何新信息。
我不知道這是否不是向聲納任務添加新屬性的方法,或者我是否需要在添加這些新屬性后運行聲納任務。
我找到了解決方案,它將是這樣的:
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
一樣運行你的任務,它將在lint
、 jacocoTestReport
和sonar
之后運行,添加一些屬性以便能夠將數據發送到本地聲納服務器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.