天天看點

開源的Java源代碼管理平台/UT覆寫率:Sonar

一。什麼是Sonar

  Sonar是 一個開源平台,用于管理Java源代碼的品質。“一個品質資料報告工具+代碼品質管理平台”http://docs.codehaus.org/display/SONAR/Documentation

  主要特點

  ·                       代碼覆寫:通過單元測試,将會顯示哪行代碼被選中

  ·                       改善編碼規則

  ·                       搜尋編碼規則:按照名字,插件,激活級别和類别進行查詢

  ·                       項目搜尋:按照項目的名字進行查詢

  ·                       對比資料:比較同一張表中的任何測量的趨勢

  整體架構如下: 

開源的Java源代碼管理平台/UT覆寫率:Sonar

  Sonar項目分析頁面預覽: 

開源的Java源代碼管理平台/UT覆寫率:Sonar

  二.安裝:

  1.下載下傳壓縮包,在win/linux下面均可以運作。

  自身內建jetty+java記憶體DB,一鍵啟動。預設啟動到http://localhost:9000

  正式使用可以配置mysqlDB做持久存儲。當然容器也可以切換成tomcat。 具體看官站文檔。

  Notice:Deploy on Tomcat application server,A minimum heap size of 512Mo is required. 吃記憶體大戶

  2.環境依賴:

  JDK5++

  Maven2.09 ++

  三。怎麼分析項目

  1)maven項目:(簡單的講就是帶了pom.xml) 

開源的Java源代碼管理平台/UT覆寫率:Sonar

  E:\>cd ws1\test 然後運作:

  1.mvn clean install -Dtest=false -DfailIfNoTests=false (第一步其實可以忽略)        2. mvn sonar:sonar之後再回到頁面上,檢視項目分析結果。 (第2步的mvn操作其實可以內建到pom.xml裡面作為一個

  2)非maven項目:

  方法:給項目放一個pom.xml,不需要寫複雜的依賴和編譯操作,簡單copy如下配置,改改項目名和java代碼的目錄路徑即可! 

1 <project xmlns="http://maven.apache.org/POM/4.0.0"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

2   <modelVersion>4.0.0</modelVersion>

3   <groupId>song</groupId>

4   <artifactId>test</artifactId>

5   <name>test</name>

6   <version>1.1.0</version>

7   <build>

8         <sourceDirectory>src</sourceDirectory>

9         <outputDirectory>bin</outputDirectory>

10         <plugins>

11            <plugin>              <groupId>org.apache.maven.plugins</groupId>

12               <artifactId>maven-compiler-plugin</artifactId>

13               <configuration>

14                   <source>1.5</source>

15                   <target>1.5</target>

16                   <excludes>

17                       <exclude>**/*.*</exclude>

18                   </excludes>

19               </configuration>

20            </plugin>

21         </plugins>

22   </build>

23   <properties>

24       <sonar.dynamicAnalysis>false</sonar.dynamicAnalysis>

25   </properties>

26 </ project >

  詳細文檔在:http://docs.codehaus.org/display/SONAR/Collect+data#Collectdata-Mavenprojects

  3)将sonar內建到maven中

  編輯maven中config目錄下的setting檔案activeByDefault,Example 

1 <settings>

2     <profiles>

3         <profile>

4             <id>sonar</id>

5             <activation>

6                 <activeByDefault>true</activeByDefault>

7             </activation>

8             <properties>

9                 <!-- EXAMPLE FOR MYSQL -->

10                 <sonar.jdbc.url>

11                   jdbc:mysql://localhost:3306/sonar?useUnicode=true&amp;characterEncoding=utf8

12                 </sonar.jdbc.url>

13                 <sonar.jdbc.driver>com.mysql.jdbc.Driver</sonar.jdbc.driver>

14                 <sonar.jdbc.username>sonar</sonar.jdbc.username>

15                 <sonar.jdbc.password>sonar</sonar.jdbc.password>

16                 <!-- SERVER ON A REMOTE HOST -->

<sonar.host.url>http://myserver:1234 </sonar.host.url>

18             </properties>

19         </profile>

20      </profiles>

21 </settings> 

  當然,這樣做的代價就是:export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=256m" maven編譯的記憶體也需要加到512M

  四。總結

  1.作為代碼分析工具來使用,其實很簡單。下載下傳standalone包直接運作,不需要配置db和容器,直接找到項目分析就是。(用maven管理的項目直接分析,非maven項目按上面的方法加一個最精簡的pom.xml配置即可。sonar分析代碼的時候并不需要複雜的jar包依賴,指定了源代碼目錄即可)

  2.作為持續性的代碼監控,比如關心代碼量的變更,和品質走向,那麼配置DB就是必須的了。而且要準備1.5G+空閑記憶體的機器跑sonar,在觸發到代碼分析的時候,對CPU的消耗也是比較大的。

  3.将sonar內建到持續內建是非常不明智的。會導緻每次編譯都去分析一次。比較建議做成crontab的腳本,一個星期用定時腳本啟動、分析那麼一兩回就可以了。

轉載于:https://blog.51cto.com/babyhe/383517