請(qǐng)支持原文作者 : 鴻洋
對(duì)于代碼質(zhì)量的檢查,一直是一個(gè)比較棘手的問(wèn)題。雖然我們部門有關(guān)于java代碼的各種規(guī)范,領(lǐng)導(dǎo)也多次強(qiáng)調(diào)對(duì)代碼的評(píng)審。
但是在實(shí)際執(zhí)行過(guò)程中,由于開(kāi)發(fā)人員的水平參差不齊,在開(kāi)發(fā)項(xiàng)目時(shí)還有各種其他因素,比如時(shí)間緊任務(wù)重,自己的代碼不規(guī)范沒(méi)有意識(shí)到,就疏于對(duì)代碼質(zhì)量的檢查,然后草率的提交。
還有就是大家對(duì)代碼檢測(cè)的不重視,有種意識(shí)就是即使代碼不規(guī)范,我們的程序也可以正常運(yùn)行,為什么要多次一舉呢。由于我們的工程和代碼時(shí)間比較久遠(yuǎn),想改卻不知道如何下手,將代碼規(guī)范轉(zhuǎn)換成實(shí)際的編程規(guī)范時(shí),執(zhí)行起來(lái)卻很困難,即使我們有心改這也將是一個(gè)長(zhǎng)期而痛苦的過(guò)程,需要很大人力和時(shí)間。
現(xiàn)在,向大家推薦一個(gè)很優(yōu)秀的代碼質(zhì)量檢測(cè)工具—FindBugs,一個(gè)用靜態(tài)分析的方式來(lái)尋找Java代碼中Bug的工具,,它檢查類或者jar文件,將字節(jié)碼和一組缺陷模式進(jìn)行對(duì)比以發(fā)現(xiàn)可能的問(wèn)題。
有了靜態(tài)分析工具,就可以在不實(shí)際運(yùn)行程序的情況下對(duì)軟件進(jìn)行分析。不是通過(guò)分析類文件的形式或結(jié)構(gòu)來(lái)確定程序的意圖,而是通常使用Visitor模式來(lái)鑒別代碼是否符合一些固定的規(guī)范。具體介紹大家可以百度一下進(jìn)行普及。
2
Findbugs安裝教程
AndroidStudio的Findbugs插件的安裝有在線安裝和離線安裝,這里介紹在線安裝。
Findbugs的在線安裝非常簡(jiǎn)單,打開(kāi)AndroidStudio 點(diǎn)擊File->Settings->Plugins , 具體如下圖所示:
1.輸入搜索Findbugs 。
2.點(diǎn)擊Search in respostories.
3.下載安裝
4.然后重啟Android Studio,會(huì)發(fā)現(xiàn)下面工具欄多出一個(gè)憤怒的小鳥(niǎo)的圖標(biāo),這就是Findbugs。如下圖所示,左下角彈出框提示是提示你加入你的對(duì)應(yīng)的缺陷匹配規(guī)則,這個(gè)可以不用去管他。
3
Findbugs的簡(jiǎn)單使用教程
Findbugs使用之前首先介紹一下左邊工具欄里面的這些按鈕都是干嘛的。
首先我們可以看到Findbugs的按鈕主要分4塊,如下所示:
這4塊是按照功能來(lái)區(qū)分的主要是:
1、代碼檢測(cè)功能區(qū)
2、bug分組顯示功能區(qū)
3、用戶體驗(yàn)功能區(qū)
4、導(dǎo)入/出錯(cuò)誤集合
(1)代碼檢測(cè)功能區(qū)
該區(qū)的按鈕主要用來(lái)檢測(cè)代碼中的bug,我們檢測(cè)或停止檢測(cè)bug就是點(diǎn)擊這個(gè)區(qū)域的按鈕。這些按鈕我們點(diǎn)擊打開(kāi)一個(gè)文件右擊彈出菜單最下面有個(gè)Findbugs,光標(biāo)移動(dòng)到下面就會(huì)出現(xiàn)這個(gè)區(qū)域的圖標(biāo)。
如下圖所示:
根據(jù)上圖的圖標(biāo)右部功能描述我們很容易明白這些按鈕是干嘛的,下面我們一個(gè)個(gè)來(lái)說(shuō)一下。
1、分析當(dāng)前文件
2、分析游標(biāo)下的類(就是光標(biāo)所在的類)
3、分析包內(nèi)所有文件
4、分析當(dāng)前模塊的所有文件
5、分析項(xiàng)目中的所有文件
這個(gè)按鈕就是分析檢測(cè)當(dāng)前project中所有文件,找出bugs。
6、分析范圍內(nèi)的所有文件
這個(gè)按鈕就是分析檢測(cè)當(dāng)前文件一定范圍中所有文件,我試了一下點(diǎn)擊后分析的還是當(dāng)前項(xiàng)目中的所有文件,可能是因?yàn)轫?xiàng)目結(jié)構(gòu)的問(wèn)題吧。
7、分析所有模塊內(nèi)的所有文件
這個(gè)按鈕就是檢測(cè)所有模塊中的代碼缺陷,主要和第一個(gè)按鈕功能還是差不多。
8、分析改變的所有文件
這個(gè)按鈕一般顯示都是暗色的點(diǎn)擊不了,當(dāng)有svn等版本控制時(shí)改變后才能點(diǎn)擊檢測(cè)。
(2)bug分組功能區(qū)
1、根據(jù)bug的分類來(lái)分組顯示bug,選中后bug分組如下所示:
2、[圖片上傳中。。。(17)]根據(jù)類來(lái)分組顯示bug,就是一個(gè)類一個(gè)類顯示bug。
根據(jù)包來(lái)分組顯示bug
根據(jù)bug的等級(jí)分組顯示bug,由上至下bug的等級(jí)越來(lái)越低,也就是最上面的是最致命的。
(3)用戶體驗(yàn)幫助區(qū)
該區(qū)主要是用來(lái)幫助體驗(yàn)的
1、這個(gè)按鈕的功能是自動(dòng)定位至bug所在的位置,
在下方顯示Finbugs欄目中預(yù)覽bug文件,如下所示選中與沒(méi)選中效果:
[圖片上傳中。。。(26)]3、
4、
這個(gè)按鈕就是在設(shè)置里面設(shè)置Findbugs
(5)bug修改
檢測(cè)到bug是什么bug呢?如何修改呢,我們選中一個(gè)bug會(huì)在最右邊顯示并描述,如下圖所示,右下角綠色字體可以點(diǎn)擊鏈接至Findbugs官網(wǎng)。
問(wèn)題描述都已經(jīng)很清楚了,具體如何修改大家實(shí)在不會(huì)可以百度,或者請(qǐng)教大佬。
推薦一篇不錯(cuò)的Findbugs錯(cuò)誤規(guī)則整理的博客:
http://blog.csdn.net/jdsjlzx/article/details/21472253/