如何使用Jenkins运行SonarQube for Go代码

问题描述

我需要使用Jenkins运行SonarQube for Go代码。不幸的是,有关此任务的信息很少。

我发现应该创建“ sonar-project.properties”文件,例如:

  sonar.projectKey=com.company.projectkey1
  sonar.projectName=My Project Name

  sonar.sources=.
  sonar.exclusions=**/*_test.go,**/vendor/**

  sonar.tests=.
  sonar.test.inclusions=**/*_test.go
  sonar.test.exclusions=**/vendor/**

但是如何正确配置Jenkins管道?我找到了以下示例,但是我不确定这是否是我所需要的

node {
  stage('SCM') {
    git '<my_path>.git'
  }
  stage('SonarQube analysis') {
    def scannerHome = tool 'SonarScanner 4.0';
    withSonarQubeEnv('My SonarQube Server') { 
      sh "${scannerHome}/bin/sonar-scanner"
    }
  }
}

解决方法

是的,这是正确的。

在Jenkins管道中,您只需要运行sonnar-scanner-与其他语言没什么不同(请参阅https://docs.sonarqube.org/latest/analysis/scan/sonarscanner-for-jenkins/)。 SonarQube附带了Go语言插件,因此无需安装任何软件。然后,扫描程序将从您项目根目录中的sonar-project.properties提取项目配置并执行分析。

您的sonar-project.properties文件似乎是SonarQube for Go页面的复制示例-您可能要根据项目布局进行一些调整(例如添加sonar.inclusions=**/.*go)。 SonarQube应该会自动检测Go中的文件,但您也可以在该文件中添加sonar.language=go来强制执行此操作。

您没有提到是在本地还是以集群模式运行SonarQube-但应该没有什么区别(如果添加集群,可能添加服务器URL并登录到sonar-project.properties)。

请注意,go必须安装在扫描仪计算机上。