findbugs插件_提升编码效率的IntelliJ IDEA必备插件
點擊藍色“程序職場”關(guān)注我喲
加個“星標(biāo)”,天天和你一起進步
作者 | 房上的貓
來源 |?cnblogs.com/lsy131479/p/9646444.htm7月是第一個月贈書活動:(1), 每個月分享 , 再看 , 轉(zhuǎn)發(fā) 次數(shù)統(tǒng)計最多的獲得書籍一本,目前是自費,以后會慢慢升級贈送的活動.
(2), 另外獲得禮物的小伙伴注意看消息[因為我的公眾號沒有留言功能,這個很扯淡],我會統(tǒng)計好發(fā)布一篇文章,還會給你發(fā)送后臺消息, 3天領(lǐng)取期限.
首先說一下idea引入外部插件的方式:
1.打開settings配置面板
2.選擇plugins--》install pluginfrom disk 選擇相應(yīng)插件包==》點擊ok
最后,“Restart”重啟idea 讓它加載一下新加入的插件!!!
常用插件:
下面的所有插件都使用上面外部引用方式集成相應(yīng)的插件包即可
1.?FindBugs-IDEA
作用:
檢測代碼中可能的bug及不規(guī)范的位置,
寫完代碼后檢測下 避免低級bug,
靜態(tài)分析工具承諾無需開發(fā)人員費勁就能找出代碼中已有的缺陷。當(dāng)然,如果有多年的編寫經(jīng)驗,就會知道這些承諾并不是一定能兌現(xiàn)。
插件提供地址:
https://plugins.jetbrains.com/plugin/3847-findbugs-idea
成功標(biāo)志:
重啟idea后如果插件加載成功左下角出現(xiàn):
實際應(yīng)用:
----------------------
掃描完成后:
附錄(網(wǎng)摘):
FindBugs 它用來查找Java代碼中存在的bug。它使用靜態(tài)分析方法標(biāo)識出Java程序中上百種潛在的不同類型的錯誤。
FindBugs支持對包級別、項目級別、模塊級別、單個文件級別,以及自定義范圍的Bug分析。
FindBugs:特色是能夠檢查出空指針異常這種bug!
使用:右鍵單擊(module、單個文件等)--->在快捷菜單中選擇findbugs即可
附:FindBugs的Bug種類說明
· Bad practice 壞的實踐
一些不好的實踐,下面列舉幾個:HE:類定義了equals(),卻沒有hashCode();或類定義了equals(),卻使用Object.hashCode();或類定義了hashCode(),卻沒有equals();或類定義了hashCode(),卻使用Object.equals();類繼承了equals(),卻使用Object.hashCode()。SQL:Statement 的execute方法調(diào)用了非常量的字符串;或Prepared Statement是由一個非常量的字符串產(chǎn)生。DE:方法終止或不處理異常,一般情況下,異常應(yīng)該被處理或報告,或被方法拋出。Malicious code vulnerability 可能受到的惡意攻擊
如果代碼公開,可能受到惡意攻擊的代碼,下面列舉幾個:FI:一個類的finalize()應(yīng)該是protected,而不是public的。MS:屬性是可變的數(shù)組;屬性是可變的Hashtable;屬性應(yīng)該是package protected的。
類名小寫問題:
· Correctness 一般的正確性問題
可能導(dǎo)致錯誤的代碼,下面列舉幾個:NP:空指針被引用;在方法的異常路徑里,空指針被引用;方法沒有檢查參數(shù)是否null;null值產(chǎn)生并被引用;null值產(chǎn)生并在方法的異常路徑被引用;傳給方法一個聲明為@NonNull的null參數(shù);方法的返回值聲明為@NonNull實際是null。Nm:類定義了hashcode()方法,但實際上并未覆蓋父類Object的hashCode();類定義了tostring()方法,但實際上并未覆蓋父類Object的toString();很明顯的方法和構(gòu)造器混淆;方法名容易混淆。SQL:方法嘗試訪問一個Prepared Statement的0索引;方法嘗試訪問一個ResultSet的0索引。UwF:所有的write都把屬性置成null,這樣所有的讀取都是null,這樣這個屬性是否有必要存在;或?qū)傩詮臎]有被write。
· Dodgy 危險的
具有潛在危險的代碼,可能運行期產(chǎn)生錯誤,下面列舉幾個:CI:類聲明為final但聲明了protected的屬性。DLS:對一個本地變量賦值,但卻沒有讀取該本地變量;本地變量賦值成null,卻沒有讀取該本地變量。ICAST:整型數(shù)字相乘結(jié)果轉(zhuǎn)化為長整型數(shù)字,應(yīng)該將整型先轉(zhuǎn)化為長整型數(shù)字再相乘。INT:沒必要的整型數(shù)字比較,如X <= Integer.MAX_VALUE。NP:對readline()的直接引用,而沒有判斷是否null;對方法調(diào)用的直接引用,而方法可能返回null。REC:直接捕獲Exception,而實際上可能是RuntimeException。ST:從實例方法里直接修改類變量,即static屬性。
· Performance 性能問題
可能導(dǎo)致性能不佳的代碼,下面列舉幾個:DM:方法調(diào)用了低效的Boolean的構(gòu)造器,而應(yīng)該用Boolean.valueOf(…);用類似Integer.toString(1) 代替new Integer(1).toString();方法調(diào)用了低效的float的構(gòu)造器,應(yīng)該用靜態(tài)的valueOf方法。SIC:如果一個內(nèi)部類想在更廣泛的地方被引用,它應(yīng)該聲明為static。SS:如果一個實例屬性不被讀取,考慮聲明為static。UrF:如果一個屬性從沒有被read,考慮從類中去掉。UuF:如果一個屬性從沒有被使用,考慮從類中去掉。
· Multithreaded correctness 多線程的正確性多線程編程時,可能導(dǎo)致錯誤的代碼,下面列舉幾個:
ESync:空的同步塊,很難被正確使用。MWN:錯誤使用notify(),可能導(dǎo)致IllegalMonitorStateException異常;或錯誤的使用wait()。No:使用notify()而不是notifyAll(),只是喚醒一個線程而不是所有等待的線程。SC:構(gòu)造器調(diào)用了Thread.start(),當(dāng)該類被繼承可能會導(dǎo)致錯誤。
· Internationalization 國際化 當(dāng)對字符串使用upper或lowercase方法,如果是國際的字符串,可能會不恰當(dāng)?shù)霓D(zhuǎn)換。
2.?Maven Helper
作用:
一鍵查看maven依賴,查看沖突的依賴,一鍵進行exclude依賴
對于大型項目 非常方便
插件提供地址:
https://plugins.jetbrains.com/plugin/7179-maven-helper
成功標(biāo)志:
重啟idea后如果插件加載成功 打開pom文件左下角出現(xiàn):
實際應(yīng)用:
切換Dependency Analyzer試圖即可進行相應(yīng)操作:
1) Conflicts(查看沖突)
2) All Dependencies as List(列表形式查看所有依賴)
3) All Dependencies as Tree(樹形式查看所有依賴)
選中右鍵就可以 Exclude 啦,想用1.2就把其他版本的Exclude掉,想用1.1.3就把其他版本的Exclude掉,很方便。
3.?VisualVM Launcher
作用:
運行java程序的時候啟動visualvm,方便查看jvm的情況 比如堆內(nèi)存大小的分配
某個對象占用了多大的內(nèi)存,jvm調(diào)優(yōu)必備工具
插件提供地址:
https://plugins.jetbrains.com/plugin/7115-visualvm-launcher
成功標(biāo)志:
重啟idea后如果插件加載成功右上角出現(xiàn):
實際應(yīng)用:
非常感謝有一個大佬,給我的評論,我研究了一下才知道實際應(yīng)用,非常感謝哈,
下面教大家一下實際應(yīng)用:
首先需要一個客戶端(這里已經(jīng)為大家準(zhǔn)備好):
鏈接:https://pan.baidu.com/s/1kIduEykNNrYyZd1CwJpntg 密碼:bxib
將客戶端解壓
打開settings配置面板
配置excutable===》選擇到客戶端的bin目錄的visualvm.exe文件
然后點擊ok。。apply應(yīng)用一下
右鍵使用VM插件啟動
然后會自動加載程序:
可查看jvm狀態(tài),然后就可以自行調(diào)試咯:
具體怎么搞,就看你們自己想怎么搞咯,,本博主后期也會發(fā)布jvm調(diào)優(yōu)的博客的,
4.?GenerateAllSetter
作用:
一鍵調(diào)用一個對象的所有set方法并且賦予默認值 在對象字段多的時候非常方便
插件提供地址:
https://plugins.jetbrains.com/plugin/9360-generateallsetter
成功標(biāo)志:
。。。。。。
實際應(yīng)用:
通過alt +enter生成一個類所有setter方法的默認值
當(dāng)兩個對象轉(zhuǎn)換器具有相同的字段時,為它們生成一個set方法
當(dāng)returnType是List Set Map時生成默認值
5.?Rainbow Brackets
作用:
彩虹顏色的括號 看著很舒服 敲代碼效率變高。。清除分清括號個數(shù),防止括號錯亂
插件提供地址:
https://plugins.jetbrains.com/plugin/10080-rainbow-brackets
成功標(biāo)志:
重啟idea后如果插件加載成功右下角出現(xiàn)彈出框
實際應(yīng)用:
最近括號內(nèi)容高亮效果:ctrl+鼠標(biāo)右鍵單擊
最近括號內(nèi)容外暗淡效果:alt+鼠標(biāo)右鍵單擊
6. Translation
作用:
最好用的翻譯插件,功能很強大,界面很漂亮
特征:
多個翻譯引擎。多種語言的互譯。
谷歌翻譯。
有道翻譯。
百度翻譯。
文字轉(zhuǎn)語音。
自動選擇字。
自動分詞。
插件提供地址:
https://plugins.jetbrains.com/plugin/8579-translation
成功標(biāo)志:
重啟idea后如果插件加載成功右下角出現(xiàn):
多翻譯引擎 (可切換)
·Google翻譯
·?有道翻譯
·?百度翻譯
實際應(yīng)用:
選擇單詞,右鍵:
翻譯加朗讀:
7. P3c
Alibaba Java Coding Guidelines
作用:
阿里巴巴出品的java代碼規(guī)范插件
可以掃描整個項目找到不規(guī)范的地方 并且大部分可以自動修復(fù)
雖說檢測功能沒有findbugs強大,但是可以自動修復(fù)
阿里巴巴Java編碼指南插件支持。
插件提供地址:
https://plugins.jetbrains.com/plugin/10046-alibaba-java-coding-guidelines
成功標(biāo)志:
點擊上方tools,出現(xiàn)阿里編碼制約
實際應(yīng)用:
右鍵,點擊編碼制約規(guī)范
下方出現(xiàn):
掃描代碼后,不符合規(guī)約的代碼會按Blocker/Critical/Major三個等級顯示在下方面板中
左邊是掃描出的不符合規(guī)范的代碼,依次點進去可以看到是代碼的多少行出現(xiàn)了規(guī)約問題以及哪一個規(guī)約問題,右邊則是規(guī)約的詳細描述及實例代碼。
也可快捷鍵:
Alt+enter
還可以讓其自動修復(fù)代碼:
最后祝看完這篇文章的小伙伴收獲滿滿!點個在看吧~
▎好文推薦
點擊?職場我們?nèi)绾螌ふ易约旱亩ㄎ?職場)
點擊?沒有資源和運營能力,如何開啟副業(yè)之路(副業(yè))
點擊?項目中怎么使用敏捷開發(fā)流程(敏捷)
點擊?【程序職場】第一期學(xué)習(xí)資料(java)
▎我的開源項目
點擊?一點知識學(xué)院(Spring boot 開源項目)(技能)
點擊?一Eclipse項目如何導(dǎo)入IDEA正常啟動(案例:一點知識學(xué)院)
快加微信(mmlz6879),回復(fù)「程序職場」或右下角點擊「撩我? ?->? 加群」拉你進討論群和眾多愛學(xué)習(xí)的小伙伴一起學(xué)習(xí)。轉(zhuǎn)發(fā)至朋友圈,是對我最大的支持。
總結(jié)
以上是生活随笔為你收集整理的findbugs插件_提升编码效率的IntelliJ IDEA必备插件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 警惕“隐形杀手”这些电器千万不要放进卧室
- 下一篇: 邻居房顶放空气能对着自己的门好吗?