介紹mysql
Sonar是一個用於代碼質量管理的開源平臺,用於管理Java源代碼的質量。經過插件機制,Sonar 能夠集成不一樣的測試工具,代碼分析工具,以及持續集成工具,好比pmd-cpd、checkstyle、findbugs、Jenkins。經過不一樣的插件對這些結果進行再加工處理,經過量化的方式度量代碼質量的變化,從而能夠方便地對不一樣規模和種類的工程進行代碼質量管理。同時 Sonar 還對大量的持續集成工具提供了接口支持,能夠很方便地在持續集成中使用 Sonar。此外,Sonar 的插件還能夠對 Java 之外的其餘編程語言提供支持,對國際化以及報告文檔化也有良好的支持。linux
SONAR安裝&運行web
下載地址:http://www.sonarqube.org/downloads/sql
運行:解壓後,根據平臺運行bin下不一樣目錄下的啓動腳本。對於linux x86_64,運行bin/linux-x86-64/sonar.sh。數據庫
可用命令:編程
./sonar.sh { console | start | stop | restart | status | dump }瀏覽器
安裝插件:服務器
SONAR中文包:http://docs.codehaus.org/display/SONAR/Chinese+Packmaven
將插件放置在${SONARHOME}/extensions/plugins下,重啓sonar後生效。注意版本號要匹配。本例中,SonarQube版本爲4.4,因此選擇插件版本爲1.8的。tcp
SONAR + Maven分析代碼質量
1)設置sonar使用的數據庫信息。
本例設置sonar使用mysql數據庫存儲分析數據。保存設置後,執行restart使其生效。
${SONARHOME}/conf/sonar.properties:
# Permissions to create tables, indices and triggers must be granted to JDBC user.# The schema must be created first.sonar.jdbc.username=rootsonar.jdbc.password=root# Comment the following line to deactivate the default embedded database.#sonar.jdbc.url=jdbc:h2:tcp://localhost:9092/sonar#----- MySQL 5.x# Comment the embedded database and uncomment the following line to use MySQLsonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true
2)須要在Maven的settings.xml設置sonar信息。
其中<sonar.host.url>http://localhost:9000</sonar.host.url>指明瞭sonar服務器的地址。因此在執行maven命令的時候,<sonar.host.url>指明的服務器必須已運行起來。
${MAVEN_HOME}/conf/settings.xml:
<profiles><profile><id>sonar</id><properties><sonar.jdbc.url>jdbc:mysql://192.168.198.128:3306/sonar</sonar.jdbc.url><sonar.jdbc.driver>com.mysql.jdbc.Driver</sonar.jdbc.driver><sonar.jdbc.username>root</sonar.jdbc.username><sonar.jdbc.password>root</sonar.jdbc.password><sonar.host.url>http://localhost:9000</sonar.host.url><!-- Sonar服務器訪問地址 --></properties></profile></profiles><activeProfiles><activeProfile>sonar</activeProfile></activeProfiles>
3)執行mvn sonar:sonar命令進行代碼分析。
咱們能夠在Eclipse中,對一個標準maven工程執行sonar。說明:因爲maven對sonar有很好的支持,會自動執行相應的腳本,因此無需在pom中添加sonar說明。
在執行maven進行sonar分析以前,必須確保sonar服務器已經處於運行狀態。本例中sonar服務器運行在localhost:9000上。
首先,執行sonar:sonar命令,最後獲得輸出以下輸出。若是輸出」BUILD SUCCESS「說明已經構建成功。
而後,咱們能夠在瀏覽器查看分析結果。
查看分析結果
對於使用sonar自帶服務器來講,在瀏覽器訪問:http://sonar_ip:9000,打開sonar結果頁面。可以使用admin/admin帳號登陸進入。
1)home頁
下面是home頁,右邊PROJECTS頁面列出了全部的工程。點擊紅色框內的連接,能夠查看詳細狀況。
2)工程總面板視圖
Dashboard包含了不少信息,好比程序統計信息、問題統計信息、技術債務、代碼複雜度、單元測試覆蓋度等。
3)Hotspots熱點區
在熱點區,能夠查看比較主要(hot)的信息。
4)問題視圖
點擊左側導航樹的「問題」,打開問題視圖頁。經過點擊問題數,以下紅框所示,能夠查看具體問題。
點擊問題數後,進入具體問題頁。SonarQube容許管理員對問題進行從新確認,好比能夠認爲一個打開的問題是誤判的。
下面是認爲一個問題是誤判後的狀況。
在問題頁面,能夠經過「狀態」搜索問題。下面是搜索「誤判」問題的結果。
5)技術債務
這裏列出了修復問題所須要的時間,所謂技術債務。出來混總要還的,遺留的問題越多,技術債務越大。
6)問題明細
這裏列出問題明細,包括問題嚴重級別,對應的問題數量,問題的描述。
結合Jenkins
能夠將SONAR服務器放置在任意master或者slave節點上,在進行sonar分析時,必須在maven的conf/settings.xml中配置sonar服務器信息。而後就能夠在jenkins中進行sonar分析了。
有兩種方法使jenkins與sonar結合:一種就是上面介紹的經過maven(jenkins -maven - sonar),另一種是直接在jenkins中調用sonar。