Sonarqube对于Golang的支持
最初提到為什麼要進行Sonarqube的版本升級,是因為在6.4版本中不支援golang。請參考以下連結:https://docs.sonarqube.org/latest/analysis/languages/go/
因此我们采取措施,sonar-scanner原本就是做好了对应工作的前提。
##################################################################
# Properties file for sonar-scanner
# See https://docs.sonarqube.org/display/SONAR/Analysis+Parameters
##################################################################
# Server
sonar.host.url=https://sonarqube.foo.jp/
# Required metadata
#FIXME ここから
sonar.projectKey=golang
sonar.projectName=golang Project
sonar.projectVersion=0.0.1
sonar.sources=.
sonar.exclusions=**/*_test.go,**/vendor/**
sonar.tests=.
sonar.test.inclusions=**/*_test.go
sonar.test.exclusions=**/vendor/**
#FIXME ここまで
sonar.sourceEncoding=UTF-8
# sonar.language=py
sonar.go.coverage.reportPaths=reports/coverage.out
sonar.go.tests.reportPaths=reports/test.json
创建一个类似这样的properties文件
.PHONY: test
test:
go test ./... -coverprofile=reports/coverage.out -json > reports/test.json
只要在测试时以这种方式输出就可以。
假设使用Jenkins,只需添加类似以下的Stage即可。(注意,startsWith没有任何意义)
stage('Sonarqube Analysis') {
steps {
script {
// 現状はmasterへのmarge時のみ
if (env.BRANCH_NAME.startsWith('master')) {
scannerHome = tool 'scanner'
withSonarQubeEnv('sonar') {
sh "${scannerHome}/bin/sonar-scanner"
}
} else {
echo "Skip Sonarqube analysis."
}
}
}
}