代碼總是被嫌棄寫的太爛?裝上這個(gè)插件再試試!
點(diǎn)擊上方?藍(lán)字?關(guān)注我們!
來源:cnblogs.com/cjsblog/p/10735800.html

新來的同事,經(jīng)常寫一些 “爛代碼” 偷襲我,這次給領(lǐng)導(dǎo)建議,搞一個(gè)代碼檢查工具,一鍵掃描,統(tǒng)一風(fēng)格化編碼,看以后還敢亂寫代碼。
SonarLint(Sonar) 代碼質(zhì)量管理
Sonar是一個(gè)用于代碼質(zhì)量管理的開源平臺(tái),用于管理源代碼的質(zhì)量 通過插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十幾種編程語言的代碼質(zhì)量管理與檢測(cè)
Sonar可以從以下七個(gè)維度檢測(cè)代碼質(zhì)量,而作為開發(fā)人員至少需要處理前5種代碼質(zhì)量問題
1、不遵循代碼標(biāo)準(zhǔn) sonar可以通過PMD,CheckStyle,Findbugs等等代碼規(guī)則檢測(cè)工具規(guī)范代碼編寫
2、潛在的缺陷 sonar可以通過PMD,CheckStyle,Findbugs等等代碼規(guī)則檢測(cè)工具檢測(cè)出潛在的缺陷
3、糟糕的復(fù)雜度分布 文件、類、方法等,如果復(fù)雜度過高將難以改變,這會(huì)使得開發(fā)人員難以理解它們 且如果沒有自動(dòng)化的單元測(cè)試,對(duì)于程序中的任何組件的改變都將可能導(dǎo)致需要全面的回歸測(cè)試
4、重復(fù) 顯然程序中包含大量復(fù)制粘貼的代碼是質(zhì)量低下的,sonar可以展示源碼中重復(fù)嚴(yán)重的地方
5、注釋不足或者過多 沒有注釋將使代碼可讀性變差,特別是當(dāng)不可避免地出現(xiàn)人員變動(dòng)時(shí),程序的可讀性將大幅下降 而過多的注釋又會(huì)使得開發(fā)人員將精力過多地花費(fèi)在閱讀注釋上,亦違背初衷
6、缺乏單元測(cè)試 sonar可以很方便地統(tǒng)計(jì)并展示單元測(cè)試覆蓋率
7、糟糕的設(shè)計(jì) 通過sonar可以找出循環(huán),展示包與包、類與類之間相互依賴關(guān)系,可以檢測(cè)自定義的架構(gòu)規(guī)則 通過sonar可以管理第三方的jar包,可以利用LCOM4檢測(cè)單個(gè)任務(wù)規(guī)則的應(yīng)用情況, 檢測(cè)耦合。
1. SonarLint
SonarLint是一個(gè)代碼質(zhì)量檢測(cè)插件,可以幫助我們檢測(cè)出代碼中的壞味道

下載與安裝

在需要檢測(cè)的單個(gè)文件或者單個(gè)項(xiàng)目上右鍵 --> Analyze --> Analyze with SonarLint
或者選中文件或目錄,點(diǎn)擊菜單欄 Analyze --> Analyze with SonarLint

我們還可以禁用某些規(guī)則

如果需要同步自定義的規(guī)則時(shí),可以綁定到SonarQube



查看檢測(cè)的結(jié)果

對(duì)于代碼中的警告我們不能視而不見

有了代碼質(zhì)量檢測(cè)工具以后,在一定程度上可以保證代碼的質(zhì)量
對(duì)于每一個(gè)問題,SonarLint都給出了示例,還有相應(yīng)的解決方案,教我們?cè)趺葱薷模瑯O大的方便了我們的開發(fā)
比如,對(duì)于日期類型盡量用LocalDate、LocalTime、LocalDateTime,還有重復(fù)代碼、潛在的空指針異常、循環(huán)嵌套等等問題
有了代碼規(guī)范與質(zhì)量檢測(cè)工具以后,很多東西就可以量化 了,比如bug率、代碼重復(fù)率等,還可以自定義各種指標(biāo),方便管理人員查看
為此,我們需要一個(gè)平臺(tái)來記錄每次檢測(cè)分析的結(jié)果,這樣就可以進(jìn)行分析和統(tǒng)計(jì),并且可以直觀的看到這一切
于是,SonarQube 閃亮登場(chǎng)!
2. SonarQube
SonarQube是一個(gè)開源的代碼質(zhì)量管理平臺(tái)




解壓&本地啟動(dòng)
https://docs.sonarqube.org/latest/setup/get-started-2-minutes/
unzip?sonarqube-7.7.zip
cd?sonarqube-7.7
bin/[OS]/sonar.sh?consol

啟動(dòng)成功后,訪問 http://localhost:9000 用管理員賬號(hào)(admin/admin)登錄

接下來,為了把檢測(cè)的結(jié)果傳到服務(wù)器,我們需要配置一個(gè)Scanner
https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Maven
這里我在項(xiàng)目中添加 sonar-maven-plugin 插件
<build>
????<plugins>
????????<plugin>
????????????<groupId>org.sonarsource.scanner.mavengroupId>
????????????<artifactId>sonar-maven-pluginartifactId>
????????????<version>3.6.0.1398version>
????????plugin>
????plugins>
build>
命令行執(zhí)行:mvn clean compile sonar:sonar
成功后,可以在控制臺(tái)中看到這樣的輸出

再次刷新 http://localhost:9000/ 會(huì)看到跟剛才不一樣了



以上只是本地演示,在正式環(huán)境中這些數(shù)據(jù)當(dāng)然要保存到數(shù)據(jù)庫中,具體安裝就不演示了,下面是文檔
https://docs.sonarqube.org/latest/setup/install-server/
3. Alibaba代碼規(guī)約插件
阿里代碼規(guī)范,相信大家都不陌生



往期推薦
