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中的留言框中。
开始前需要满足两个条件
- 已经安装sonarQube服务器(这个是肯定的啦,没有sonarQube将无从谈起)
- 正常运行的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= -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
sonarQube Github pull request扫描代码的更多相关文章
- VS Code 中使用 GitHub pull request 插件提交代码
VS Code作为一个代码编辑器,受到很多人的喜爱:其中有很多非常有用的插件/扩展功能,也会极大的提高我们的工作效率. 这里介绍一下GitHub pull request,用来向GitHub提交在VS ...
- Github Pull Request的提出与采纳
这一文来简要介绍一下Github Pull Request(以下简称PR)的使用方法: 作为PR的提出者,如何对某个仓库提交PR,如何根据仓库管理者对所提交PR的反馈对PR进行完善 作为PR的接收者, ...
- github Pull Request合入全流程介绍
图解全流程 详细步骤 1. fork仓库 2. clone fork仓库到本地 3. 关联upstream原仓库 在fork本地仓库输入下面命令进行关联: git remote add upstrea ...
- gitHub pull Request记录
1.fork开源项目到自己的gitHub,点fork,然后clone即可 2.提交本地修改,push到自己的代码库 3.点new pull Request,写点备忘信息 注意确保修改的正确性,如果运行 ...
- github pull request
https://stackoverflow.com/questions/14680711/how-to-do-a-github-pull-request https://help.github.com ...
- 六、配置github的pull request触发jenkins自动构建
之前的配置,都是向master分支push操作触发jenkins进行构建,但是在一般的正常工作中,不会允许程序员直接向主分支推送代码:正常都是fork一个本地的分支,在本地分支调试完后,向主干分支提交 ...
- 配置github的pull request触发jenkins自动构建
参照: https://www.cnblogs.com/zanjiahaoge666/p/6402738.html 之前的配置,都是向master分支push操作触发jenkins进行构建,但是在一般 ...
- Gitlab - Pull Request
1.概述 今天查看Gmail,有网友私密我Gitlab的Pull Request工作流程,一直以为我写过这片博客,查看<Git和Gitlab协同工作>却发现遗漏了Pull Request这 ...
- github 修改fork的代码之后如何提交代码并pull request
官方的解释还是有点模糊,我是参照这篇文章来的. http://www.linuxidc.com/Linux/2012-12/76922.htm 关于Git的版本管理的原理,我是从这篇文章里面学习的. ...
随机推荐
- jQuery添加、移除、改变class属性
jQuery中一般有3个关于改变元素class的函数addClass.removeClass.toggleClass addClass描述: 为每个匹配的元素添加指定的样式类名$('div').add ...
- ES mapping的写入与查看
Elasticsearch索引mapping的写入.查看与修改 https://blog.csdn.net/napoay/article/details/52012249 首先创建一个索引: curl ...
- 【bzoj4813】[Cqoi2017]小Q的棋盘 树上dfs+贪心
题目描述 小Q正在设计一种棋类游戏.在小Q设计的游戏中,棋子可以放在棋盘上的格点中.某些格点之间有连线,棋子只能在有连线的格点之间移动.整个棋盘上共有V个格点,编号为0,1,2…,V-1,它们是连通的 ...
- vb常用函数一览表
常用内部函数 数学函数 函数 功能 示例 结果 说明 Abs(x) 绝对值 Abs(-50.3) 50.3 Exp(x) 自然指数 Exp(2) e^2 e(自然对数的底)的某次方 Fix(x) ...
- SRM710 div1 MagicNim(博弈论)
题目大意: 给出n+1堆石子,前n堆石子的数量是a[i],最后一堆只有1个石子,但是具有魔力 拿走该石子的一方可以选择接下来是进行普通的Nim游戏还是anti-nim游戏 问是先手必胜还是必败 首先拿 ...
- [bzoj1056] [HAOI2008]排名系统
Description 排名系统通常要应付三种请求:上传一条新的得分记录.查询某个玩家的当前排名以及返回某个区段内的排名记录.当某个玩家上传自己最新的得分记录时,他原有的得分记录会被删除.为了减轻服务 ...
- 02.Java面向对象问题
目录介绍 2.0.0.1 重载和重写的区别?重载和重写绑定机制有何区别?父类的静态方法能否被子类重写? 2.0.0.2 封装.继承.多态分别是什么? 2.0.0.3 接口和抽象类的区别是什么?接口的意 ...
- Divljak
Divljak Alice 有 $n$ 个字符串 $ S_1,S_2,\cdots,S_n $ ,Bob有一个字符串集合 $T$ ,一开始集合是空的. 接下来会发生 $q$ 个操作,操作有两种形式: ...
- Codeforces Round #351 (VK Cup 2016 Round 3, Div. 2 Edition) A
A. Bear and Game time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...
- Codeforces Round #350 (Div. 2) C
C. Cinema time limit per test 2 seconds memory limit per test 256 megabytes input standard input out ...