sonar簡介:
sonar是一個用於代碼質量管理的開源平臺,用於管理源碼質量。目前通過插件的形式,可以支持包括java,c#,c,c++,PL/SQL,js,groovy等二十多種變成語言的代碼質量管理與檢測。
sonar代碼檢測維度:
複雜度分佈:文件、類或者方法等,如果複雜度過高將難以改變,這會是開發人員難以理解它們;
重複:檢查程序中包含大量複製粘貼的代碼,sonar可以展示源碼中重複嚴重的地方;
缺乏單元測試:sonat可以方便的統計並展示單元測試的覆蓋率;
沒有代碼標準:可以自己定製代碼標準來規範代碼編寫;
沒有足夠的或者過多的註釋;
潛在的bug;
糟糕的設計:通過sonar可以找出循環,展示包與包、類與類之間的相互依賴關係,可以檢測自定義的架構規則,可以管理第三方的jar包等等。
有興趣可以看看Spaghetti Design:http://docs.codehaus.org/display/SONAR/Spaghetti+Design
sonarqube安裝:
首先,你需要有java環境;
其次,數據庫:sonarqube較高版本使用的h2,不需要自己建庫,但是版本不高的使用的mysql數據庫,所以,你需要確定你本地已經安裝mysql數據庫。
sonarqube下載:http://www.sonarqube.org/downloads/,目前最新是sonarqube 5.4
如果你覺得看英文不太舒服,可以下載中文補丁包:http://docs.codehaus.org/display/SONAR/Chinese+Pack
接下來說說較低版本的sonarqube的相關配置,主要是數據庫部分,較高版本不需要配置數據庫。
數據庫配置:
進入數據庫命令並執行以下指令:
mysql> CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql> CREATE USER 'sonar' IDENTIFIED BY 'sonar';
mysql> GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';
mysql> GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';
mysql> FLUSH PRIVILEGES;
想看sonar相關配置,可以去sonarqube文件下的conf/sonar.properties查看
sonar使用:
只介紹免安裝的sonarqube的使用方法,安裝比較麻煩,我比較懶。
去上面sonarqube的下載地址下載,解壓文件直接可以使用,較低版本需要修改conf/sonar.properties數據庫相關配置,將原來sonar.jdbc這個爲前綴的被註釋掉的配置取消註釋。
其實,sonar與maven配置使用,需要在setting.xml中假如如下代碼:
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.jdbc.url>
jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8
</sonar.jdbc.url>
<sonar.jdbc.driver>com.mysql.jdbc.Driver</sonar.jdbc.driver>
<sonar.jdbc.username>sonar</sonar.jdbc.username>
<sonar.jdbc.password>sonar</sonar.jdbc.password>
<sonar.host.url>http://localhost:9000</sonar.host.url>
</properties>
</profile>
配置完以上的東西就可以啓動sonar並使用了,很簡單吧。
sonar啓動:去sonarqube/bin/os系統(mac/windows/linux)/StartSonar.bat,啓動。有問題可以查看相關sonarqube啓動日誌:sonarqube/logs/sonar.log
啓動之後,可以去看sonarqube ui了,訪問http://localhost:9000
啓動之後就該用sonar來檢查代碼了,到某maven工程下執行mvn sonar:sonar,build success之後可以去sonarqube ui上看結果。