元々上記でなんでSonarqubeのVerUp対応をしたかというと、golang対応が6.4では対応していないからである。
https://docs.sonarqube.org/latest/analysis/languages/go/
というわけで対応。sonar-scannerは元々対応済み前提。
sonar.properties
##################################################################
# 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
test時にこんな感じで出力すればOK
仮に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."
}
}
}
}