上一篇我們講述了Sonar和Maven的結合來達到代碼質量審查的效果,但是由于maven的學習成本高,并不是任何項目都適合,因此本篇我們講述一下如何通過Sonar和ant的結合來進行代碼質量審查。
 
目前來說,Sonar和Ant的集成沒有做到Sonar和Maven的集成這么好,因此在使用過程中需要多寫一些腳本。我們下面來介紹一下使用步驟吧:
  1、下載Sonar并解壓到任何目錄,注意目錄中不允許有中文;
  2、點擊bin\windows-x86-32\StartSonar.bat啟動Sonar;
  3、下載一個ant插件:sonar-ant-task-1.1.jar,并存放到某個路徑,ant腳本需要訪問這個文件。
  4、編寫一個ant腳本,如下:

<?xml version="1.0" encoding="UTF-8" ?>

<project name="framework-client" default="sonar" basedir=".">
  
 <property name="project.name" value="framework-client"/>
 <property name="src.dir" value="${basedir}/src/main/java" />
 <property name="lib.dir" value="${basedir}/lib"/>
 
   <!-- Out-of-the-box those parameters are optional -->
   <!-- EXAMPLE FOR MYSQL    
   <property name="sonar.jdbc.url"
        value="jdbc:mysql://localhost:3306/sonar?useUnicode=true&amp;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" />
   -->

   <!-- SERVER ON A REMOTE HOST -->
   <!--
   <property key="sonar.host.url" value="http://myserver:1234" />
   -->
 
   <!-- Define the Sonar task if this hasn't been done in a common script -->
   <taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml">
     <classpath>
       <pathelement location="${lib.dir}/sonar-ant-task-1.1.jar"/>
     </classpath>
   </taskdef>
  
   <!-- Add the target -->
   <target name="sonar">
     <!-- list of mandatories Sonar properties -->
     <property name="sonar.sources" value="${src.dir}" />
    <property name="sonar.projectKey" value="org.example:${project.name}" />

     <!-- list of optional Sonar properties -->
    <!--
     <property key="sonar.projectName" value="this value overrides the name defined in Ant root node" />
     <property key="sonar.binaries" value="list of directories which contain for example the Java bytecode" />
     <property key="sonar.tests" value="list of test source directories separated by a comma" />
     <property key="sonar.libraries" value="list of paths to libraries separated by a comma (These libraries are for example used by the Sonar Findbugs plugin)" />
    -->
    
     <sonar:sonar key="${sonar.projectKey}" version="0.9" xmlns:sonar="antlib:org.sonar.ant"/>

    </target>
</project>

  5、運行ant腳本,看到build successfully的提示后,就可以訪問:http://localhost:9000/來查看代碼質量審查結果了。

上述是使用Sonar和ant最簡單的步驟,用了Sonar自帶的嵌入式數據庫Derby,以及standalone的應用服務器,當然也支持使用其它數據庫,比如:mysql,只要修改一下sonar.properties的配置文件,以及在ant腳本中配置一下連接數據庫的方式。另外也可以使用tomcat、jboss等應用服務器來發布Sonar應用,只要運行一下Sonar自帶的一個腳本:build-war.bat就可以了,這里不再詳述。