Go for SonarQube
Go for SonarCloud with Github Actions
步骤——
- go build生成可执行程序
- 执行
go test -coverprofile=bin/cov.out service-sonar
生成覆盖率文件 - 执行
sonar-scanner
关键时如何生成覆盖率文件,将这个文件传递给sonar-scanner即可。
.PHONY: default
default: build
all: clean get-deps build test
version := "0.1.0"
build:
mkdir -p bin
go build -o bin/service-sonar main.go
test: build
go test -short -coverprofile=bin/cov.out `go list ./... | grep -v vendor/`
go tool cover -func=bin/cov.out
clean:
rm -rf ./bin
sonar: test
sonar-scanner -Dsonar.projectVersion="$(version)"
start-sonar:
docker run --name sonarqube -p 9000:9000 sonarqube
实践版本——
使用go help command
可以查看对应command的用法,或直接执行command,不传递参数,也会显示对应的用法。例如:go help test
、go tool cover
sonar-scanner默认会在当前目录下查找sonar-project.properties
文件检查对应的参数值。关键的参数为sonar.go.coverage.reportPaths
sonar.sources=.
sonar.exclusions=**/*_test.go,**/vendor/**,**/testdata/*
sonar.tests=.
sonar.test.inclusions=**/*_test.go
sonar.test.exclusions=**/vendor/**
sonar.go.coverage.reportPaths=./bin/cov.out
这些值都可以使用-Dsonar.go.coverage.reportPaths=./bin/cov.out
的方式传递。
本地有Basic SonarQube SonarScanner搭建的server,完成扫描后,可以看到跟文章相同的覆盖率数据。
comments powered by Disqus