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

Golang项目SonarQube代码覆盖率显示0%,如何解决?

解决Golang项目SonarQube代码覆盖率显示0%的问题

核心排查与修复步骤

1. 修正测试文件排除规则(关键问题)

你的sonar.test.exclusions配置中包含了**/*_test.go,这会让SonarQube完全忽略所有Go测试文件,导致它无法将覆盖率报告中的数据与业务代码关联,直接显示0%覆盖率。

  • 修复:从sonar.test.exclusions中移除**/*_test.go,仅保留真正需要排除的非测试文件路径。修正后的配置示例:
    sonar.projectKey= * Project key *
    sonar.projectName=* Name Project *
    
    sonar.sources=.
    sonar.test.exclusions=**/proto/**, **/*mock.js, **/*.php, **/config/**, **/model/**, **/container/**, **/util/**, **/mocks/**, **/module/**
    sonar.go.coverage.reportPaths=coverage.out
    

2. 确保覆盖率报告正确生成

  • 执行Go测试命令生成标准覆盖率报告:
    go test ./... -coverprofile=coverage.out
    
  • 检查项目根目录是否存在coverage.out文件,若生成在其他路径,需同步修改sonar.go.coverage.reportPaths的路径值(比如./build/coverage.out)。

3. 验证覆盖率报告的有效性

本地执行以下命令查看报告内容,确认是否有实际覆盖率数据:

go tool cover -func=coverage.out

如果输出中所有文件的覆盖率均为0,说明你的测试用例没有覆盖业务代码,需要补充测试逻辑。

4. 确认扫描顺序正确

必须先执行生成覆盖率报告的go test命令,再运行SonarQube扫描命令(如sonar-scanner),否则扫描时coverage.out尚未生成,会导致覆盖率显示0%。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 05:24:57