发现Sonarcloud对于github的开源项目是免费使用的,但是配置过程中遇到了很多问题,百度还是Google相关的搜索都不多,特此记录一下整个流程.

0.准备

  1. 本文基于使用Maven项目的情况下.
  2. 你需要注册一个Github和Sonarcloud的账号并且相互绑定.

1.生成一个Sonarcloud的访问Token

sonar与gitlab相连 github sonar_maven


记住你的Token

2.选择分析的项目

sonar与gitlab相连 github sonar_github_02

3.选择分析方式

sonar与gitlab相连 github sonar_maven_03


选择为Github工作流

4.设置SONAR_TOKEN

sonar与gitlab相连 github sonar_github_04


按照提示设置,这里可以设置使用第一步里我们生成的token当然你也可以使用这里的token

5.在你的项目里的引入Sonar的plugin

sonar与gitlab相连 github sonar_sonar与gitlab相连_05

6. 按照指示创建Github工作流

sonar与gitlab相连 github sonar_java_06


sonar与gitlab相连 github sonar_github_07


我这里只是命名不一样

注意:这里Sonarcloud官方提供的脚本中执行工作流的分支是Master

但是git在很早的时候就已经吧默认的分支命名切换成main了,

所以这里如果你想执行分析的分支是main记得要修改一下

注意:Sonar必须在Jdk11的版本下使用

所以步骤里的提升JDK版本到11的操作不能忽略或修改

7.配置Sonar

传统的Sonar配置是在根目录下创建一个sonar的properties作为配置

但使用Sonar for maven的时候配置会使用pom.xml中的配置

sonar与gitlab相连 github sonar_maven_08


这里的参数

organization和url可以在第六步的第一个截图中找到

projectkey可以在第六步第一个截图的yml中最后面找到

sonar与gitlab相连 github sonar_java_09


login是你的token,第一步中生成的或者 是第四步中自动生成的

注意:这里如果不配置branch.name的话会报一个错误找不到默认的分支

我一开始以为是git默认分支名称从master换到main导致的

切换了几次发现没有效果,一直卡在这里

中间搜了很多

有一个Sonar的master回复说会读取Github默认的主分支

但实际上我发现没有这么做

后来查阅了Sonar的官方文档找到了这个配置就可以了

最后

只需要提交你的代码到工作流指定的分支上就可以触发扫描分析了