SonarQube(sonar)是一個開源平臺,用於管理源代碼的質量。 SonarQube不只是一個質量數據報告工具,更是代碼質量管理平臺。 支持java, C#, C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等等二十幾種編程語言的代碼質量管理與檢測。 SonarQube可以從以下七個維度檢測代碼質量,而作爲開發人員至少需要處理前5種代碼質量問題。
(1) 不遵循代碼標準
SonarQube可以通過PMD,CheckStyle,Findbugs等等代碼規則檢測工具規範代碼編寫。
(2) 潛在的缺陷
SonarQube可以通過PMD,CheckStyle,Findbugs等等代碼規則檢測工具檢 測出潛在的缺陷。
(3) 糟糕的複雜度分佈
文件、類、方法等,如果複雜度過高將難以改變,這會使得開發人員 難以理解它們, 且如果沒有自動化的單元測試,對於程序中的任何組件的改變都將可能導致需要全面的迴歸測試。
(4) 重複
顯然程序中包含大量複製粘貼的代碼是質量低下的,SonarQube可以展示 源碼中重複嚴重的地方。
(5) 註釋不足或者過多
沒有註釋將使代碼可讀性變差,特別是當不可避免地出現人員變動時,程序的可讀性將大幅下降 而過多的註釋又會使得開發人員將精力過多地花費在閱讀註釋上,亦違背初衷。
(6) 缺乏單元測試
SonarQube可以很方便地統計並展示單元測試覆蓋率。
(7) 糟糕的設計
通過SonarQube可以找出循環,展示包與包、類與類之間的相互依賴關係,可以檢測自定義的架構規則 通過SonarQube可以管理第三方的jar包,可以利用LCOM4檢測單個任務規則的應用情況, 檢測耦合。
使用SonarQube進行掃描,需要進行環境配置,具體配置方式參看:
https://my.oschina.net/shuming/blog/2052375
具體掃描,配置。
需要到你要掃描的工程根目錄下,創建文件:sonar-project.properties。
我配置如下(我用到是公司的php工程):
sonar.projectKey=sonar-runner-simple
sonar.projectName=MyProject
sonar.projectVersion=1.0
sonar.sources=.
sonar.language=php
sonar.sourceEncoding=UTF-8
然後啓動SonarQube之後,打開http://localhost:9000/ .
創建一個新工程,點擊Generate:
然後再點擊continue:
然後進行選擇:
最後的生成的命令,需要在命令行cd到我的php工程路徑,然後執行該命令:
最後就可以把結果,上傳到http://localhost:9000/。
PS:可以在命令行加 "-X" 查看到詳細的掃描信息。但是有時又會報錯:
ERROR: Error during SonarQube Scanner execution
ERROR: Failed to upload report - 500: An error has occurred. Please contact your administrator
解決辦法:修改(或設置)mysql的my.cnf內的max_allowedpacket值,或者直接執行命令:set global max_allowed_packet=1000*1024 *1024 。
然後再重啓SonarQube服務(注意:如果是win系統,需要到任務管理器關閉掉全部java.exe進程) 。