sonar代码质量管理工具

SonarQube

1.SonarQube是什么

SonarQube是一个用于代码质量管理的开放平台。为项目提供可视化报告, 连续追踪项目质量演化过程。 通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具。对结果进行再加工处理,通过量化的方式度量代码质量的变化。

2.特性

所有项目的概览:

可以快速了解上百项目的健康程度

深入代码查看:

想知道哪个代码违反规范,进入包内查看违规的源码

编码规则:

有超过600多的代码规范。从命名规范到违反模式的检测

单元测试:

单元测试是保证代码质量最有效方式。运行单元测试,度量单元测试的覆盖率。

标准化度量:

包括所有经典的度量。注释、编码规范、潜在bug、复杂度、单元测试、重复度、架构与设计。

3.安装

3.1 环境要求

     a).JDK

     环境变量的设置:

     JAVA_HOME= C:\Program Files\Java\jdk1.8.0_101

     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.3 数据库安装

sonar支持的数据库类型有apache derbyh2,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.4 安装及配置sonar

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

安装服务器端 sonarqube-6.0

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文件夹下即可,其他数据库的驱动包已经放到默认的路径下。

3.5启动sonarqube

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



 

 

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



 

 

3.6修改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查看分析结果:



 

 

错误级别



 

Blocker  最严重的阻断类的

Critical   灾难性的BUG

Major    Major是执行有效测试用例时发现的比较严重的BUG

Minor    Minor是执行无效测试用例时发现的比较严重的BUG

 

Info      info级别的

术语:

官网地址:http://docs.sonarqube.org/display/SONAR/Metric+Definitions

 

术语 解释 备注
Issues    问题  
measures 度量单位  
quality profile 质量简介  
quality gate 质量阀门  
Complexity 复杂性 if, for, while, case, catch, throw, return (that is not the last statement of a method), &&, ||, ?
Comment lines 注释行数  
Duplicated blocks

Number of duplicated blocks of lines

 
Issues    
Maintainability     
Quality Gates    
Reliability    
Security    
Tests    
圈复杂度:

1.圈复杂度用来衡量一个模块判定结构的复杂程度,数量上表现为独立现行路径条数,即合理的预防错误所需测试的最少路径条数,圈复杂度

大说明程序代码可能质量低且难于测试和维护

1.例如img_web项目SimilarImageSearch.javabinaryToHex(int binary) 方法137

报警The cyclomatic complexity of methods should not exceed a defined threshold 该方法的复杂度超过了阈值

重复代码:

例如img_web项目IdentifyingCode2.javawriteStr()方法里面

 

 

5 mavensonar配合使用

在上述安装完成后,在maven中配置sonar:打开setting.xml配置文件,在其中加入如下代码:

<profile>
      <id>sonar</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <properties>
        <sonar.jdbc.url>
               jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8

        </sonar.jdbc.url>
        <sonar.jdbc.driver>com.mysql.jdbc.Driver</sonar.jdbc.driver>
        <sonar.jdbc.username>sonar</sonar.jdbc.username>
        <sonar.jdbc.password>sonar</sonar.jdbc.password>
        <sonar.host.url>http://localhost:9000</sonar.host.url>
      </properties>
    </profile>

 1启动sonarsonarqube-6.0\bin\windows-x86-64目录下的StartSonar.bat文件。

  2. 进入maven项目中,执行mvn sonar:sonar命令,等待结束

  3.输入localhost:9000回车,查看:

6.项目分析结果

 

 

猜你喜欢

转载自ronbay.iteye.com/blog/2345354