一。什麼是Sonar
Sonar是 一個開源平台,用于管理Java源代碼的品質。“一個品質資料報告工具+代碼品質管理平台”http://docs.codehaus.org/display/SONAR/Documentation
主要特點
· 代碼覆寫:通過單元測試,将會顯示哪行代碼被選中
· 改善編碼規則
· 搜尋編碼規則:按照名字,插件,激活級别和類别進行查詢
· 項目搜尋:按照項目的名字進行查詢
· 對比資料:比較同一張表中的任何測量的趨勢
整體架構如下:
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)
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&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