You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建Gradle任务本地运行Sonar无效果,求排查解决方法

问题解决思路

你的自定义任务sonarLocalReport没生成内容的核心原因有两个:

  1. 任务仅设置了Sonar属性,但没有触发Sonar的分析任务,相当于只做了配置,没执行实际的扫描分析。
  2. 属性设置的方式不正确,直接修改extraProperties不是Sonar Gradle插件推荐的配置方式。

修正方案

1. 依赖Sonar核心分析任务

Sonar Gradle插件的核心分析任务在新版本中是sonarQube,旧版本可能是sonar。需要把这个任务加入自定义任务的依赖列表,执行sonarLocalReport时会自动触发扫描。

2. 正确配置本地Sonar属性

使用Sonar扩展的properties方法配置属性,并且放在doFirst中(确保在Sonar任务执行前完成配置)。

修正后的自定义任务代码:

task sonarLocalReport(dependsOn: ['jacocoTestReport', 'lint', 'sonarQube']) {
    group = "Reporting"
    description = "Generate Sonar reports for local check"

    doFirst {
        sonar {
            properties {
                // 覆盖本地Sonar服务的地址和登录密钥
                property "sonar.host.url", "http://localhost:9000"
                property "sonar.login", "KEY"
                // 如需临时覆盖其他全局属性,可在此添加
            }
        }
    }
}

额外检查点

  • 若使用旧版Sonar Gradle插件(<3.0),核心任务是sonar而非sonarQube,需对应修改依赖项。
  • 验证jacocoTestReport和lint任务是否生成了对应路径的报告文件:
    • Jacoco报告:${project.buildDir}/reports/jacoco/jacocoTestReport/jacocoTestReport.xml
    • Lint报告:${project.buildDir}/reports/lint-results-debug.xml
  • 全局sonar扩展中的属性可保留,自定义任务仅覆盖本地需要修改的项即可,无需重复配置相同属性。

内容的提问来源于stack exchange,提问作者Sergio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 23:50:32