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."
                    }
                }
        }
        }
bannerAds