sonarQube Github pull request扫描代码

参考官方地址:https://docs.sonarqube.org/display/PLUG/GitHub+Plugin

运行环境:sonarQube6.2 + sonarScanner2.8

近来,使用sonarQube的次数比较少,项目中主要是使用Visual Studio Team Service + sonarQube的方式对代码进行扫描(每一次Pull Request经过Merge之后会自动触发Build从而每次扫描最新的代码),代码都是存在于Github中,查看资料时发现当开发员将新代码提交一个Pull Request可以对代码进行扫描(是否可以是自动??

我现时测试的功能是使用创建Pull Request后,已经知道了Pull Request ID后再进行手动的扫描,并将扫描的结果放入至Github的Pull Request中的留言框中。

开始前需要满足两个条件

  1. 已经安装sonarQube服务器(这个是肯定的啦,没有sonarQube将无从谈起)
  2. 正常运行的sonarQube服务器已经安装Github插件

接下来就是我们需要设置的步骤了

一、在Github网站中生成token

打开Github网站,登陆并打开个人设置,点击Personal access tokens,然后在右边点击Generate new token

输入token的描述,权限方面只需要选择public_repo,保存当前设置,并将生成的token值保存好,运行sonarScanner需要token作为参数运行。

 

二、在sonarQube网站中生成token

打开sonarQube网站并登陆,这里我使用admin进行登陆

在主页点击Administrator

在跳转的页面中,选择Security>>>Users

点击Tokens,这里,我已经创建了一个Token所以会提醒修改Token

在弹出框中输入Token Name也相当于一个描述,并将生成的token值保存好,运行sonarScanner需要token作为参数运行。

三、在Github中提交新的Pull Request

如使用Github的都明白,就是将两个代码版本进行合并

 

四、运行sonarScanner命令

按官网上的说法运行sonarScanner命令需要的参数如下,并给出了一个示例,在试了很多次以后还是发现不能正常扫描代码

运行命令,我这里将Github Token和sonarQube Token都使用X代替,至于参数-X是因为我想在运行时得到更多的调试信息,要在运行时,还是需要指定参数projectKey和sources

sonar-scanner  -X -Dsonar.analysis.mode=preview -Dsonar.github.pullRequest=4 -Dsonar.github.repository=Somebody/SampleProject -Dsonar.github.oauth=XXXXXXXXXXXXXXXX -Dsonar.host.url=http://localhost:9000/ -Dsonar.login=XXXXXXXXXXXXXXXX

加入两个参数后变成以下的样式,运行完成后,会发现在Github的Pull Request中会增加很多的Comment信息,关于信息,还需要再查看是否正确

sonar-scanner  -X -Dsonar.analysis.mode=preview -Dsonar.github.pullRequest=4 -Dsonar.github.repository=Somebody/SampleProject -Dsonar.github.oauth=XXXXXXXXXXXXXXXX -Dsonar.host.url=http://localhost:9000/ -Dsonar.login=XXXXXXXXXXXXXXXX -Dsonar.sources="." -Dsonar.projectKey="sampleProject"

 在这里,我尝试的结果是,在Github Pull Request 中会增加Comment,但是扫描中途会遇到错误,然后就会出现Pull Request中说还未分析完成的情况,这是一个问题,需要解决。

 

 

最后公开一下我个人写的一个小工具,github pull request扫描的功能也在其中,请参考代码https://github.com/ChenWes/sonarQubeScanner/tree/development

posted @ 2017-01-19 15:01  WesChan  阅读(5055)  评论(1编辑  收藏  举报