天天看點

代碼總是被嫌棄寫的太爛?裝上這個 IDEA 插件再試試

SonarLint(Sonar) 代碼品質管理

Sonar是一個用于代碼品質管理的開源平台,用于管理源代碼的品質 通過插件形式,可以支援包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十幾種程式設計語言的代碼品質管理與檢測

​​

代碼總是被嫌棄寫的太爛?裝上這個 IDEA 插件再試試

​​

Sonar可以從以下七個次元檢測代碼品質,而作為開發人員至少需要處理前5種代碼品質問題

1、不遵循代碼标準sonar可以通過PMD,CheckStyle,Findbugs等等代碼規則檢測工具規範代碼編寫

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

3、糟糕的複雜度分布檔案、類、方法等,如果複雜度過高将難以改變,這會使得開發人員難以了解它們 且如果沒有自動化的單元測試,對于程式中的任何元件的改變都将可能導緻需要全面的回歸測試

4、重複顯然程式中包含大量複制粘貼的代碼是品質低下的,sonar可以展示源碼中重複嚴重的地方

5、注釋不足或者過多沒有注釋将使代碼可讀性變差,特别是當不可避免地出現人員變動時,程式的可讀性将大幅下降 而過多的注釋又會使得開發人員将精力過多地花費在閱讀注釋上,亦違背初衷

6、缺乏單元測試sonar可以很友善地統計并展示單元測試覆寫率

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

SonarLint

SonarLint是一個代碼品質檢測插件,可以幫助我們檢測出代碼中的壞味道

下載下傳與安裝

代碼總是被嫌棄寫的太爛?裝上這個 IDEA 插件再試試

在需要檢測的單個檔案或者單個項目上右鍵 --> Analyze --> Analyze with SonarLint

或者選中檔案或目錄,點選菜單欄 Analyze --> Analyze with SonarLint

代碼總是被嫌棄寫的太爛?裝上這個 IDEA 插件再試試

我們還可以禁用某些規則

代碼總是被嫌棄寫的太爛?裝上這個 IDEA 插件再試試

如果需要同步自定義的規則時,可以綁定到SonarQube

代碼總是被嫌棄寫的太爛?裝上這個 IDEA 插件再試試
代碼總是被嫌棄寫的太爛?裝上這個 IDEA 插件再試試
代碼總是被嫌棄寫的太爛?裝上這個 IDEA 插件再試試

檢視檢測的結果

代碼總是被嫌棄寫的太爛?裝上這個 IDEA 插件再試試

對于代碼中的警告我們不能視而不見

代碼總是被嫌棄寫的太爛?裝上這個 IDEA 插件再試試

有了代碼品質檢測工具以後,在一定程度上可以保證代碼的品質。

對于每一個問題,SonarLint都給出了示例,還有相應的解決方案,教我們怎麼修改,極大的友善了我們的開發。

比如,對于日期類型盡量用LocalDate、LocalTime、LocalDateTime,還有重複代碼、潛在的空指針異常、循環嵌套等等問題。

有了代碼規範與品質檢測工具以後,很多東西就可以量化 了,比如bug率、代碼重複率等,還可以自定義各種名額,友善管理人員檢視。

為此,我們需要一個平台來記錄每次檢測分析的結果,這樣就可以進行分析和統計,并且可以直覺的看到這一切。

于是,SonarQube 閃亮登場!

SonarQube

SonarQube是一個開源的代碼品質管理平台

代碼總是被嫌棄寫的太爛?裝上這個 IDEA 插件再試試
代碼總是被嫌棄寫的太爛?裝上這個 IDEA 插件再試試
代碼總是被嫌棄寫的太爛?裝上這個 IDEA 插件再試試
代碼總是被嫌棄寫的太爛?裝上這個 IDEA 插件再試試

解壓&本地啟動

https://docs.sonarqube.org/latest/setup/get-started-2-minutes/

unzip sonarqube-7.7.zip
cd sonarqube-7.7
bin/[OS]/sonar.sh consol      
代碼總是被嫌棄寫的太爛?裝上這個 IDEA 插件再試試

啟動成功後,通路 http://localhost:9000 用管理者賬号(admin/admin)登入

代碼總是被嫌棄寫的太爛?裝上這個 IDEA 插件再試試

接下來,為了把檢測的結果傳到伺服器,我們需要配置一個Scanner

https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Maven      

這裡我在項目中添加 sonar-maven-plugin 插件

<build>
<plugins>
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.6.0.1398</version>
</plugin>
</plugins>
</build>      

指令行執行:​

​mvn clean compile sonar:sonar​

成功後,可以在控制台中看到這樣的輸出

代碼總是被嫌棄寫的太爛?裝上這個 IDEA 插件再試試

再次重新整理 http://localhost:9000/ 會看到跟剛才不一樣了

代碼總是被嫌棄寫的太爛?裝上這個 IDEA 插件再試試
代碼總是被嫌棄寫的太爛?裝上這個 IDEA 插件再試試
代碼總是被嫌棄寫的太爛?裝上這個 IDEA 插件再試試

以上隻是本地示範,在正式環境中這些資料當然要儲存到資料庫中,具體安裝就不示範了,下面是文檔

https://docs.sonarqube.org/latest/setup/install-server/

Alibaba代碼規約插件

阿裡代碼規範,相信大家都不陌生

代碼總是被嫌棄寫的太爛?裝上這個 IDEA 插件再試試
代碼總是被嫌棄寫的太爛?裝上這個 IDEA 插件再試試
代碼總是被嫌棄寫的太爛?裝上這個 IDEA 插件再試試