代碼質量管理的開放平臺:Sonar
Sonar 概述
Sonar 是一個用于代碼質量管理的開放平臺。通過插件機制,Sonar 可以集成不同的測試工具,代碼分析工具,以及持續集成工具。
與持續集成工具(例如 Hudson/Jenkins 等)不同,Sonar 并不是簡單地把不同的代碼檢查工具結果(例如 FindBugs,PMD 等)直接顯示在 Web 頁面上,而是通過不同的插件對這些結果進行再加工處理,通過量化的方式度量代碼質量的變化,從而可以方便地對不同規模和種類的工程進行代碼質量管理。
在對其他工具的支持方面,Sonar 不僅提供了對 IDE 的支持,可以在 Eclipse 和 IntelliJ IDEA 這些工具里聯機查看結果;同時 Sonar 還對大量的持續集成工具提供了接口支持,可以很方便地在持續集成中使用 Sonar。
此外,Sonar 的插件還可以對 Java 以外的其他編程語言提供支持,對國際化以及報告文檔化也有良好的支持。
Sonar 安裝
到Sonar官網下載最新的發行版,下載zip包后解壓到沒有中文名的目錄下,默認集成了jetty容器,可以直接啟動提供服務,也可以通過腳本構建為war包,部署在tomcat容器中。
bin目錄下選擇相應平臺,腳本啟用。(Windows點擊StartSonar.bat)
然后在瀏覽器中訪問:http://localhost:9000/
Sonar 添加插件
插件添加方式:
- 插件的下載地址為:http://docs.codehaus.org/display/SONAR/Plugin+Library,將下載后的插件上傳到${SONAR_HOME}extensions\plugins目錄下,重新啟動sonar。
- 在Sonar控制面板也可以添加插件 </ol>
- Java [sonar-java-plugin]:java源代碼解析,計算指標等
- Squid [sonar-squid-java-plugin]:檢查違反Sonar定義規則的代碼
- Checkstyle [sonar-checkstyle-plugin]:使用CheckStyle檢查違反統一代碼編寫風格的代碼
- FindBugs [sonar-findbugs-plugin]:使用FindBugs檢查違反規則的缺陷代碼
- PMD [sonar-pmd-plugin]:使用pmd檢查違反規則的代碼
- Surefire [sonar-surefire-plugin]:使用Surefire執行單元測試
- Cobertura [sonar-cobertura-plugin]:使用Cobertura獲取代碼覆蓋率
- JaCoCo [sonar-jacoco-plugin]:使用JaCOCO獲取代碼覆蓋率 </ol>
- mvn clean install
- mvn sonar:sonar </ol>
- 下載http://repository.codehaus.org/org/codehaus/sonar-plugins/l10n/sonar-l10n-zh-plugin/1.2/sonar-l10n-zh-plugin-1.2.jar
- 把下載的壓縮包放到sanar安裝目錄下的/extensions/plugins 中
- 重啟Sonar server </ol>
Sonar默認集成了Java Ecosystem插件,該插件是一組插件的合集
Sonar 集成項目
提供Maven項目的集成,其他結構的項目暫不清楚。
進入項目根目錄下,先編譯安裝,然后利用maven集成的sonar插件發布。
Maven 插件會自動把所需數據(如單元測試結果、靜態檢測結果等)上傳到 Sonar 服務器上,需要說明的是,關于 Sonar 的配置并不在每個工程的 pom.xml 文件里,而是在 Maven 的配置文件 settings.xml 文件里,具體配置如下:
<profiles> <profile> <id>sonar</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <!-- optional URL to server. Default value is http://localhost:9000 --> <sonar.host.url>http://localhost:9000/</sonar.host.url> </properties> </profile> </profiles>
集成發布成功:
Sonar 數據庫
Sonar默認使用h2文本數據庫,數據庫連接的配置在 conf目錄下的 sonar.properties文件 或者在項目發布時通過maven配置參數覆蓋Sonar 漢化
結束語
Sonar 為代碼的質量管理提供了一個平臺,對傳統的代碼靜態檢測如 PMD、FindBugs 等工具進行整合,可以說是目前最強大的代碼質量管理工具之一。