0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

IDEA插件之代碼質(zhì)量檢查利器

dyquk4xk2p3d ? 來源:CSDN博主張維鵬 ? 2023-08-18 17:02 ? 次閱讀

隨著業(yè)務(wù)的發(fā)展,系統(tǒng)會越來越龐大,原本簡單穩(wěn)定的功能,可能在不斷迭代后復(fù)雜度上升,潛在的風(fēng)險也隨之暴露,導(dǎo)致最終服務(wù)不穩(wěn)定,造成業(yè)務(wù)價值的損失。而為了減少這種情況,其中一種比較好的方式就是提高代碼質(zhì)量,比如通過代碼審查,從而降低錯誤風(fēng)險,但是,代碼審查難度大,代碼缺陷、漏洞不易發(fā)現(xiàn),且審查工作隨著代碼量增加而增加,審查效率低。

工欲善其事,必先利其器,因此,這篇文章給大家介紹幾種檢查代碼質(zhì)量的利器,Alibaba Java Coding Guidelines、CheckStyle、PMD、FindBugs、SonarLint,讓你在關(guān)注代碼質(zhì)量的同時,減少 code review 的工作量,提高 code review 的效率,并通過代碼質(zhì)量分析去反向提升我們的代碼編寫能力。

一、Alibaba Java Coding Guidelines

1、整體介紹:

Alibaba Java Coding Guidelines 專注于Java代碼規(guī)范,目的是讓開發(fā)者更加方便、快速規(guī)范代碼格式。該插件在掃描代碼后,將不符合規(guī)約的代碼按 Blocker、Critical、Major 三個等級顯示出來,并且大部分可以自動修復(fù),它還基于 Inspection 機(jī)制提供了實時檢測功能,編寫代碼的同時也能快速發(fā)現(xiàn)問題所在。

阿里巴巴規(guī)約掃描包括:(1)OOP規(guī)約 (2)并發(fā)處理 (3)控制語句 (4)命名規(guī)約 (5)常量定義 (6)注釋規(guī)范

2、安裝步驟:

File > Settings > Plugins > Marketplace 搜索 “Alibaba Java Coding Guidelines”,按照提示進(jìn)行安裝,然后重啟即可。

3、使用說明:

3.1、運行方式:

(1)可以Tools > 阿里編碼規(guī)約 > 編碼規(guī)約掃描

0fd43ffe-38b5-11ee-9e74-dac502259ad0.png

(2)在編輯界面或者項目區(qū)域點擊右鍵,在右鍵菜單中選擇“編碼規(guī)約掃描”即可:

0ff3ba64-38b5-11ee-9e74-dac502259ad0.png

3.2、菜單功能:

(1)編碼規(guī)約掃描:開始掃描代碼

(2)打開/關(guān)閉實時檢測功能:實時檢測代碼,一般機(jī)器性能比較好的話可以開啟這項功能

(3)切換語言至英文:中英文切換

3.3、運行結(jié)果:

掃描完成后顯示結(jié)果如下,我們可以看到掃描結(jié)果主要分為 Blocker(阻擋者)、Critical(嚴(yán)重問題)、Major(主要的)三個大類,它們表示的是問題的嚴(yán)重程度,嚴(yán)重程度由高到低為:Blocker > Critical > Major,至于每一類中都會包含什么樣的問題,圖中的內(nèi)容已經(jīng)說明了一切。

100863a6-38b5-11ee-9e74-dac502259ad0.png

選中其中的一個問題項目,會出現(xiàn)如下內(nèi)容(如果當(dāng)前鼠標(biāo)點擊的是最終項,右邊區(qū)域顯示的是其它的內(nèi)容,后面會再講到):

10582d64-38b5-11ee-9e74-dac502259ad0.png

(1)指定區(qū)域搜索同一類問題:

當(dāng)點擊③處的按鈕時,會彈出如下按鈕:

107c4e60-38b5-11ee-9e74-dac502259ad0.png

這里選擇掃描區(qū)域,來掃描鼠標(biāo)選中的同類問題。如果按照默認(rèn)選擇,那么運行后的結(jié)果就如下圖所示:

10936b04-38b5-11ee-9e74-dac502259ad0.png

這里我們可以看到,顯示了整個Project中的所有該類的問題。

(2)預(yù)覽具體的不規(guī)范代碼:

如果點擊的是最終的問題點或者問題所在的類文件,那顯示的就是如下界面,預(yù)覽該處不規(guī)范的代碼。

10b72062-38b5-11ee-9e74-dac502259ad0.png

3.4、工具欄功能介紹:

10ce985a-38b5-11ee-9e74-dac502259ad0.png

(1)Rerun Inspection:重新運行一次掃描

(2)Close:關(guān)閉真?zhèn)€AJCG面板

(3)Expand All:展開結(jié)果的樹狀結(jié)構(gòu),整個結(jié)果是樹狀結(jié)構(gòu)的。

(4)Collapse All:收起結(jié)果的樹狀結(jié)構(gòu)

(5)Go Pre Problem:選擇上一個問題

(6)Go Next Problem:選擇下一個問題

(7)Help:幫助

(8)Group by Serverity:(不知道如何描述)

(9)Group by derectory:按目錄分組/按類名分組間切換

(10)Filter resoled items:過濾掉已經(jīng)解決的項

(11)Autoscroll to Source:自動滾動到源碼

(12)Export:導(dǎo)出,可以導(dǎo)出為XML和HTML兩種格式

(13)Edit Settings:編輯設(shè)置

二、CheckStyle

1、整體介紹:

CheckStyle 側(cè)重檢查編碼格式和代碼風(fēng)格規(guī)范,如命名規(guī)范、Javadoc注釋規(guī)范、空格規(guī)范、size度量(如過長的方法)、重復(fù)代碼、多余Imports等,從而有效約束開發(fā)人員更好地遵循代碼編寫規(guī)范。Checkstyle主要是文法層面的代碼編寫規(guī)范的分析,對bug幾乎沒什么發(fā)現(xiàn)能力。

Checkstyle插件中默認(rèn)內(nèi)置有2個執(zhí)行代碼檢查的配置文件(Sun Checks 和 Sun Checks),但是這兩個文件檢查的非常詳細(xì)嚴(yán)格,即使優(yōu)秀的開源項目也會檢查出來有非常多的錯誤告信息,所以需要導(dǎo)入我們自定義的配置文件。

2、安裝步驟:

通過 File > Settings > Plugins > Marketplace 搜索 “CheckStyle”,按照提示進(jìn)行安裝,然后重啟即可。

3、使用說明:

10eb8924-38b5-11ee-9e74-dac502259ad0.png

可以看到基本都是一些縮進(jìn)啥的編碼規(guī)范,可以不用太關(guān)注

三、PMD

1、整體介紹:

PMD側(cè)重面向安全編碼規(guī)則,且具備一定的數(shù)據(jù)流分析和路徑分析能力,能力比CheckStyle稍微強(qiáng)點,并且 PMD 支持自定義規(guī)則,PMD可以直接使用的規(guī)則包括以下內(nèi)容:

(1)潛在的bug:空的try/catch/finally/switch語句

(2)未使用的代碼(Dead code):未使用的變量、參數(shù)、私有方法等

(3)可選的代碼:String/StringBuffer的濫用

(4)復(fù)雜的表達(dá)式:不必須的if語句、可被while替代的for循環(huán)

(5)重復(fù)的代碼:拷貝/粘貼代碼意味著拷貝/粘貼bugs

(6)循環(huán)體創(chuàng)建新對象:盡量不要在循環(huán)體內(nèi)實例化新對象

(7)資源關(guān)閉:Connect,Result,Statement等使用之后確保關(guān)閉掉

2、安裝步驟:

通過 File > Settings > Plugins > Marketplace 搜索 “PMDPlugin”,按照提示進(jìn)行安裝,然后重啟即可

3、使用說明:

參考文章:http://wjhsh.net/andy-songwei-p-11830812.html

3.1、運行方式:

(1)從Tools菜單中啟動:

通過 Tools > Run PMD 可以看到如下的界面,如果通過該方式啟動,掃描的范圍就是整個項目中的文件了。

11093cd0-38b5-11ee-9e74-dac502259ad0.png

Pre Defined:預(yù)定義的規(guī)則,也就是插件自帶的檢測規(guī)則。后面展開的列表中列出了所有的規(guī)則列表,想掃描哪一種類型的問題,點擊即可。其中“All”表示使用所有的規(guī)則。

Custom Rules:自定義的檢測規(guī)則,PMD允許用戶根據(jù)需要自定義檢查規(guī)則,默認(rèn)這里是不可點擊的,需要在設(shè)置中導(dǎo)入自定義規(guī)則文件后方可選擇。

(2)從右鍵菜單中啟動:

在文件或者編輯器中點擊右鍵,也可以看到“Run PMD”選項,如果通過該方式啟動, 檢測范圍取決于鼠標(biāo)或光標(biāo)當(dāng)前所選中的區(qū)域。

3.2、運行結(jié)果:

1131529c-38b5-11ee-9e74-dac502259ad0.png

運行后會出現(xiàn)如上所示的面板,左邊工具欄,鼠標(biāo)停留在上面會提示其功能;右邊顯示了檢測結(jié)果,當(dāng)點擊具體某一問題項時,會跳轉(zhuǎn)到對應(yīng)的源碼中。

3.3、配置檢測規(guī)則:

通過 File > Settings > Other Settings > PMD 可以打開檢測規(guī)則的設(shè)置界面:

114cc0a4-38b5-11ee-9e74-dac502259ad0.png

在 “RuleSets(規(guī)則設(shè)置)” 界面可以管理自定義的檢測規(guī)則。因為在實際工作中,可能需要根據(jù)實際情況自定義檢測規(guī)則,就可以通過這里導(dǎo)入,如果要使用它,需要在啟動PMD進(jìn)行檢測時選擇該自定義規(guī)則。

點擊“Options”選項卡,在其中可以配置一些檢測規(guī)則選項:

116aef98-38b5-11ee-9e74-dac502259ad0.png

其中重點需要留意的是“Skip TestSource”這一項,因為在項目中有不少Android Studio自動生成的測試代碼,如下所示,選擇上述選項后可以將其過濾掉。

11845096-38b5-11ee-9e74-dac502259ad0.png

四、FindBugs

1、整體介紹:

FindBugs 側(cè)重于發(fā)現(xiàn)代碼中存在的bug,如運行時錯誤檢測(空指針檢查、未合理關(guān)閉資源、字符串相同判斷錯(==,而不是equals)等),它可以簡單高效全面地幫助我們發(fā)現(xiàn)程序代碼中存在的bug以及潛在隱患,針對各種問題,它提供了簡單的修改意見供我們參考

2、安裝步驟:

通過 File > Settings > Plugins > Marketplace 搜索 “FindBugs”,按照提示進(jìn)行安裝,然后重啟即可

3、使用說明:

FindBugs 可以分析單個文件、包下面的所有文件、整個module下的文件、整個project下的文件,右鍵想要分析的文件名/包名/module名/project

119509a4-38b5-11ee-9e74-dac502259ad0.png

分析完之后就會出現(xiàn)結(jié)果面板:

11b969b6-38b5-11ee-9e74-dac502259ad0.png

點擊對應(yīng)的item在右邊會定位到具體的代碼,這是根據(jù)提示進(jìn)行處理修改就行:

11d2ca14-38b5-11ee-9e74-dac502259ad0.png

五、SonarLint

1、整體介紹:

sonar 比 Findbugs 高了一個層級,它不僅關(guān)注常規(guī)靜態(tài)BUG,還關(guān)注到了如代碼質(zhì)量、包與包、類與類之間的依賴情況,代碼耦合情況,類、方法、文件的復(fù)雜度,代碼中是否包含大量復(fù)制粘貼的代碼,關(guān)注的是項目代碼整體的健康情況。sonar 有兩種使用方式:插件和客戶端,sonar 的插件名稱為 sonarLint。

2、安裝步驟:

通過 File > Settings > Plugins > Marketplace 搜索 “SonarLint”,按照提示進(jìn)行安裝,然后重啟即可

3、使用說明:

12080efe-38b5-11ee-9e74-dac502259ad0.png

右鍵項目或者文件進(jìn)行如上圖所示操作,執(zhí)行之后可以看到如下信息,如果代碼中有不合理的地方會在report中顯示,同時點擊錯誤的地方在右邊會給出建議的修改供參考。

126551f4-38b5-11ee-9e74-dac502259ad0.png

4、配置 SonarLint 服務(wù)端:

4.1、配置 Sonar 服務(wù)器:

sonarLint 插件的使用場景是自用自審,但 sonar 也提供了平臺版本,使用場景則是他審,sonar 平臺的搭建就不在這篇文章介紹了,感興趣的讀者可以自己上網(wǎng)查看,我們這里主要介紹如何在 sonarLint 插件中配置關(guān)聯(lián) sonar 平臺服務(wù)器的工程,進(jìn)行本地檢查:

1293cd2c-38b5-11ee-9e74-dac502259ad0.png

點擊新增按鈕,輸入Configuration Name,配置sonarlint 服務(wù)器的地址,然后下拉框選擇 Login/Password,輸入 sonarlint服務(wù)器的賬號密碼:

12a75a04-38b5-11ee-9e74-dac502259ad0.png

4.2、具體 Sonar工程配置:

配置完服務(wù)器之后,需要針對具體工程進(jìn)行配置,點擊 connection下拉框,選擇上面配置好的服務(wù)器連接,然后點擊 Search in list,找到對應(yīng)的工程:

12bb75e8-38b5-11ee-9e74-dac502259ad0.png

4.3、使用 SonarLint 檢查:

配置完上面兩步之后,接下來就可以選擇要進(jìn)行檢查的類或者目錄進(jìn)行 sonarlint 檢查了(跟第3點的使用方式一致),同時,在 commit 代碼的時候,勾選 “Perform Sonarlint analysis”,會針對你要提交的代碼進(jìn)行sonarlint檢查

12d432b8-38b5-11ee-9e74-dac502259ad0.png

總結(jié)

(1)檢查代碼規(guī)范的話,直接使用 Alibaba Java Coding Guidelines 就可以了

(2)找 BUG 的話,使用 PMD、Findbugs、SonarLint 相互補(bǔ)充:

PMD 自定義能力強(qiáng),用來自定義項目BUG規(guī)則非常好用

Findbugs 找 BUG 能力很強(qiáng),我們拿找到的BUG給新員工培訓(xùn)也很好。

SonarLint 規(guī)則豐富,比 Findbugs 能覆蓋到更全的場景

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2946

    瀏覽量

    104366
  • 插件
    +關(guān)注

    關(guān)注

    0

    文章

    318

    瀏覽量

    22376
  • idea
    +關(guān)注

    關(guān)注

    1

    文章

    67

    瀏覽量

    4223

原文標(biāo)題:推薦 5 款 IDEA 插件,堪稱代碼質(zhì)量檢查利器!

文章出處:【微信號:良許Linux,微信公眾號:良許Linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    IDEA插件MyBatisCodeHelperPro 21版本介紹

    開發(fā)了兩年多的 IDEA插件 MyBatisCodeHelperPro 21 版本發(fā)布
    發(fā)表于 07-12 17:07

    凸輪軸表面質(zhì)量檢查儀Camscan利用巴克豪森效應(yīng)檢測表面磨削缺陷和熱處理燒傷

    凸輪軸表面質(zhì)量檢查儀Camscan主要特點表面質(zhì)量控制的有效手段凸輪軸表面質(zhì)量檢查儀Camscan利用巴克豪森效應(yīng)檢測表面磨削缺陷和熱處理燒傷完全無損,準(zhǔn)確快速,避免酸洗各種探頭,適合不同類型零件
    發(fā)表于 12-27 12:03

    IDEA EasyCode插件怎么使用

    目錄1、前言2、安裝(EasyCode)3、建立數(shù)據(jù)庫4、在IDEA配置連接數(shù)據(jù)庫5、開始生成代碼6、pom.xml7、Application.yml8、啟動項目來源:jianshu.c...
    發(fā)表于 12-08 07:17

    國內(nèi)船舶及船員海事安全質(zhì)量檢查管理系統(tǒng)認(rèn)證機(jī)制

    國內(nèi)船舶及船員海事安全質(zhì)量檢查管理系統(tǒng)認(rèn)證機(jī)制一、說明:    依據(jù)目前國際及我國航商、船舶和船員的海事安全、質(zhì)量檢查、管理系統(tǒng)、認(rèn)證機(jī)制四方面的現(xiàn)
    發(fā)表于 01-30 16:44 ?15次下載

    電容器生產(chǎn)線質(zhì)量檢查抽檢統(tǒng)計的程序源代碼免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是應(yīng)用在電容器生產(chǎn)線質(zhì)量檢查抽檢統(tǒng)計用的程序源代碼免費下載。
    發(fā)表于 12-22 08:00 ?1次下載

    有效的PCB的質(zhì)量檢查應(yīng)注意哪些?

    質(zhì)量等級的差異會導(dǎo)致復(fù)雜性以及測試和檢查方法的差異。 迄今為止,剛性雙面PCB和多層PCB占據(jù)了電子產(chǎn)品中相對較大的應(yīng)用范圍,在某些情況下有時會使用柔性PCB.因此,本文將重點討論剛性雙面和多層PCB的質(zhì)量檢查問題。后PCB制造
    的頭像 發(fā)表于 07-28 15:08 ?2483次閱讀

    Intellij IDEA插件idea-plugin-protobuf

    ./oschina_soft/idea-plugin-protobuf.zip
    發(fā)表于 05-18 11:09 ?2次下載
    Intellij <b class='flag-5'>IDEA</b><b class='flag-5'>插件</b><b class='flag-5'>idea</b>-plugin-protobuf

    幾種檢查代碼質(zhì)量利器介紹

    工欲善其事,必先利其器,因此,這篇文章給大家介紹幾種檢查代碼質(zhì)量利器,Alibaba Java Coding Guidelines、CheckStyle、PMD、FindBugs
    的頭像 發(fā)表于 11-02 11:04 ?1250次閱讀

    華為云代碼檢查插件(CloudIDE版本)使用指南

    華為云代碼檢查插件(CloudIDE版本)使用指南 CodeCheck代碼檢查插件 感興趣的小伙
    的頭像 發(fā)表于 01-18 18:19 ?989次閱讀
    華為云<b class='flag-5'>代碼</b><b class='flag-5'>檢查</b><b class='flag-5'>插件</b>(CloudIDE版本)使用指南

    CheckStyle插件導(dǎo)入代碼規(guī)范

    ,所以大部分公司會給定自己的check規(guī)范,一般導(dǎo)入給定的checkstyle.xml文件即可實現(xiàn)。 作為新人,我checkstyle了一整個項目,苦不堪言,所以大家怕是還是多注意代碼規(guī)范啊,利人利己。 樓主用的是idea,所以先說一下
    的頭像 發(fā)表于 06-19 09:38 ?990次閱讀
    CheckStyle<b class='flag-5'>插件</b>導(dǎo)入<b class='flag-5'>代碼</b>規(guī)范

    IDEA 神器怎么修改不規(guī)范的代碼

    ,所以大部分公司會給定自己的check規(guī)范,一般導(dǎo)入給定的 checkstyle.xml 文件即可實現(xiàn)。 作為新人,我checkstyle了一整個項目,苦不堪言,所以大家怕是還是多注意代碼規(guī)范啊,利人利己。 樓主用的是idea,所以先說一下
    的頭像 發(fā)表于 07-08 09:25 ?804次閱讀
    <b class='flag-5'>IDEA</b> 神器怎么修改不規(guī)范的<b class='flag-5'>代碼</b>

    關(guān)于圖片壓縮的idea插件

    今天主要是想給大家介紹最近自己開發(fā)的圖片壓縮插件,該插件用到了 tinypng 的在線服務(wù)。大家可能都知道,tinypng提供的圖片壓縮服務(wù)特別好用,壓縮比例非常大,但是對圖片質(zhì)量影響比較小。 上次
    的頭像 發(fā)表于 10-09 15:06 ?509次閱讀
    關(guān)于圖片壓縮的<b class='flag-5'>idea</b><b class='flag-5'>插件</b>

    電能質(zhì)量檢查儀器有哪些類型

    隨著電力系統(tǒng)的發(fā)展和電氣設(shè)備的廣泛應(yīng)用,電能質(zhì)量問題日益凸顯。為了保障電力供應(yīng)的可靠性和電氣設(shè)備的正常運行,人們對電能質(zhì)量的監(jiān)測和分析變得越來越重要。而電能質(zhì)量檢查儀器就成為了這一過程中不可或缺的工具。
    的頭像 發(fā)表于 12-25 13:29 ?457次閱讀
    電能<b class='flag-5'>質(zhì)量檢查</b>儀器有哪些類型

    SMT貼片加工廠的焊點質(zhì)量檢查標(biāo)準(zhǔn)

    質(zhì)量檢查標(biāo)準(zhǔn)和SMT加工的外觀檢查內(nèi)容。SMT貼片加工廠的焊點質(zhì)量檢查一、焊點檢查:1、焊點表面要求完整、平滑、光亮,不能存在缺陷焊點。2、元器件高度要符合工藝文件
    的頭像 發(fā)表于 06-20 15:46 ?299次閱讀
    SMT貼片加工廠的焊點<b class='flag-5'>質(zhì)量檢查</b>標(biāo)準(zhǔn)

    安寶特產(chǎn)品 安寶特3D Evolution:高效準(zhǔn)確的CAD質(zhì)量檢查工具

    安寶特3D Evolution質(zhì)量檢查器可基于多種規(guī)則對CAD圖形質(zhì)量進(jìn)行檢測,是唯一通過SASIG和VDA規(guī)范認(rèn)證的轉(zhuǎn)換工具。 它可以自動且準(zhǔn)確地識別、檢查模型中存在的錯誤,并提供特定自動修復(fù)和交互式清理功能,可以對模型
    的頭像 發(fā)表于 08-21 18:06 ?516次閱讀
    安寶特產(chǎn)品  安寶特3D Evolution:高效準(zhǔn)確的CAD<b class='flag-5'>質(zhì)量檢查</b>工具