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:密码
如果使用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文件即可。
启动成功后在浏览器地址栏输入http://localhost:9000即可访问snoarQube.
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配置即可。
d.将%SONAR_HOME%\bin;添加到Path环境变量中。
sonar-runner demo实例:
在要测试的项目的根目录下添加sonar的配置文件sonar-projet.properties文件。sonar-runner执行分析时,会读取该文件。
在cmd下进入到sonar测试项目下,启动sonar-runner服务。
在浏览器中输入http://localhost:9000查看分析结果: