国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁 > 網(wǎng)易號 > 正文 申請入駐

Bug 率狂降 50%?靠這5個 IDEA 插件就夠了!

0
分享至

Java精選面試題(微信小程序):5000+道面試題和選擇題,真實(shí)面經(jīng),簡歷模版,包含Java基礎(chǔ)、并發(fā)、JVM、線程、MQ系列、Redis、Spring系列、Elasticsearch、Docker、K8s、Flink、Spark、架構(gòu)設(shè)計、大廠真題等,在線隨時刷題!

隨著業(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ī)制提供了實(shí)時檢測功能,編寫代碼的同時也能快速發(fā)現(xiàn)問題所在。

阿里巴巴規(guī)約掃描包括:

  • OOP規(guī)約

  • 并發(fā)處理

  • 控制語句

  • 命名規(guī)約

  • 常量定義

  • 注釋規(guī)范

2、安裝步驟:

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

3、使用說明: 3.1、運(yùn)行方式:

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

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

3.2、菜單功能:

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

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

  • 切換語言至英文:中英文切換

3.3、運(yùn)行結(jié)果:

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

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

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

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

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

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

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

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

Rerun Inspection: 重新運(yùn)行一次掃描

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

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

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

  • Go Pre Problem:選擇上一個問題

  • Go Next Problem:選擇下一個問題

  • Help:幫助

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

  • Group by derectory:按目錄分組/按類名分組間切換

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

  • Autoscroll to Source:自動滾動到源碼

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

  • 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 ChecksSun Checks),但是這兩個文件檢查的非常詳細(xì)嚴(yán)格,即使優(yōu)秀的開源項(xiàng)目也會檢查出來有非常多的錯誤告信息,所以需要導(dǎo)入我們自定義的配置文件。

    2、安裝步驟:

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

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

    三、PMD 1、整體介紹:

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

    • 潛在的bug:空的try/catch/finally/switch語句

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

    • 可選的代碼:String/StringBuffer的濫用

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

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

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

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

    2、安裝步驟:

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

    3.1、運(yùn)行方式:

    1)從Tools菜單中啟動:

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

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

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

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

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

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

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

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

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

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

    其中重點(diǎn)需要留意的是“Skip TestSource”這一項(xiàng),因?yàn)樵陧?xiàng)目中有不少Android Studio自動生成的測試代碼,如下所示,選擇上述選項(xiàng)后可以將其過濾掉。

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

    2、安裝步驟:

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

    3、使用說明:

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

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

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

    4.1、Bad practice代碼壞習(xí)慣:

    4.2、Dodgy code糟糕的代碼:

    4.3、Internationalization代碼國際化相關(guān):

    4.4、Performance代碼性能相關(guān):

    4.5、Experimental

    4.6、Malicious code vulnerability惡意破壞代碼相關(guān):

    4.7、Multithreaded correctness多線程代碼正確性相關(guān):

    4.8、Correctness代碼正確性相關(guān):

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

    2、安裝步驟:

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

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

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

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

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

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

    總結(jié):

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

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

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

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

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

    構(gòu)建高質(zhì)量的技術(shù)交流社群,歡迎從事編程開發(fā)、技術(shù)招聘HR進(jìn)群,也歡迎大家分享自己公司的內(nèi)推信息,相互幫助,一起進(jìn)步!

    來源:https://blog.csdn.net/a745233700/article/details/126202100

    公眾號“Java精選”所發(fā)表內(nèi)容注明來源的,版權(quán)歸原出處所有(無法查證版權(quán)的或者未注明出處的均來自網(wǎng)絡(luò),系轉(zhuǎn)載,轉(zhuǎn)載的目的在于傳遞更多信息,版權(quán)屬于原作者。如有侵權(quán),請聯(lián)系,筆者會第一時間刪除處理!

    最近有很多人問,有沒有讀者交流群!加入方式很簡單,公眾號Java精選,回復(fù)“加群”,即可入群!

    文章有幫助的話,點(diǎn)在看,轉(zhuǎn)發(fā)吧!

    特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。

    Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

    相關(guān)推薦
    熱點(diǎn)推薦
    被曝生下畸形兒傳聞僅1月,闞清子官宣喜訊,連發(fā)三文表明態(tài)度

    被曝生下畸形兒傳聞僅1月,闞清子官宣喜訊,連發(fā)三文表明態(tài)度

    一口娛樂
    2026-01-29 09:31:09
    已確認(rèn),浙江有大到暴雪!今晚變天

    已確認(rèn),浙江有大到暴雪!今晚變天

    魯中晨報
    2026-01-29 13:39:09
    不敢置信!女子十二樂坊成員直播養(yǎng)不活自己,一晚上打賞不到3000

    不敢置信!女子十二樂坊成員直播養(yǎng)不活自己,一晚上打賞不到3000

    云中浮生
    2026-01-24 21:37:46
    奇葩!35歲女子4年不回家,母親來探望卻被懟,女子:就當(dāng)我死了

    奇葩!35歲女子4年不回家,母親來探望卻被懟,女子:就當(dāng)我死了

    娛樂帝皇丸
    2026-01-28 15:18:51
    16歲武漢男生凌晨離家,失聯(lián)超70小時, 父親:未帶手機(jī)現(xiàn)金,最后出現(xiàn)在橋上不見蹤跡

    16歲武漢男生凌晨離家,失聯(lián)超70小時, 父親:未帶手機(jī)現(xiàn)金,最后出現(xiàn)在橋上不見蹤跡

    大風(fēng)新聞
    2026-01-29 13:53:22
    人民日報怒批!炫富、偷稅749萬、跑國外,現(xiàn)又來“割內(nèi)地韭菜”

    人民日報怒批!炫富、偷稅749萬、跑國外,現(xiàn)又來“割內(nèi)地韭菜”

    小熊侃史
    2026-01-18 07:20:09
    港股地產(chǎn)股大漲,融創(chuàng)中國漲超30%

    港股地產(chǎn)股大漲,融創(chuàng)中國漲超30%

    每日經(jīng)濟(jì)新聞
    2026-01-29 11:39:06
    外交部:繼續(xù)深化國際執(zhí)法合作 加大力度打擊網(wǎng)賭電詐

    外交部:繼續(xù)深化國際執(zhí)法合作 加大力度打擊網(wǎng)賭電詐

    財聯(lián)社
    2026-01-29 15:26:24
    尼帕病毒來勢洶洶,建議:每家最好備6樣?xùn)|西,關(guān)鍵時刻能救命呢

    尼帕病毒來勢洶洶,建議:每家最好備6樣?xùn)|西,關(guān)鍵時刻能救命呢

    現(xiàn)代小青青慕慕
    2026-01-28 08:59:53
    阿富汗的鍋,拜登不背!

    阿富汗的鍋,拜登不背!

    山河路口
    2026-01-28 23:12:39
    心理學(xué)上有一個詞叫:梅拉賓法則(搞好人際關(guān)系最好的辦法)

    心理學(xué)上有一個詞叫:梅拉賓法則(搞好人際關(guān)系最好的辦法)

    經(jīng)濟(jì)觀察報
    2025-09-01 10:06:25
    1971年,劉思齊蒙冤入獄后向毛主席求助,毛澤東作出:娃娃們無罪

    1971年,劉思齊蒙冤入獄后向毛主席求助,毛澤東作出:娃娃們無罪

    史海孤雁
    2026-01-27 18:02:17
    瞞不住了!美媒:美軍高官已進(jìn)臺島指揮導(dǎo)彈戰(zhàn),戰(zhàn)時先炸福建沿海

    瞞不住了!美媒:美軍高官已進(jìn)臺島指揮導(dǎo)彈戰(zhàn),戰(zhàn)時先炸福建沿海

    史智文道
    2026-01-29 16:14:14
    要打就打痛!中國手段已升級,日本:中方不批準(zhǔn)駐重慶總領(lǐng)事任命

    要打就打痛!中國手段已升級,日本:中方不批準(zhǔn)駐重慶總領(lǐng)事任命

    通文知史
    2026-01-28 14:30:03
    太頂了!明明什么都沒露,卻性感得要命!

    太頂了!明明什么都沒露,卻性感得要命!

    貴圈真亂
    2025-12-20 12:02:06
    最新傷勢情況曝光,德約科維奇直言:對辛納絕不舉白旗

    最新傷勢情況曝光,德約科維奇直言:對辛納絕不舉白旗

    體育妞世界
    2026-01-29 12:38:11
    起風(fēng)了!加拿大已改口,禁止與中國簽協(xié)定,65萬噸油菜籽白買了?

    起風(fēng)了!加拿大已改口,禁止與中國簽協(xié)定,65萬噸油菜籽白買了?

    墨印齋
    2026-01-29 11:47:54
    加快男性衰老的因素:喝酒僅第5,排在第1的,很多男性還沒發(fā)現(xiàn)!

    加快男性衰老的因素:喝酒僅第5,排在第1的,很多男性還沒發(fā)現(xiàn)!

    醫(yī)學(xué)科普匯
    2026-01-27 10:41:31
    中國人一年少買了10萬輛進(jìn)口寶馬

    中國人一年少買了10萬輛進(jìn)口寶馬

    第一財經(jīng)資訊
    2026-01-29 10:34:13
    1973年,毛主席問楊振寧:萬壽無疆科學(xué)嗎?楊振寧的回答,讓主席笑了

    1973年,毛主席問楊振寧:萬壽無疆科學(xué)嗎?楊振寧的回答,讓主席笑了

    寄史言志
    2026-01-24 17:53:13
    2026-01-29 17:15:00
    Java精選
    Java精選
    一場永遠(yuǎn)也演不完的戲
    1768文章數(shù) 3859關(guān)注度
    往期回顧 全部

    科技要聞

    周亞輝的AI新賭局:國內(nèi)太卷 出海另起爐灶

    頭條要聞

    女大學(xué)生到東北游玩暈倒雪地凍傷 三根手指或面臨截肢

    頭條要聞

    女大學(xué)生到東北游玩暈倒雪地凍傷 三根手指或面臨截肢

    體育要聞

    詹姆斯哭了!騎士視頻致敬41歲超巨

    娛樂要聞

    張譯不再隱瞞!公開回應(yīng)退圈息影真相

    財經(jīng)要聞

    崔東樹:中國汽車未來年銷或達(dá)5000萬輛

    汽車要聞

    車長超5米還帶后輪轉(zhuǎn)向 比亞迪海豹08/海獅08將亮相

    態(tài)度原創(chuàng)

    健康
    教育
    游戲
    公開課
    軍事航空

    耳石癥分類型,癥狀大不同

    教育要聞

    “國家課程落地吳江行動叢書”發(fā)布!聚焦課改前沿,共探育人新路!

    PS+港區(qū)2月會免來了! 包含《冰點(diǎn)之下》等

    公開課

    李玫瑾:為什么性格比能力更重要?

    軍事要聞

    中國代表:支持伊朗國家穩(wěn)定 武力解決不了問題

    無障礙瀏覽 進(jìn)入關(guān)懷版