【转+整理】jenkins与SonarQube集成
一、SonarQube
我的理解是,SonarQube就是一个对代码进行分析的平台,其功能可以通过插件扩展。支持多种语言,也支持静态代码检查、发现潜在bug等。
以下是参考信息:
维基百科:https://zh.wikipedia.org/wiki/SonarQube
文档:https://docs.sonarqube.org/display/SONAR/Documentation
二、下载安装
1.下载
访问官网:https://www.sonarqube.org/
点击“Download”,
然后我们可以选择长期支持版本或者最近的稳定版本,
2.安装运行
该软件是绿色版,不需要安装,手动解压即可。windows或者linux都支持。
解压后,如果是windows,执行以下路径的bat(如果是32位操作系统,请切换到bin\windows-x86-32目录)
我的是mac,执行以下路径的sh sonar.sh文件
运行如下,如果显示如下图,表示已成功启动SonarQube。
3.尝试使用
访问:
用户名/密码是:admin/admin
接下来可以照着网页上的提示,完成token生成、SonarQube Scanner安装,该token用处很大,需要牢记。
4.配置mysql数据库(非必须)
安装mysql(不详述);默认安装在/usr/local/mysql下
$ ln -s /usr/local/mysql/bin/mysql /usr/local/bin/mysql #建立软连接
$ mysql -uroot -pyourpass #登录数据库
创建sonar所需库及用户等
CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'sonar' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';
FLUSH PRIVILEGES;
5、配置环境变量(mac下)
$ vim ~/.bash_profile
配置 SONAR_HOME
export SONAR_HOME=/usr/local/sonarqube-5.6.3
export PATH=$PATH:$SONAR_HOME/bin
保存退出验证是否生效
$ source ~/.bash_profile #使文件生效
$ echo $SONAR_HOME #打印验证
/usr/local/sonarqube-5.6.3 #正确的输出
如果需要配置mysql,配置sonar.properties
vim /usr/local/sonarqube-5.6.3/conf/sonar.properties
修改如下位置:
sonar.jdbc.username=sonar #数据库用户名
sonar.jdbc.password=sonar #密码
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar.jdbc.driverClassName=com.mysql.jdbc.Driver
保存退出,建立启动软链接
$ ln -s /usr/local/sonarqube-5.6.3/bin/macosx-universal-64/sonar.sh /usr/local/bin/sonar
配置sonar-scanner
sonar-scanne压缩包下载(https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner)到/usr/local/解压
配置环境变量
$ vim ~/.bash_profile
添加SONAR_RUNNER_HOME
export SONAR_RUNNER_HOME=/usr/local/sonar-scanner-2.8
export PATH=$PATH:$SONAR_RUNNER_HOME/bin
如果需要配置mysql,配置解压路径下的sonar-scanner.properties :/usr/local/sonar-scanner.properties
vim /usr/local/sonar-scanner-2.8/conf/sonar-scanner.properties
修改如下位置:
sonar.jdbc.username=sonar #数据库用户名
sonar.jdbc.password=sonar #密码
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar.jdbc.driverClassName=com.mysql.jdbc.Driver
输入sonar-scanner -h
检查是否配置成功,成功则出现下列提示
usage: sonar-scanner [options]
Options:
-D,--define <arg> Define property
-h,--help Display help information
-v,--version Display version information
-X,--debug Produce execution debug output
六、汉化
从以下链接下载汉化包:https://github.com/SonarQubeCommunity/sonar-l10n-zh/releases
放到sonarqube安装路径下的/extensions/plugins,sonarqube和汉化插件版本对应如下
7、测试
针对maven项目(python项目自行查资料),我们可以测试一下。
找到想要测试的项目的根路径,比如:
在命令行执行:(sonar.login就是上文生成的token值)
mvn sonar:sonar -Dsonar.host.url=http://localhost:9000 -Dsonar.login=429cf9cccb1c1dc96aea29c2f69f74669ed7fdc5 或者是 sonar-scanner
执行结果如下:
根据以下日志,
[INFO] ANALYSIS SUCCESSFUL, you can browse http://localhost:9000/dashboard/index
/com.ceiec:bdmp
我们访问:http://localhost:9000/dashboard/index/com.ceiec:bdmp,页面如下:
SonarQube的功能很多,以上只展示了基本功能。
更多功能可以参考官方文档:
https://docs.sonarqube.org/display/SONAR/Get+Started+in+Two+Minutes
三、与jenkins集成
参考:
https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner
1.安装
依次进入,“系统管理”--》“管理插件”--》“可选插件”--》“SonarQube Scanner for Jenkins”,然后点“直接安装”。安装完成后,重启一下。
2.配置SonarQube服务器的地址
依次进入,“系统管理”--》“系统设置”,配置以下部分:
3.配置SonarQube Scanner
依次进入,“系统管理”--》“全局工具配置”,配置以下部分:
我这边采用了自动安装,但是,这个“自动安装”的运行条件是:
当你在job中配置了,要使用该指定名称“my-jenkins-SonarQube Scanner”的工具(当然,如果不指定,因为没有默认值,所以会在job配置页面上报错,红字提示),然后在“立即构建”时,才会去下载该工具。
并不是这里点了自动安装,点击保存后,马上就会下载安装的。
4.配置job
SonarQube,针对java来说,是基于class来检测的,所以在这前面,需要配置一个maven的编译步骤。
如下:
上图中,要指定给SonarQube Scanner使用的jdk,在Analysis properties中,
“sonar.projectKey”可随意指定;
“sonar.sources”指定了我的源文件路径;
“sonar.java.binaries”是编译后的class文件的路径。
以下是我的jenkins的该job的工作目录树(请读者参考自己的目录配置):
5.构建结果
6.异常情形
INFO: ------------------------------------------------------------------------
ERROR: Error during SonarQube Scanner execution
ERROR: Error when executing blame for file bdmp-api/pom.xml
ERROR: Caused by: svn: E170001: Authentication required for ‘<http://192.168.19.225:80> CollabNet Subversion Repository‘
ERROR:
ERROR: Re-run SonarQube Scanner using the -X switch to enable full debug logging.
WARN: Unable to locate ‘report-task.txt‘ in the workspace. Did the SonarScanner succedeed?
ERROR: SonarQube scanner exited with non-zero code: 1
Finished: FAILURE 解决方法:
登录SonarQube,按下图所示,关闭“从scm获取blame信息”即可:
【转+整理】jenkins与SonarQube集成的更多相关文章
- jenkins与SonarQube集成
一.SonarQube 我的理解是,SonarQube就是一个对代码进行分析的平台,其功能可以通过插件扩展.支持多种语言,也支持静态代码检查.发现潜在bug等. 以下是参考信息: 维基百科:https ...
- Jenkins+sonar7.3集成
Jenkins安装请参考:https://blog.csdn.net/CheNorton/article/details/50327825?utm_source=copy Jenkins更新请参考:h ...
- 使用 Jenkins 与 Sonar 集成对代码进行持续检测
SonarQube 与 Jenkins 简介 SonarQube是 一个开源的代码质量分析平台,便于管理代码的质量,可检查出项目代码的漏洞和潜在的逻辑问题.同时,它提供了丰富的插件,支持多种语言的检测 ...
- Jenkins 使用 SonarQube 扫描 Coding
Jenkins 使用 SonarQube 扫描 Coding 系统环境: Jenkins 版本:2.176 SonarQube 版本:7.4.0 一.SonarQube 介绍 1.SonarQub ...
- Jenkins——构建、集成中的问题
准备 Jekins 安装插件 MsBuild Plugin Team Foundation Server Plug-in 配置环境变量 我的电脑中设置环境变量,Path中添加msbuild的路 ...
- 【iOS】Jenkins Gitlab持续集成打包平台搭建
Jenkins Gitlab持续集成打包平台搭建 SkySeraph July. 18th 2016 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph个人站点: ...
- 使用jenkins构建持续集成平台
jenkins + Maven + svn/git + tomcat 的持续集成平台 项目管理流程: 需求分析----原型设计----开发代码----提交测试-----内部测试-----确认上线( ...
- 用MSBuild和Jenkins搭建持续集成环境(2)
http://www.infoq.com/cn/articles/MSBuild-2 作者 Mustafa Saeed Haji Ali ,译者 李剑 发布于 2012年10月23日 | 注意: ...
- jenkins jmeter持续集成批处理jmx脚本
这篇文章介绍jenkis jmeter的持续集成,利用jenkins定时任务去批处理执行jmeter的jmx脚本文件,并且生成测试报告 1:jmeter的安装这里我就不在赘述了,如有问题可参考我的jm ...
随机推荐
- 【题解】HNOI2010合唱队
我果然还是太弱了呜呜呜……洛谷P3205 区间dp:注意到一段区间最两侧的人必然是最后加入队伍的所以由此我们可以分成两种情况来讨论. 一种是最后一个加入的人是左边的,另一种是右边的.那么状态:dp[i ...
- BZOJ 3319 黑白树 并查集+线段树
这这这这这这什么毒瘤题!!!!!!!!!!!!!!!!!!!!!!!!!!!! 卡LCT(优秀的LCT由于是均摊本身就带着2,3的常数在,而且这道题对于LCT标记十分难维护,又得乘上4,5然后就炸了) ...
- 修改innodb_flush_log_at_trx_commit参数提升insert性能
最近,在一个系统的慢查询日志里发现有个insert操作很慢,达到秒级,并且是比较简单的SQL语句,把语句拿出来到mysql中直接执行,速度却很快. 这种问题一般不是SQL语句本身的问题,而是在具体的应 ...
- 原生toolbar基本使用教程
1.先写布局文件 <android.support.v7.widget.Toolbar android:id="@+id/toolbar" app:title=" ...
- Join an instance to my AWS Directory Service domain
https://amazonaws-china.com/cn/premiumsupport/knowledge-center/ec2-systems-manager-dx-domain/ https: ...
- python实现多个文件的分发
之前写的脚本只能分发一个配置,每次分发多个配置总要执行很多次,很不爽,于是就有了这个脚本 from multiprocessing import Process import paramiko imp ...
- bzoj4240 zkw版
复习一波zkw树 很显然最后建出来的图不是单调序列就是一个类似 ...
- Linux make命令详解
在linux环境下的工作,免不了需要经常编译C/C++源代码,所以make命令是我们经常都会用到的.当然make工具不一定针对C代码,它也可以维护其他各种代码,详见:man make 在列举其详 ...
- django执行sql
http://docs.30c.org/djangobook2/chapter10/ def first_names(self, last_name): cursor = connection.cur ...
- C++学习笔记之——内联函数,引用
本文为原创作品,转载请注明出处 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和http://www.cnblogs.com/xujianqing/ 作者:晨凫 ...