Sonar入门学习札记

SonarQube 代码质量管理

一,简要说明

1-SonarQube 的工作原理介绍

SonarQube 并不是简单地将各种质量检测工具的结果(例如 FindBugsPMD 等)直接展现给客户,而是通过不同的插件算法来对这些结果进行再加工,最终以量化的方式来衡量代码质量,从而方便地对不同规模和种类的工程进行相应的代码质量管理。

SonarQube 在进行代码质量管理时,会从图 1 所示的七个纬度来分析项目的质量。

1. 质量纬度

SonarQube 可以支持 25+ 种编程语言,针对不同的编程语言其所提供的分析方式也有所不同:

1.   对于所有支持的编程语言,SonarQube 都提供源了代码的静态分析功能;

2.   对于某些特定的编程语言,SonarQube 提供了对编译后代码的静态分析功能,比如 java 中的 class file jar C# 中的 dll file 等;

3.   对于某些特定的编程语言,SonarQube 还可以提供对于代码的动态分析功能,比如 java C# 中的单元测试的执行等。

SonarQube 平台的整体架构如图 2 所示:

2. SonarQube 的服务架构

远程客户机可以通过各种不同的分析机制,从而将被分析的项目代码上传到 SonarQube server 并进行代码质量的管理和分析,SonarQube 还会通过 Web API 将分析的结果以可视化、可度量的方式展示给用户。

 

2-SonarQube的安装

环境要求

Sonar代码分析工具是以Java Web应用的形式发布的。搭建Sonar代码分析环境需要相应的硬件、JDK、数据库、WEB服务器的要求。相关要求如下:

 

硬件要求:

内存

Sonar web应用需要至少500Mb内存

磁盘空间

项目越大、使用周期越长,Sonar占用的磁盘空间越大。参考:1300万行的项目,持续分析四年,占用10G磁盘空间。参考项目Nemo

 

软件要求

Java平台

Oracle JDK

1.567支持

IBM JDK

不支持

GCJ

不支持

Oracle JRockit

不支持

数据库

Apache Derby

Sonar 3.2之前版本支持。

DerbySonar绑定发布的。尽管Derby数据库支持Sonar的全部功能,(升级不支持)。因此Sonar建议使用企业级数据库,而非Derby

H2

Derby数据库一样。绑定发布,但是不建议使用。

Microsoft SQL Server

支持2005版本,使用jTDS驱动。不支持微软驱动。精简版本支持。

不支持2008版本。但是有用户成功使用。

必须指定区分大小写,指定区分重音。

MySQL

支持5.X6.X

Oracle

支持Oracle10G11G和试用精简版。
驱动ojdbc14.jar不支持,只支持thin模式,不支持OCI

PostgreSQL

支持8.38.49.09.1

应用服务器

Jetty 6

Sonar绑定。

Apache Tomcat

支持5.56.07.0

JBoss

不支持

GlassFish

不支持。

浏览器

IE

支持IE7+

Firefox

所有版本。

Chrome

近期稳定版本,12版本测试通过。

Opera

未经测试

Safari

近期稳定版本

 

作为一个代码分析平台,Sonar由以下三部分构成:

  •  一个数据库:存放配置信息和分析结果信息;

  • 一个WEB服务器:发布应用,在线浏览、配置分析;

  • 一个客户端:执行源代码分析。

数据库安装

在环境要求部分,已经罗列了Sonar支持的数据库类型。

如果只是做一个测试或Demo,你可以使用Sonar附带的H2Derby。它们不需要任何安装。

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

笔者推荐使用MySQL数据库,推荐使用数据库编码为UTF-8(具体源代码的字符集设置)

 

注:以上内容只作为了解,说明,不重要。

 

 

==========================【结合】cqp-车险项目========================

前期准备:

   1-Java环境,要求JDK1.5+

1-安装MySQL数据库(推荐)

安装步骤不做说明。

参考网址:http://www.jb51.net/article/23876.htm

一,第一步:安装SONAR 

1 准备好JAVA环境。 
2
新建MySQL用户与数据库

 

 

 

 

root用户登录,执行此命令:

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- sonar-3.5.1.zip,解压到指定目录(举例:解压到目录C:\app\ sonar-3.5.1 

 

 

 

4-修改C:\app\ sonar-3.5.1\conf\sonar.properties 

sonar.jdbc.username:           sonar

sonar.jdbc.password:           sonar

sonar.jdbc.url:               jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true

sonar.jdbc.driverClassName:   com.mysql.jdbc.Driver

5-执行C:\app\ sonar-3.5.1\bin\windows-x86-64\StartSonar.bat(操作系统为windows 7,本机为64),启动自带的JETTY服务器。打开http://localhost:9000,如果显示sonar主页,则sonar安装成功
6-
安装中文插件和其它语言插件:将插件JAR包放到目录C:\app\sonar-3.6\extensions\plugins,重启服务即安装成功。 
中文插件:sonar-l10n-zh-plugin-1.2.jar

 

二,第二步,安装Sonar-runner

1- sonar-runner-1.0.zip,解压到指定目录(举例:解压到目录C:\app\ sonar-runner-1.0 

2-修改C:\app\ sonar-runner-1.0\sonar-runner.properties: 

sonar.sourceEncoding=UTF-8

Sonar server

sonar.host.url=http://localhost:9000

sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8

sonar.jdbc.driver=com.mysql.jdbc.Driver

sonar.jdbc.username=sonar

sonar.jdbc.password=sonar

3 添加系统环境变量:SONAR_RUNNER_HOME 值为 C:\app\ sonar-runner-1.0 
4
修改环境变量Path,在变量值末尾添加:“;%SONAR_RUNNER_HOME%\bin” 
5
命令行里执行 sonar-runner -h 如果显示如下内容,则安装成功。 

6- sonar-project.properties 配置文件(仅供参考)放在cqp项目根路径下

项目结构:

 

三,分析代码:

1-    命令行里执行 cd ../../cqp 到项目根目录。

2-    然后执行命令:sonar-runner,控制台会打印分析过程。

3-    当出现SUCCESS时,则分析成功。

4-    IE打开地址:http://localhost:9000,即可以访问cqp项目的分析结果:

 

注意:

1-    分析时,如出现提示内容:

修改sonar-project.properties内容(具体依据项目设置字符集为主)

sonar.sourceEncoding=GBK

2-    若提示“内存溢出”

修改sonar-runner-1.0\bin\sonar-runner.bat的文件:

"%JAVA_HOME%\bin\java.exe"

上一行添加 set JAVA_OPTS=-Xms128m -Xmx512m

后面添加:%JAVA_OPTS%

 中间保留空格区分。

 

 

 

你可能感兴趣的:(Sonar入门学习札记)