原文地址:https://blog.csdn.net/luckystar689/article/details/53871821
------------------------------------------------------------------------
【前言】
? ?bug越改越多,程序一換數據就崩,這就是目前我們系統的一個現狀。在這之前,進行過前后臺代碼規范整理,代碼判空等工作,但這是人工檢測的,有點慢,效率也比較低。當重新導入數據之后,模塊大多都起不來了。于是乎,忍無可忍,我們就用了強大的代碼質量工具——sonar來自動檢測我們的代碼,因為我們要寫更安全,更優雅的代碼。
?
? ?【sonar簡介】
? ? sonar(SonarQube)是一個開源平臺,用于管理源代碼的質量,它不僅是一個質量數據報告工具,更是代碼質量管理平臺。它通過插件的形式來管理代碼,它支持的語言包括:Java,PHP,C#,C等。
?
? ?【主要特點】
? ?sonar可以從以下七個維度來檢測代碼質量:
?
? ?1、不遵循代碼標準
? ? sonar可以通過PMD,CheckStyle,Findbugs等代碼規則檢測工具規范代碼的編寫;
?
? ?2、潛在的缺陷
? ? sonar可以通過PMD,CheckStyle,Findbugs等代碼規則檢測工具檢測出潛在的缺陷;
?
? ?3、糟糕的代碼復雜度分布
? ? 文件、類、方法等,如果復雜度過高將難以改變,這使得開發熱女難以理解它們,且如果沒有自動化的單元測試,對于程序中的任何組件的改變都將可能導致需要全面的回歸測試;
?
? ?4、重復
? ? 顯然程序中包含大量復制粘貼的代碼質量低下的,sonar可以展示源碼中重復嚴重的地方;
?
? ?5、注釋不足或者過多
? ? 沒有注釋將使代碼可讀性變差,特別是當不可避免地出現人員變動時,程序的可讀性將大幅度下降;
?
? ?6、缺乏單元測試
? ? sonar可以很方便地統計并展示單元測試覆蓋率;
?
? ?7、糟糕的設計
? ?通過sonar可以找出循環,展示包與包、類與類之間的相互依賴關系,可以展示自定義的架構規則。通過sonar可以管理第三方的jar包,可以利用LCOM4檢測單個任務規則的應用秦高,檢測耦合。
?
? ?【sonar使用】
? ? 由于架構師已經給咱們裝好了sonarQube,咱們只需在Maven的配置文件的profiles節點中添加一個sonar的profile節點,就可以直接在項目中執行Maven build命令——clean verify soanr:sonar使用了,執行完了之后,在服務器上就可以看到我們測試的項目了:
?
? ?profile節點代碼:
? ?
-
<profile>
-
<id>sonar</id>
-
<activation>
-
<activeByDefault>true</activeByDefault>
-
</activation>
-
<properties>
-
<!-- Optional URL to server. Default value is http://localhost:9000 -->
-
<sonar.host.url>
-
http://192.168.22.220:9000
-
</sonar.host.url>
-
</properties>
-
</profile>
?
? ?測試完成的代碼:
?
?
? ?
? ?A為最高級別,如果這幾項全是A的話,那說明你寫的代碼真的是太棒了!!!
?
? ?點開每個項目,查看詳情:
???1、bug,duplicatinos等列表:
? ??
?
? ?2、點開具體的某一項,顯示所有的bug,或者有問題的地方。再繼續往下點,就會看到我們有問題的代碼了,也會給出我們相應的解決方案。
?
? ?
?
? 【總結】
?
? ?通過兩天的改bug,其實也就是改成規范的代碼,說實在的,在改之前,我還不知道規范的代碼原來應該是這樣寫的,雖然之前那樣寫也能夠得到想要的結果,但是不是很安全,有潛在的缺陷。
?
? ?這兩天,沒學啥技術,但是也漲了不少知識,我的收獲總體來說主要有以下三點:
?
???1、之前咱們看到的代碼亂,寫法不規范,重復性高等。這些代碼sonar都可以檢測到,并給出我們正確的解決方案,我們在解決問題的同時,也知道了規范性的代碼應該如何寫。
? ?2、sonarqube代碼質量管理平臺,是全英的,在解決問題的同時,我們又學到了英語。
? ?3、在這樣反復的測試,修改,再測試的過程中,能夠提高我們編寫代碼以及閱讀代碼的能力。
?
?
?