将Go源和coverage导入SonarQube

时间:2015-06-02 20:40:58

标签: go sonarqube cobertura sonar-runner

我想使用SonarRunner将Go项目导入SonarQube 5.1。

我知道这不是SonarQube支持的语言之一,所以我设置了属性

sonar.import_unknown_files=true

完成一些基本的导入 - 它完成了这项工作。该项目还具有Cobertura格式的代码覆盖率,使用https://github.com/axw/gocov/https://github.com/AlekSi/gocov-xml生成。

我没有成功通过设置导入此XML:

sonar.core.codeCoveragePlugin=cobertura
sonar.cobertura.reportPath=coverage.xml

因此,项目在Sonar仪表板上显示为灰色框。有没有人做过类似的事情并让它发挥作用?是因为Go是一种不受支持的语言吗?

非常感谢!

安迪

2 个答案:

答案 0 :(得分:0)

是的,据我所知,SonarQube Cobertura插件只允许导入Java的覆盖率报告(可能还支持基于JVM的语言)。

但是,如果您愿意对覆盖率结果文件进行一些转换,Generic Test Coverage插件可能符合您的需求。

答案 1 :(得分:0)

SonarQube 7.9(2019年7月)以来,正式支持go语言。
其中包括code coverage for Gocommunity edition支持它!

40 rules for Go were present since SonarQube 6.7

但是,遗留的SonarSource/sonar-go(用于SonarQube的Go分析器,现在是SonarQube LTS)与SonarSource/slang(SonarSource语言)相提并论了,SonarSource语言是一个框架,可以快速为SonarQube开发代码分析器。
参见MMF-1670(迁移到SLANG)

  

SonarGo依靠早期在统一语言的构想阶段开发的UAST技术来编写语言解析器,后来导致了SLANG的创建。

     

为了统一我们使用的技术,降低维护成本并从更多功能中受益,我们需要将当前的SonarGO实现迁移到仅依赖SLANG框架的GO插件。< / p>

请参见its Go code coverage SLang issues,尤其是:SONARSLANG-399

sonarqube {
  properties {
    property 'sonar.sources', '.'
    property 'sonar.exclusions', '**/*_test.go,**/generate_source.go,**/*_generated.go,**/build/**,**/.gogradle/**'
    property 'sonar.tests', '.'
    property 'sonar.test.inclusions', '**/*_test.go'
    property 'sonar.test.exclusions', '**/build/**,**/.gogradle/**'
    property 'sonar.go.tests.reportPaths', "${project.projectDir}/.gogradle/reports/test-report.out"
    property 'sonar.go.coverage.reportPaths', "${project.projectDir}/.gogradle/reports/coverage/profiles/github.com%2FSonarSource%2Fsonar-go%2Fuast-generator-go.out"
  }
}

SONARSLANG-408(“ [Go]导入Go Cover报告”)仍在进行中。
(但是在撰写本文时,它只有4小时大)