前言:在项目开发当中,完成需求并上线是一件很开心的事情,但为了能按时上线功能不得不为了完成功能而写代码,写的时候觉得先把功能上了以后再回头优化此处代码,但真正上线之后你就会发现你再也不想去修改之前遗留的坏味道的代码,所以需要有个代码审查工具来自动检查代码当中的坏味道和潜藏的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. 移动支付--银联,支付宝,微信(android)

    在这个移动互联网快速发展的时代,手机已经成为人们生活或者出行之中必不可少的设备了,如今非常多城市的商户都能够採用支付宝,微信支付了.人们出门仅仅须要随身携带带手机.不用带大量现金就能够放心购物了.如今 ...

  2. 需求用例分析之五:业务用例之Rational系

    版权声明:作者:张克强.未经作者允许不得转载. https://blog.csdn.net/zhangmike/article/details/28134897 作者:张克强    作者微博:张克强- ...

  3. OCR技术浅探: 语言模型和综合评估(4)

    语言模型 由于图像质量等原因,性能再好的识别模型,都会有识别错误的可能性,为了减少识别错误率,可以将识别问题跟统计语言模型结合起来,通过动态规划的方法给出最优的识别结果.这是改进OCR识别效果的重要方 ...

  4. Powerdesigner显示列名

    设置要修改的列 点击ok即可.

  5. 图解Python可以做些什么

    Python具有简单.易学.免费.开源.可移植.可扩展.可嵌入.面向对象等优点,它的面向对象甚至比java和C#.net更彻底. 作为一种通用语言,Python几乎可以用在任何领域和场合,角色几乎是无 ...

  6. 使用selenium实现简单网络爬虫抓取MM图片

    撸主听说有个网站叫他趣,里面有个社区,其中有一项叫他趣girl,撸主点进去看了下,还真不错啊,图文并茂,宅男们自己去看看就知道啦~ 接下来当然就是爬取这些妹子的图片啦,不仅仅是图片,撸主发现里面的对话 ...

  7. Flask form(登录,注册)

    用户登录 from flask import Flask, render_template, request, redirect from wtforms import Form from wtfor ...

  8. SVN无法Cleanup

    错误如下: 原因:svn提交遇到恶心的问题,可能是因为上次cleanup中断后,进入死循环了 解决方法:清空svn的队列 1.下载Sqlite3.exe 2.找到你项目的.svn文件,查看是否存在wc ...

  9. PKU 2531 Network Saboteur(dfs+剪枝||随机化算法)

    题目大意:原题链接 给定n个节点,任意两个节点之间有权值,把这n个节点分成A,B两个集合,使得A集合中的每一节点与B集合中的每一节点两两结合(即有|A|*|B|种结合方式)权值之和最大. 标记:A集合 ...

  10. 51Nod 1079

    题目大意: 一个正整数K,给出K Mod一些质数的结果,求符合条件的最小的K.例如,K%2=1,K%3=2,K%5=3符合条件的最小的K=23. Input 第1行:1个数N表示后面输入的质数及模的数 ...