sonarqube golang,sonarqube代码检测
sonar集成golang的检测工具 sonar中的插件SonarGo自带一些检测规则,但sonar想要集成golang的覆盖率、单元测试报告、和更多的代码规则,需要集成其他golang的检测工具 单元测试 通过golang的单元测试工具go test生成单元测试报告(见https://blog.csdn.net/baidu_36943075/article/details/90634404)报告使用终端转化的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的覆盖率统计工具生成覆盖率统计报告(见https://blog.csdn.net/baidu_36943075/article/details/90634404)报告需要直接使用终端报告,不可以使用转化的xml、html、txt报告(亲测sonar无法读取相应的报告,提示没有“mode:”字段) go test -coverprofile=covprofile sonar的项目配置文件sonar-project.properties中添加如下配置: sonar.go.coverage.reportPaths=xx/xx/xx 静态扫描 通过golang的扫描工具go vet生成报告(见https://blog.csdn.net/baidu_36943075/article/details/90634404)报告需要直接使用终端报告 go vet -n xxx 2> report.out sonar的项目配置文件sonar-project.properties中添加如下配置: sonar.go.govet.reportPaths=xx/xx/xx 外部规则 golint 通过golint生成覆盖率统计报告(见https://blog.csdn.net/baidu_36943075/article/details/90634404)报告必须直接使用终端报告 golint xx/xx > golint sonar的项目配置文件sonar-project.properties中添加如下配置: sonar.go.golint.reportPaths=xx/xx/xx gometalinter 通过gometalinter生成覆盖率统计报告(见https://blog.csdn.net/baidu_36943075/article/details/90634404)报告必须使用终端报告,不可以使用转化的xml报告(亲测可以读取报告但是sonar项目中并无展示任何相关数据) gometalinter xx/xx > gometalinter sonar的项目配置文件sonar-project.properties中添加如下配置: sonar.go.gometalinter.reportPaths=xx/xx/xx 其实这些配置也可以直接在sonar管理端配置,但是为了实现’sonarqube做成服务器,使用各机器安装sonar-scanner扩展使用‘所以强烈推荐这个配置写在配置文件中 配置样例展示 sonar.projectKey=gpcoresonar.projectName=gpcoresonar.sources=gpcoresonar.exclusions=**/*_test.go,**/vendor/**sonar.tests=sonar.test.inclusions=**/**_test.gosonar.test.exclusions=**/vendor/**sonar.go.coverage.reportPaths=report/coverage.outsonar.go.tests.reportPaths=report/test.jsonsonar.go.govet.reportPaths=report/govet-report.outsonar.go.gometalinter.reportPaths=report/gometalinter-report.outsonar.go.golint.reportPaths=report/golint-report.out