前言:在项目开发当中,完成需求并上线是一件很开心的事情,但为了能按时上线功能不得不为了完成功能而写代码,写的时候觉得先把功能上了以后再回头优化此处代码,但真正上线之后你就会发现你再也不想去修改之前遗留的坏味道的代码,所以需要有个代码审查工具来自动检查代码当中的坏味道和潜藏的bug,Sonarqube就是这样一款代码质量审查工具,来保证代码的整体质量不至于太差

  这里我是在CentOS7下部署使用Sonarqube代码审查工具,这里只演示如何在linux下安装步骤。

  环境要求:

  Sonarqube版本:Sonarqube6.7.6

  数据库:mysql5.6(Sonarqube要求数据库最低5.6,我这里只用了一个最低支持),如果mysql版本低了可自行安装高一点的版本

  第一步:

  1、首先去Sonarqube官网下载安装包:https://www.sonarqube.org/downloads/

  2、然后解压缩:tar -zxvf sftp://root@192.168.211.136/data/sonarqube-6.7.6.zip

  3、进入到解压缩后的目录:cd sonarqube-6.7.6

  4、修改conf配置文件:vim conf/sonar.properties

  配置如下内容:

  # DATABASE

  #

  # User credentials.

  # Permissions to create tables, indices and triggers must be granted to JDBC user.

  # The schema must be created first.

  sonar.jdbc.username=root

  sonar.jdbc.password=

  Sonarqube启动分析文件的时候会把分析信息存储到数据库里面,所有这里配置的是mysql用户名和密码,我这里用户名是root,没有设置密码;

  然后接着配置:

  #----- MySQL 5.6 or greater

  # Only InnoDB storage engine is supported (not myISAM).

  # Only the bundled driver is supported. It can not be changed.

  sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=truecharacterEncoding=utf8rewriteBatchedStatements=trueuseConfigs=maxPerformanceuseSSL=false

  这里配置的是Sonarqube连接数据库的链接字符串,我用的是mysql,如果你用的是别的数据库(SQLServer,Oracle,PostgreSQL)里面都是支持的,可以找到对应的数据库配置进行配置,这里我就不在列出别的数据库相关的链接字符串了,因为我的电脑上也没装那么多数据库,配置也简单,其他数据库配置可以看下图:

  

  只需要把对应数据库的前面的“#”去掉,修改为可链接即可;

  然后接着配置web页面访问端口,找到以下配置,默认的9000端口,可以修改为别的端口,我这里修改为5051:

  #sonar.web.port=9000

  sonar.web.port=5051

  修改完之后,别的地方默认配置就好,然后保存退出::wq

  5、在启动Sonarqube之前呢,要先在数据库里面新建好一个名为:sonar的数据库,不然启动的时候会报错,所以我们要新建数据库sonar,可以使用客户端连接工具进行创建也可用语句,如下:

  1CREATE SCHEMA `sonar` DEFAULT CHARACTER SET utf8 ;

  

  6、以后都配置好之后,数据库也创建好之后,下面就可以启动Sonarqube了;

  切换到Sonarqube目录:

  1cd /data/sonarqube-6.7.6/bin/

  切换到这里之后,你可能会看到如图的好几个文件夹:

  

  因为我linux上面我把跟我系统不匹配的文件删除了,所以就在win下面截图说明展示了,这里进入到跟你系统匹配的目录里面,然后启动文件,我这里是linux64位,所以我进入的是linux-x86-64,然后启动Sonarqube:

  ./linux-x86-64/sonar.sh start

  Starting SonarQube...

  Started SonarQube.

  [admin@bogon linux-x86-64]$

  到这里之后,看到以上命令只有2条输出,然后就退出了,是不是觉得很奇怪,其实在启动Sonarqube的时候它会把输出信息输出到日志文件夹里面对应的log文件:

  [root@bogon logs]# pwd

  /data/sonarqube-6.7.6/logs

  [root@bogon logs]# ls

  access.log ce.log es.log sonar.log web.log

  然后我们进入到这里可以看到已经有了5个日志文件,然后我们执行查看命令查看里面的启动信息:

  tail -f es.log

  tail -f sonar.log

  tail -f web.log

  这里是动态输出文件内容,然后可以观察一下,有报错的话,里面会显示,这里主要关注一下sonar.log日志,如果你看到了这两个就说明Sonarqube启动成功了:

  

  如果启动失败可以在上面列出的三个日志当中看到错误信息,然后根据错误信息修改一下配置即可;Sonarqube会附带启动ElasticSearch,在下载Sonarqube的时候会自带,在执行以上启动命令的时候会自动启动ES,这里注意ES不支持root用户启动

  然后可以在Sonarqube的bin目录下执行命令查看Sonarqube是否真正启动成功:

  [admin@bogon linux-x86-64]$ ./sonar.sh status

  SonarQube is running (31640).

  可以看到状态是running,说明Sonarqube正在运行!

  7、启动成功之后然后访问地址可看到Sonarqube页面:

  1http://192.168.211.136:5051/about

  

  看到这里页面就说明Sonarqube安装成功了!

  8、然后点击Log in登录,账号和密码都是:admin,登录到Sonarqube

  

  9、然后我们去下载一些插件使Sonarqube功能更完善:

  

  这里下载个中文包,使Sonarqube看起来更舒服,然后你可以在这里下载你需要的插件,这里有Sonarqube的官网文档可以查看:https://docs.sonarqube.org/latest/setup/get-started-2-minutes/

  安装完你选的插件之后,需要把Sonarqube进行重启一下,不然没有办法直接加载这些插件,安装完之后可以看到如下信息:

  

  说明安装了8个插件,有3个插件是需要更新的,然后点击右边“Restart”进行重启Sonarqube,重启之后插件就会重新加载进来,然后就可以进行项目分析了。

  重启之后再访问的话,看到的界面就会变的很舒服了:

  

  10、以上都安装完成之后,然后就可以来进行项目分析了,点击右上角开始,然后会弹出一个弹窗,之后根据提示进行填写相关项进行创建分析项目:

  

  

  按照步骤配置好之后,会看到右下角有输出,然后把黑色背景里面的代码拷贝,然后在你的项目目录下面进行粘贴,即可分析:

  [root@bogon newk12]# sonar-scanner

  -Dsonar.projectKey=test-project

  -Dsonar.sources=.

  -Dsonar.host.url=http://192.168.211.136:5051

  -Dsonar.login=203f186468c1c9dc741a17f5c34fa1ba6718c924

  执行完之后,就开始进行分析了,然后等一会儿,当你看到以下输出的时候,说明分析已经成功并且完成了:

  

  然后刷新Sonarqube的web页面可看到分析结果,可以看到代码里面隐藏的bug和一些坏味道,然后可以进行查看是哪里的问题:

  

  11、如果在执行分析的时候分析失败了,看到的结果不是SUCCESS,可能的原因是在分析之后提交数据库的时候由于数据库的最大提交限制太小引起的,可以在mysql数据库里执行:

  MySQL [(none)] show variables like '%max_allowed_packet';

  +--------------------------+------------+

  | Variable_name | Value |

  +--------------------------+------------+

  | max_allowed_packet | 524288000 |

  | slave_max_allowed_packet | 1073741824 |

  +--------------------------+------------+

  2 rows in set (0.00 sec)

  可以看到“max_allowed_packet”的值是很小的,我这里是设置之后的值,可以使用命令进行设置大小:

  set global max_allowed_packet = 100 * 1024 * 1024;

  或者直接在mysql的配置文件里面的“max_allowed_packet”的值:

  vim /etc/my.cnf

  [mysqld]

  datadir=/var/lib/mysql

  socket=/var/lib/mysql/mysql.sock

  bind-address = 0.0.0.0

  symbolic-links=0

  max_allowed_packet=500M

  然后重启mysql:

  1service mysqld restart

  之后再重新执行分析即可。

  12、可以看下基本配置:

  

  然后下图在这里可以进行分析规则配置:

  

  这里默认的是“Sonar way”,你也可以修改,修改之后重启,然后在分析项目的时候就会按照新规则进行,这里我用的默认的,功能挺强大的,我就不一一列举了,如果你有兴趣的话,可以去官网看看文档。

  结语:Sonarqube可以很好的分析项目当中书写和代码命名不规范的地方,同时如果你的编辑器也支持Sonarlint的话,也可以使用Sonarqube的代码分析规则,具体怎么配置,我会在下篇手记当中进行配置。

代码审查工具Sonarqube安装的更多相关文章

  1. windows下代码规范检测工具sonarqube安装与使用,含与maven的结合

    一.首先下载sonarqube   地址 : https://www.sonarqube.org/downloads/   (最新版本支持java11+,博主下载支持java8的版本7.7), 下载S ...

  2. SonarQube安装教程与简单使用(基于Centos7,JDK1.8)

    SonarQube 若要转载本文,请务必声明出处:https://www.cnblogs.com/zhongyuanzhao000/p/11686522.html 概念: SonarQube是一种自动 ...

  3. docker运行gerrit(代码审查工具)

    gerrit是什么? Gerrit,一种免费.开放源代码的代码审查软件,使用网页界面. gerrit背景 Gerrit,一种免费.开放源代码的代码审查软件,使用网页界面.利用网页浏览器,同一个团队的软 ...

  4. 静态代码审查工具FxCop插件开发(c#)

    FxCop是一款微软官方提供的.net平台代码审查工具,目的是检查我们编写的程序集的代码是否符合规范.FxCop默认提供的是微软默认的审查规则,而且该规则符合<Framework DesignG ...

  5. [转载] Jupiter代码审查工具使用参考

    转载自http://blog.csdn.net/jemlee2002/article/details/5715355 一.       Jupiter 是什么? 这里的 Jupiter 是一个开源的代 ...

  6. Jupiter Code Review Reference -- Jupiter代码审查工具使用参考

    Jupiter Code Review Reference -- Jupiter代码审查工具使用参考 (修改版) 原创 2010年07月06日 10:43:00 标签: 审查 / reference  ...

  7. 从零开始针对 .NET 应用的 DevOps 运营实践 - Jenkins & SonarQube 安装配置

    一.Overview 继续 DevOps 实施的相关内容,在上一篇的博客中,完成了对于工具链中使用到的软件所需的运行环境的配置,在这一篇的博客中,将聚焦于我们使用到的两个主要的软件:Jenkins 与 ...

  8. 微软源代码管理工具TFS2013安装与使用详细图文教程(Vs2013)

    这篇文章联合软件小编主要介绍了微软源代码管理工具TFS2013安装与使用图文教程,本文详细的给出了TFS2013的安装配置过程.使用教程,需要的朋友可以参考下 最近公司新开发一个项目要用微软的TFS2 ...

  9. [转] 微软源代码管理工具TFS2013安装与使用详细图文教程(Vs2013)

    这篇文章联合软件小编主要介绍了微软源代码管理工具TFS2013安装与使用图文教程,本文详细的给出了TFS2013的安装配置过程.使用教程,需要的朋友可以参考下 最近公司新开发一个项目要用微软的TFS2 ...

随机推荐

  1. 创建Java不可变类

    不可变(immutable)类的意思是创建该类的实例后,该实例的Field是不可改变的,Java提供的8个包装类和java.lang.String类都是不可变类. 如果需要创建自定义的不可变类,可遵守 ...

  2. docker——三大核心概念

    镜像.容器.仓库是docker的三大核心概念. docker镜像类似于虚拟机镜像,你可以将其理解为一个只读模板. docker容器类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用.容器是从 ...

  3. ZJOI 2009 假期的宿舍 最大匹配

    主要是main()中的处理,接下来就是二分匹配的模板题了 #include<cstdio> #include<cstring> #define maxn 110 using n ...

  4. Oracle DDL+DML+DCL实例

    SQL语言共分为四大类: 数据查询语言DQL: 数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块. 数据操纵语言DML: DML是“数据操纵语言”( Data ...

  5. Pythonic 的代码编写方法

    1.模块导入 你是不是经常对调用模块时输入一长串模块索引感到头疼?说实在的,数量少的时候或许还可以勉强忍受,一旦程序规模上去了,这也是一项不容小觑的工程 #Bad import urllib.requ ...

  6. Optimal Marks SPOJ - OPTM (按位枚举-最小割)

    题意:给一张无向图,每个点有其点权,边(i,j)的cost是\(val_i\ XOR \ val_j\).现在只给出K个点的权值,求如何安排其余的点,使总花费最小. 分析:题目保证权值不超过32位整型 ...

  7. 对JVM的理解

    操作系统内核是至高无尚的内功心法,只有掌握了内功,学习其他的武功才会轻而易举. 现在我们来谈谈java.JVM其实是操作系统中运行的进程,JVM有操作系统进程的所有共性,但是它却不是一个普通的进程,它 ...

  8. 前端隐藏Ios及安卓滚动条

    1.方法不通用 // .scroll_list::-webkit-scrollbar { display:none } .scroll_list::-webkit-scrollbar-track { ...

  9. 切换usb口的命令

    open:dd if=imx6dl-sabresd-usboc.dtb of=/dev/mmcblk0 bs=512 seek=1536 conv=fsyncclose:dd if=imx6dl-sa ...

  10. Java Calendar类总结

    在实际项目当中,我们经常会涉及到对时间的处理,例如登陆网站,我们会看到网站首页显示XXX,欢迎您!今天是XXXX年....某些网站会记录下用户登陆的时间,比如银行的一些网站,对于这些经常需要处理的问题 ...