1. 代码质量七宗罪
Sonar是一个代码质量管理系统,它的帮助文档开篇明义,提出了代码质量的七宗罪,总结的比较到位,不妨一看:
3. 复制粘贴(Duplications)
4. 缺乏单元测试(Lack of Unit Tests)
6. 意大利面式设计(Spaghetti Design)
2. 安装Sonar服务器
首先看一下sonar对安装环境的需求,见文档:
http://docs.codehaus.org/display/SONAR/Requirements
2.1. 安装JRE
不再详述。
2.2. 安装数据库
Sonar支持MySQL、Oracle、PostgreSQL、SQL Server等多种数据库,本文选取MySQL。
参考文档:http://docs.codehaus.org/display/SONAR/Installing
2.3. 配置数据库
Sonar启动前需要数据库中有特定的用户名和数据库。以下为MySQL的配置脚本。
#Create SonarQubedatabase and user.
#
#Command: mysql-u root-p < create_database.sql
#
CREATEDATABASE sonarCHARACTERSET utf8COLLATE utf8_general_ci;
CREATEUSER'sonar'IDENTIFIED BY'sonar';
GRANTALL ON sonar.* TO'sonar'@'%'IDENTIFIED BY'sonar';
GRANTALL ON sonar.* TO'sonar'@'localhost'IDENTIFIED BY'sonar';
FLUSH PRIVILEGES;
2.4. 下载并配置sonar
本文下载的是SonarQube 3.7.4 LTS,不需要下载其他工具。
修改sonar-3.7.4/conf/sonar.properties文件中的sonar.jdbc.url、sonar.jdbc.username和sonar.jdbc.password属性,具体要参照前面mysql服务器的配置。
本文中设置的值是:
sonar.jdbc.username: sonar
sonar.jdbc.password: sonar
sonar.jdbc.url: jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8
sonar.properties配置文件还可以设置其他项,比如HTTP监听端口,暂时保持默认。
2.5. 启动sonar服务器
执行sonar-3.7.4/bin/目录下指定操作系统的脚本,启动sonar。
Sonar启动后:
(1)会连接mysql服务器,并在sonar数据库中建立相关的表格;
(2)启动一个http服务器,监听端口为9000,当然这个端口号是可以配置的。
当然,Sonar也可以作为服务安装到操作系统中,本文不再描述。
2.6. 登录服务器
通过浏览器登录sonar服务器,可以对sonar进行配置、安装插件等。
URL地址默认是http://{sonar_server_ip}:9000。
默认的用户名和密码是admin/admin。
本文保持sonar的默认配置。
3. 利用maven向sonar服务器提交分析任务
可以有多种方法向sonar提交分析任务,本文利用maven。注意sonar 3.7.4只支持maven3.1版本。
3.1. 修改maven的settings.xml文件。
参考文档:http://docs.codehaus.org/display/SONAR/Installing+and+Configuring+Maven
jdbc:mysql://192.168.150.11:3306/sonar?useUnicode=true&characterEncoding=utf8
sonar
sonar
http://192.168.150.11:9000
3.2. 修改pom.xml文件,以增加mysql驱动
mysql
mysql-connector-java
5.1.24
3.3. 提交分析任务
参考文档:http://docs.codehaus.org/display/SONAR/Analyzing+with+Maven
执行以下maven命令:
mvn clean install
mvn sonar:sonar
注意sonar:sonar必须单独执行。如果把sonar:sonar和其他target混在一起,比如mvn clean install sonar:sonar,可能导致不可预期的问题。
3.4. 查看分析结果
通过浏览器登录sonar服务器,查看分析结果。