我想使用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是一种不受支持的语言吗?
非常感谢!
安迪
答案 0 :(得分:0)
是的,据我所知,SonarQube Cobertura插件只允许导入Java的覆盖率报告(可能还支持基于JVM的语言)。
但是,如果您愿意对覆盖率结果文件进行一些转换,Generic Test Coverage插件可能符合您的需求。
答案 1 :(得分:0)
自SonarQube 7.9(2019年7月)以来,正式支持go语言。
其中包括code coverage for Go。
community 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小时大)