一、SonarQube

我的理解是,SonarQube就是一个对代码进行分析的平台,其功能可以通过插件扩展。支持多种语言,也支持静态代码检查、发现潜在bug等。

以下是参考信息:

维基百科:https://zh.wikipedia.org/wiki/SonarQube

官网:https://www.sonarqube.org/

文档: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.尝试使用

访问:

http://localhost:9000

用户名/密码是: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集成的更多相关文章

  1. jenkins与SonarQube集成

    一.SonarQube 我的理解是,SonarQube就是一个对代码进行分析的平台,其功能可以通过插件扩展.支持多种语言,也支持静态代码检查.发现潜在bug等. 以下是参考信息: 维基百科:https ...

  2. Jenkins+sonar7.3集成

    Jenkins安装请参考:https://blog.csdn.net/CheNorton/article/details/50327825?utm_source=copy Jenkins更新请参考:h ...

  3. 使用 Jenkins 与 Sonar 集成对代码进行持续检测

    SonarQube 与 Jenkins 简介 SonarQube是 一个开源的代码质量分析平台,便于管理代码的质量,可检查出项目代码的漏洞和潜在的逻辑问题.同时,它提供了丰富的插件,支持多种语言的检测 ...

  4. Jenkins 使用 SonarQube 扫描 Coding

    Jenkins 使用 SonarQube 扫描 Coding   系统环境: Jenkins 版本:2.176 SonarQube 版本:7.4.0 一.SonarQube 介绍 1.SonarQub ...

  5. Jenkins——构建、集成中的问题

      准备 Jekins   安装插件 MsBuild Plugin Team Foundation Server Plug-in 配置环境变量 我的电脑中设置环境变量,Path中添加msbuild的路 ...

  6. 【iOS】Jenkins Gitlab持续集成打包平台搭建

    Jenkins Gitlab持续集成打包平台搭建 SkySeraph July. 18th 2016 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph个人站点: ...

  7. 使用jenkins构建持续集成平台

    jenkins +   Maven + svn/git + tomcat 的持续集成平台 项目管理流程: 需求分析----原型设计----开发代码----提交测试-----内部测试-----确认上线( ...

  8. 用MSBuild和Jenkins搭建持续集成环境(2)

    http://www.infoq.com/cn/articles/MSBuild-2   作者 Mustafa Saeed Haji Ali ,译者 李剑 发布于 2012年10月23日 | 注意:  ...

  9. jenkins jmeter持续集成批处理jmx脚本

    这篇文章介绍jenkis jmeter的持续集成,利用jenkins定时任务去批处理执行jmeter的jmx脚本文件,并且生成测试报告 1:jmeter的安装这里我就不在赘述了,如有问题可参考我的jm ...

随机推荐

  1. exit和die的区别

    网上搜索die与exit两个函数的区别,大部分的"标准答案"都是说die是退出并释放内存,exit是退出但不释放内存. 这个解释显然是错的,PHP手册中已经说过"die ...

  2. Cocoa & OS X & swift 4

    Cocoa & OS X & swift 4 http://www.runoob.com/swift/swift-environment.html https://en.wikiped ...

  3. P2483 【模板】k短路([SDOI2010]魔法猪学院)

    题目背景 感谢@kczno1 @X_o_r 提供hack数据 题目描述 iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPig对猪世界 ...

  4. Visio中设置自定义属性的值

    ShapeSheet中User-Define Cells中Prompt格. 帮助解释为:为用户定义的单元格指定说明性提示或注释.应用程序自动将提示文本用引号 (" ") 引起来,以 ...

  5. 关闭listener监听日志

    有几次碰到过由于监听日志文件大小达到几G,使得在连接时非常慢,像hang住一样,windows下的监听日志达到4G限制,后续连接如果无法写监听日志,就会产生TNS-12537报错,可以通过关闭写监听日 ...

  6. tomcat发布web项目的三种方式

    tomcat发布web项目的三种方式 方式一: 配置tomcat 安装目录下的conf/server.xml <Host name="loaclhost">标签里面添加 ...

  7. Lucene4.6 把时间信息写入倒排索引的Offset偏移量中,并实现按时间位置查询

    有个新的技术需求,需要对Lucene4.x的源码进行扩展,把如下的有时间位置的文本写入倒排索引,为此,我扩展了一个TimeTokenizer分词器,在这个分词器里将时间信息写入 偏移量Offset中. ...

  8. JAVA路线

    [转]Java自学之路——by马士兵 作者:马士兵老师 JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机. ...

  9. 【Foreign】阅读 [线段树][DP]

    阅读 Time Limit: 10 Sec  Memory Limit: 256 MB Description Input Output Sample Input 0 10 4 10 2 3 10 8 ...

  10. 百练3383:Cell Phone Network

    传送门:http://bailian.openjudge.cn/practice/3383/ [题解] 题目就是最小支配集. 学习了最小支配集的解法: 树形dp(有空可以推一推) 贪心:DFS遍历后逆 ...