SonarQube集成golang检测(10)

匿名 (未验证) 提交于 2019-12-02 23:36:01

sonar集成golang的检测工具

sonar中的插件SonarGo自带一些检测规则,但sonar想要集成golang的覆盖率、单元测试报告、和更多的代码规则,需要集成其他golang的检测工具

单元测试

  • 通过golang的单元测试工具go test生成单元测试报告(见代码检测工具-golang测试工具)
  • 报告使用终端转化的json文件,不可以使用转化的xml报告、不转化终端报告(亲测可以读取报告但是sonar项目中并无展示任何相关数据,同时sonar配置中的go配置中也有说明)
go test -v xxx -json > test.json 
  • sonar的项目配置文件sonar-project.properties中添加如下配置:
sonar.go.tests.reportPaths=xx/xx/xx 
  • sonar导入golang的单元测试报告目前有1问题未解决,就是单元测试的报告中写入的package是项目名/包名(不含/go/src),运行sonar-scanner时总是报错提示找不到package和Test函数,经亲测发现无论怎么修改测试报告、sonar-scanner的运行目录都无法解决这个问题。

覆盖率

  • 通过golang的覆盖率统计工具生成覆盖率统计报告(见代码检测工具-golang测试工具)
  • 报告需要直接使用终端报告,不可以使用转化的xml、html、txt报告(亲测sonar无法读取相应的报告,提示没有“mode:”字段)
go test -coverprofile=covprofile 
  • sonar的项目配置文件sonar-project.properties中添加如下配置:
sonar.go.coverage.reportPaths=xx/xx/xx 

静态扫描

  • 通过golang的扫描工具go vet生成报告(见代码检测工具-golang测试工具)
  • 报告需要直接使用终端报告
go vet -n xxx 2> report.out 
  • sonar的项目配置文件sonar-project.properties中添加如下配置:
sonar.go.govet.reportPaths=xx/xx/xx 

外部规则

golint

  • 通过golint生成覆盖率统计报告(见代码检测工具-golang测试工具)
  • 报告必须直接使用终端报告
golint xx/xx > golint 
  • sonar的项目配置文件sonar-project.properties中添加如下配置:
sonar.go.golint.reportPaths=xx/xx/xx 

gometalinter

  • 通过gometalinter生成覆盖率统计报告(见代码检测工具-golang测试工具)
  • 报告必须使用终端报告,不可以使用转化的xml报告(亲测可以读取报告但是sonar项目中并无展示任何相关数据)
gometalinter xx/xx > gometalinter 
  • sonar的项目配置文件sonar-project.properties中添加如下配置:
sonar.go.gometalinter.reportPaths=xx/xx/xx 
  • 其实这些配置也可以直接在sonar管理端配置,但是为了实现’sonarqube做成服务器,使用各机器安装sonar-scanner扩展使用‘所以强烈推荐这个配置写在配置文件中

配置样例展示

sonar.projectKey=gpcore sonar.projectName=gpcore sonar.sources=gpcore sonar.exclusions=**/*_test.go,**/vendor/** sonar.tests= sonar.test.inclusions=**/**_test.go sonar.test.exclusions=**/vendor/** sonar.go.coverage.reportPaths=report/coverage.out sonar.go.tests.reportPaths=report/test.json sonar.go.govet.reportPaths=report/govet-report.out sonar.go.gometalinter.reportPaths=report/gometalinter-report.out sonar.go.golint.reportPaths=report/golint-report.out 
文章来源: https://blog.csdn.net/baidu_36943075/article/details/90634160
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!