Sonar代码分析平台由三个部分组成:
a)Sonar服务
b)Sonar客户端
c)保存代码分析数据的数据库
说明:Sonar客户端常用的方式有Sonar-Runner、Maven插件直接跑、Sonar4Eclipse插件+Maven插件,本文介绍后两种方式。
Sonar介绍
Sonar (SonarQube)是一个开源平台,用于管理源代码的质量。Sonar 不只是一个质量数据报告工具,更是代码质量管理平台。支持的语言包括:Java、PHP、C#、C、Cobol、PL/SQL、Flex 等。
Sonar主要特点:
1.代码覆盖:通过单元测试,将显示哪行代码被选中
2.改善代码规则
3.搜索编码规则:按照名字,插件,激活级别和类别进行查询
4.项目搜寻:按照项目名字进行查询
5.对比数据:比较同一张表中的任何测量趋势
Sonar架构图:
下载Sonar
Sonar下载地址
安装Sonar
下载完后把压缩包解压到本地
如:D:\Program Files\sonar-3.7.2
汉化:把sonar-l10n-zh-plugin-1.6.jar放到目录D:\ProgramFiles\sonar-3.7.2\extensions\plugins
建立保存项目代码分析数据的数据库:
Sonar目前支持的数据库有Apatch Derby、H2、SQLSERVER、MySQL5.x MySQL6.x、Oralce 10g 、Oralce11g等,默认使用的是Derby。大部分JDBC驱动包已经在Sonar解压包内的D:\Program Files\sonar-3.7.2\extensions\jdbc-driver目录下,自己对应的找相应的数据库驱动,若没有则自行到网上下载。建议使用MySQL,我本机使用的测试数据库是MySQL5.5.17。安装MySQL及配置MySQL的过程这里不给出,如果不懂查请看源文档。
建立sonar数据库及数据库用户并授权:
>mysql –uroot –p
>CREATE DATABASE SONAR default CHARACTER SET UTF8 ;
>grant all on SONAR.* to ‘sonar’@’localhost’ identified by ‘sonar’;
> grant all on SONAR.* to ‘sonar’@’%’identified by ‘sonar’;
说明:如果你打算把MySQL和Sonar应用部署在同一台服务器上,可以不对sonar数据库授权远程访问。
配置Sonar
修改Sonar配置D:\Program Files\sonar-3.7.2\conf \sonar.properties,修改如下的行
sonar.web.host:10.108.67.11
sonar.web.port:80
sonar.web.context:/sonar
sonar.jdbc.username:sonar
sonar.jdbc.password:sonar
sonar.jdbc.url:jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true
sonar.jdbc.maxActive:20
sonar.jdbc.maxIdle:5
sonar.jdbc.minIdle:2
sonar.jdbc.maxWait:5000
sonar.jdbc.minEvictableIdleTimeMillis:600000
sonar.jdbc.timeBetweenEvictionRunsMillis:30000
sonar.notifications.delay=60
其他行注释掉。
注意:sonar.web.host配置为localhost时,浏览器访问只能localhost的方式访问,不能从IP访问,配置为指定IP时,不能使用localhost的方式访问,这个不知道是不是Sonar的bug?
配置maven项目,使其支持Sonar代码分析:
a)在项目根目录下的pom.xml文件中指定编译所采用的版本及编码方式,nps及scms都已经指定,所以不需要添加。
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>UTF-8</encoding>
</configuration>
<version>2.3.2</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.7.1</version>
</plugin>
</plugins>
</build>
b)在.m2/setting.xml中节点<profiles></profiles>加上数据库连接参数:
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.jdbc.url>jdbc:mysql://localhost:3306/sonar</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://10.108.67.11:80/sonar</sonar.host.url>
</properties>
</profile>
至此,Sonar安装及配置完毕,可以从D:\Program Files\sonar-3.7.2\bin\windows-x86-64\ StartSonar.bat启动Sonar
在浏览器中访问:查看效果
分析项目代码质量
Cmd控制台进入需要分析的项目根目录,如:E:\Works\csair\src\scms-project ,运行
a)mvn clean install –DskipTests=true
b)mvn sonar:sonar
编译分析完毕之后在浏览器中查看分析结果
--华丽的分割线,可以不安装Sonar4 Eclipse插件--
Sonar4 Eclipse插件安装
方法1:
EclispeàHelpàInstall New SoftwareàAdd
Name:Sonar4Eclipse
Location: http://dist.sonar-ide.codehaus.org/eclipse
之后按提示下一步下一步步之类的就可以安装完毕
方法2:
到网站把文件夹、下的jar包全部下载到本地,然后放到ecipse的对应目录下
Sonar4Eclipse插件配置:
EclipseàProjectàClean重新编译项目
EclipseàWindow->Preferences->sonar->Serversàadd,添加sonarserver如下
url:
username:admin
password:admin
说明:url必须和sonar配置文件D:\Program Files\sonar-3.7.2\conf \sonar.properties中的参数一致,否则连接失败!测试连接是否连通需要先在D:\ProgramFiles\sonar-3.7.2\bin\XXX里启动sonar服务。
Sonar对Maven项目的代码分析:
a)对项目子目录右键 -> Configure -> Associate with Sonar...
b)选择配置的sonar、点击find on server按钮获得groupid和artifactid,点击finish按钮进行分析。(在步骤a后的界面之后的操作)
c) 将eclipse切换到sonarperspective查看结果
至此Sonar的Eclispe插件安装完毕,尽情的使用Sonar代码分析平台带来的便利吧。
说明:本文档只是在windows环境下的安装及配置说明文档,由于我们的项目scms、nps的源码都很大,每次用sonar进行分析耗时都比较长,建议保存的分析结果是本地数据库,这样可以保证项目组各成员之间的分析结果相互独立。等时间充裕之后再尝试在Linux平台下建立一个总的Sonar代码分析平台,到时候就可以以时间为坐标的对我们的项目进行质量统一分析管理了。