Sonar技术调研

1.SonarQube是什么

SonarQube 是一个用于代码质量管理的开源平台,用于管理源代码的质量。 通过插件形式,可以支持包括 java, C#, C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等等二十几种编程语言的代码质量管理与检测。Sonar可以从以下七个维度检测代码质量,而作为开发人员至少需要处理前5种代码质量问题。

2.特性

 .不遵循代码标准

sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写。

 .潜在的缺陷

sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检 测出潜在的缺陷.

 .糟糕的复杂度分布

文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员 难以理解它们, 且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试。

   .重复

显然程序中包含大量复制粘贴的代码是质量低下的,sonar可以展示 源码中重复严重的地方。

  .注释不足或者过多

没有注释将使代码可读性变差,特别是当不可避免地出现人员变动 时,程序的可读性将大幅下降 而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷。

 .缺乏单元测试

sonar可以很方便地统计并展示单元测试覆盖

 . 糟糕的设计

通过sonar可以找出循环,展示包与包、类与类之间的相互依赖关系,可以检测自定义的架构规则 通过sonar可以管理第三方的jar包,可以利用LCOM4检测单个任务规则的应用情况, 检测耦合。

3.安装

3.1 环境要求

     a).JDK

     环境变量的设置:

     JAVA_HOME=D:\Program Files\Java\jdk1.7.0_67\

     PATH=%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin

     CLASSPATH=%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

3.2 sonar安装

     作为一个代码分析平台,sonar主要由一下3部分构成:

     a.一个数据库:存放配置信息和分析结果信息;(mysql)

     b.一个web服务器:发布应用,在线浏览、配置分析(sonarqube-4.5.4)

     c.一个客户端:执行源代码分析(sonar-runner-2.4)

3.2 数据库安装

sonar支持的数据库类型有apache derby,h2,sql server,mysql.orcale.postgreSQL等多种数据库,如果只做测试可以使用sonar自带的h2,或derby。他们不需要任何安装。

    如果使用其他数据库,仅仅需要创建一个数据库或表空间,提供sonar增删该查数据库权限的账号即可。表和索引将在sonar第一次运行的时候创建。

   在这里我们使用的是mysql数据库。创建语句如下:

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;

 3.3 安装及配置sonar

在http://www.sonarsource.org/downloads/下 下载相关应用解压即可。(最新6.0)

安装服务器端 sonarqube-4.5.4

在sonarqube解压包下编辑conf/sonar.properties文件,该文件中所有注释掉的数据库连接模板都是支持的,只需要去掉注释更改为自己的数据库连接即可。同时将默认的自带数据库连接注释去掉。

  一般需要配置一下属性:

 sonar.jdbc.url:数据库连接地址

 sonar.jdbc,driver:驱动类

 sonar.jdbc.user: 数据库用户名

 sonar.jdbc.password:密码


Sonar技术调研
 

如果使用orcale数据库,那么将orcale驱动包放到sonarqube-6.0\extensions\jdbc-driver \oracle文件夹下即可,其他数据库的驱动包已经放到默认的路径下。

2.启动sonarqube

    在E:\sonar\sonarqube-6.0\sonarqube-6.0\bin\windows-x86-64文件下运行StartSonar.bat文件即可。


Sonar技术调研
 启动成功后在浏览器地址栏输入http://localhost:9000即可访问snoarQube.


Sonar技术调研
 

 3.修改snoar端口

   sonar应用默认监听9000端口。通过http://localhost:9000访问

   可以在 conf/sonar.properties文件中更改:

   sonar.web.host=0.0.0.0

   sonar.web.port=9000

   sonar.web.context=/sonar

1.2.2.1 sonar客户端 sonar-runner

    1.sonar-runner安装过程

     a.将下载包解压到一个本地路径下。

     b.将解压路径设置为环境变量

       SONAR_HOME=E:\sonar\sonar-runner-2.4     

     c.更改配置文件:$SONAR_HOME/conf/sonar-runner.porperties

    主要是数据源的配置,sonar-runner会将分析的结果存放在数据库中。如图所示,只需将注释的模板适当位置去掉注释并更改为自己对应的sonar配置即可。


Sonar技术调研
 d.将%SONAR_HOME%\bin;添加到Path环境变量中。

sonar-runner demo实例:

    在要测试的项目的根目录下添加sonar的配置文件sonar-projet.properties文件。sonar-runner执行分析时,会读取该文件。


Sonar技术调研
 

 在cmd下进入到sonar测试项目下,启动sonar-runner服务。


Sonar技术调研
 

在浏览器中输入http://localhost:9000查看分析结果:


Sonar技术调研