sonar 初體驗

Sonar介紹

SonarQube官網,點這裏

以下本部分借鑑與bolg,地址在這裏

Sonar是一個用於代碼質量管理的開源平臺,用於管理源代碼的質量,可以從七個維度檢測代碼質量

通過插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十幾種編程語言的代碼質量管理與檢測

sonarQube能帶來什麼?

Developers' Seven Deadly Sins
1.糟糕的複雜度分佈
  文件、類、方法等,如果複雜度過高將難以改變,這會使得開發人員難以理解它們,

  且如果沒有自動化的單元測試,對於程序中的任何組件的改變都將可能導致需要全面的迴歸測試

2.重複
  顯然程序中包含大量複製粘貼的代碼是質量低下的

  sonar可以展示源碼中重複嚴重的地方

3.缺乏單元測試

  sonar可以很方便地統計並展示單元測試覆蓋率

4.沒有代碼標準
  sonar可以通過PMD,CheckStyle,Findbugs等等代碼規則檢測工具規範代碼編寫
5.沒有足夠的或者過多的註釋
  沒有註釋將使代碼可讀性變差,特別是當不可避免地出現人員變動時,程序的可讀性將大幅下降
  而過多的註釋又會使得開發人員將精力過多地花費在閱讀註釋上,亦違背初衷
6.潛在的bug

  sonar可以通過PMD,CheckStyle,Findbugs等等代碼規則檢測工具檢測出潛在的bug

7.糟糕的設計(原文Spaghetti Design,意大利麪式設計)
  通過sonar可以找出循環,展示包與包、類與類之間的相互依賴關係
  可以檢測自定義的架構規則
  通過sonar可以管理第三方的jar包
  可以利用LCOM4檢測單個任務規則的應用情況
  檢測耦合

關於Spaghetti Design:http://docs.codehaus.org/display/SONAR/Spaghetti+Design

通過sonar可以有效檢測以上在程序開發過程中的七大問題

sonar安裝

需要用到mysql、jdk

sonar下載,去官網。

解壓後,選中對應你的系統的版本,啓動即可,例如我的是:

啓動前先修改以下配置,配置文件在:解壓包下的conf文件加下,sonar.properties

主要修改如下:

#數據庫用戶名及密碼
sonar.jdbc.username=root
sonar.jdbc.password=cisoft

#數據地址及數據庫名,需要新建一個名爲sonar的數據庫,最好單獨創建,因爲自帶很多很多張表
sonar.jdbc.url=jdbc:mysql://127.0.0.1:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
#啓動內存之類的設置
sonar.web.javaOpts=-Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError
#訪問路徑,以下標示本機
sonar.web.host=0.0.0.0
#訪問路徑名
sonar.web.context=/sonar
#訪問端口
sonar.web.port=9000
#設置爲true標示打開更新插件的功能
sonar.updatecenter.activate=true

 

啓動方法:

訪問路徑爲:http://localhost:9000  賬號:admin 密碼:admin

第一次啓動會有引導,跟着引導步驟做即可,記得要吧token記錄下來,後續要用到

登陸成功後

添加或更新插件方法:

然後就可以用sonar來檢測你的項目啦,步驟:

在命令行,去到你的項目路徑下,運行以下命令

mvn sonar:sonar \
  -Dsonar.host.url=http://localhost:9000/sonar \
  -Dsonar.login=a2e4172fc1113590504cb5a9605260ea7dd9e73a



a2e4172fc1113590504cb5a9605260ea7dd9e73a就是之前說的token了。運行了,自動執行,當你看到build success說明成功,如果build失敗,看失敗原因,一步一步結局。最後再次刷新你的http://localhost:9000,點擊項目菜單,你會看到剛剛執行代碼質量檢測的項目已經出現了,就可以查看你的項目代碼質量怎麼樣啦~

如下:

 

自此,初體驗結束,當然還有很多很多需要深入研究,後續在總結

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章