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

    Problem C. Bilingual Problem Elliot's parents speak French and English to him at home. He has heard ...

  2. bios设置启动方式问题

    uefi和legacy是两种不同的引导方式,uefi是新式的BIOS,legacy是传统BIOS.你在UEFI模式下安装的系统,只能用UEFI模式引导:同理,如果你是在Legacy模式下安装的系统,也 ...

  3. Spotlight 连接SuSE11 linux报错的解决方法

    1. 在客户端安装spotlight: 2.在SuSE11中建立新用户,并且安装了sysstat包: 3.使用spotlight连接服务器,连接时提示    errorcode:3114   reas ...

  4. Python:解析properties文件

    在项目中遇到解析properties的情况,而Python中正好没有解析properties文件的现成模块,于是从网上找到了这个脚本,有一些小地方修改了一下 原博客: Python读写properti ...

  5. TensorFlow学习笔记(二)-- MNIST机器学习入门程序学习

    此程序被称为TF的 Hello World,19行代码,给人感觉很简单.第一遍看的时候,不到半个小时,就把程序看完了.感觉有点囫囵吞枣的意思,没理解透彻.现在回过头来看,感觉还可以从中学到更多东西. ...

  6. 生信-cufflinks输入输出文件分析

    转自:https://wenku.baidu.com/view/8d6a95d20d22590102020740be1e650e52eacf2a.html 输出包含3个文件:转录组的组装.gtf    ...

  7. hash 冲突及解决办法。

    hash 冲突及解决办法. 关键字值不同的元素可能会映象到哈希表的同一地址上就会发生哈希冲突.解决办法: 1)开放定址法:当冲突发生时,使用某种探查(亦称探测)技术在散列表中形成一个探查(测)序列.沿 ...

  8. appium 中手势密码的定位坐标

    原文地址http://www.cnblogs.com/smallTestKK/p/5408143.html 1.press方法中的坐标为绝对坐标,moveTO方法中的坐标都是相对坐标,具体来说第一个m ...

  9. 一步一步学EF系列【5、升级篇 实体与数据库的映射】live writer真坑,第4次补发

    前言 之前的几篇文章,被推荐到首页后,又被博客园下了,原因内容太少,那我要写多点呢,还是就按照这种频率进行写呢?本身我的意图这个系列就是想已最简单最容易理解的方式进行,每篇内容也不要太多,这样初学者容 ...

  10. Ubuntu下安装keras

    0 系统版本Ubuntu16.04 1 系统更新 sudo apt update sudo apt upgrade 2 安装python基础开发包 sudo apt install -y python ...