一)sonar是什么
Sonar 是一個開源的質(zhì)量管理平臺,專注于從項目組合到類方法的持續(xù)的分析和測量技術(shù)質(zhì)量,它把代碼質(zhì)量相關(guān)軟件集成到一起統(tǒng)一管理?梢允褂瞄_源的插件來擴展Sonar,查看擴展可以訪問 open source plugins forge。以下是sonar環(huán)境及相關(guān)技術(shù)的一個關(guān)聯(lián)圖:
二)安裝與使用
windows下安裝
1)從官方網(wǎng)站(http://www.sonarsource.org)下載安裝包,并解壓;
2)創(chuàng)建數(shù)據(jù)庫,Sonar默認使用嵌入式Derby數(shù)據(jù)庫,為使用MySQL需首先創(chuàng)建一個sonar/sonar的UTF-8的mysql數(shù)據(jù)庫, 并授權(quán)訪問sonar庫。數(shù)據(jù)庫代碼如下:
CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
grant all privileges on sonar.* to 'sonar'@'%' identified by 'sonar';
flush privileges;
3) 修改sonar配置文件confsonar.properties中連接數(shù)據(jù)庫方式,將原來的連接方式注釋掉,啟用以下代碼;
sonar.jdbc.url: jdbc:mysql://IP:3306/sonar?useUnicode=true&characterEncoding=utf8
sonar.jdbc.driver: com.mysql.jdbc.Driver
sonar.jdbc.validationQuery: select 1
4) 在binwindows-x86-32目錄下找到對應(yīng)的批處理文件StartSonar.bat,啟動sonar,登陸http://localhost:9000;查看是否成功。
Linux下安裝
1)$ wget http://dist.sonar.codehaus.org/sonar-3.4.1.zip
$ unzip sonar-3.4.1.zip
2)和3)同上
4) $ ./sonar-3.4.1/bin/linux-x86-64/sonar.sh start,啟動sonar,登陸http://ip:9000;查看是否成功。
三)分析工程
1) 從這里下載sonar-ant-task-2.0.jar,將其放置在被分析Java工程的lib目錄下;
2) 在build.xml文件中加入以下代碼:
<project name="***" default="sonar" basedir="." xmlns:sonar="antlib:org.sonar.ant">
<!-- ========= 工程屬性定義 ========= -->
<property name="project.name" value="***"/>
<property name="sonar.src.dir" value="${basedir}/src" />
<property name="sonar.lib.dir" value="WebRoot/WEB-INF/lib"/>
<!--Sonar屬性定義 -->
<property name="sonar.projectKey" value="org.example:${project.name}" />
<property name="sonar.projectName" value="${project.name}" />
<property name="sonar.projectVersion" value="1.0" />
<property name="sonar.language" value="java" />
<property name="sonar.sources" value="${sonar.src.dir}" />
<property name="sonar.tests" value="${sonar.test.dir}" />
<property name="sonar.host.url" value="http://localhost:9000" />
<property name="sonar.jdbc.url"
value="jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8" />
<property name="sonar.jdbc.driverClassName" value="com.mysql.jdbc.Driver" />
<property name="sonar.jdbc.username" value="sonar" />
<property name="sonar.jdbc.password" value="sonar" />