本文介紹如何利用Eclipse插件FindBugs在Eclipse中的使用。
Eclipse是目前非常流行的開發(fā)平臺(tái),開放擴(kuò)展的架構(gòu)讓很多程序員找到了自己個(gè)性化的工作環(huán)境。
問題提出:
當(dāng)我們編寫完代碼,做完單元測試等各種測試后就提交正式運(yùn)行,只能由運(yùn)行的系統(tǒng)來檢測我們代碼是否有問題了,代碼中隱藏的錯(cuò)誤在系統(tǒng)運(yùn)行的過程中被發(fā)現(xiàn)后,然后再來進(jìn)行相應(yīng)的修改,那么后期修改的代價(jià)就相當(dāng)高了。
解決方法:
現(xiàn)在有很多Java代碼分析工具,F(xiàn)indBugs中開源項(xiàng)目當(dāng)中的一個(gè),它可以幫你找到代碼中隱藏的一些錯(cuò)誤,提升你的代碼能力與系統(tǒng)安全可靠性。
JDK:1.5.0 從http://java.sun.com上去下載安裝
Eclipse:3.1.1 從http://www.eclipse.org 上去下載解壓
FindBugs:0.9.4 從http://findbugs.sourceforge.net/
官方的文檔 http://findbugs.sourceforge.net/manual/
Eclipse plugin for FindBugs version 0.0.17
從 http://findbugs.sourceforge.net/downloads.html 下載
Eclipse使用技巧之插件管理
提示:新下載的插件PlugIn一定不要都放在原始的Eclipse目錄下去,一大堆,累死你:(
那么就在%ECLIPSE_HOME%\PlugInsNew\目錄下建立XYZ目錄,目錄里面是eclipse目錄,eclipse目錄包含有features與plugins兩個(gè)子目錄;結(jié)構(gòu)如下圖所示:
%ECLIPSE_HOME%\PlugInsNew\XYZ\eclipse\features
%ECLIPSE_HOME%\PlugInsNew\ XYZ\eclipse\plugins
然后在%ECLIPSE_HOME%\links目錄里建立一個(gè)XYZ.link的文件
內(nèi)容如是:path=E:/OpenSource/Eclipse/PlugInsNew/XYZ就一行這樣的路徑指示而已。
這樣,如果你下載了多個(gè)插件就可以如法炮制建立多個(gè)Link文件,想加載哪個(gè)插件就把哪個(gè)插件的Link文件放到%ECLIPSE_HOME%\links的目錄中即可,使用與管理都很方便,建議千萬不要放在默認(rèn)的安裝目錄中;
如果你的%ECLIPSE_HOME%與此不同,請修改XYZ.link文件里的路徑
刪除%ECLIPSE_HOME%\links\XYZ.link文件即可
刪除%ECLIPSE_HOME%\PlugInsNew\XYZ整個(gè)目錄及文件
FindBugs插件安裝方法采用上一節(jié)的《Eclipse使用技巧之插件管理》
重新啟動(dòng)Eclipse后,在Help => About Eclipse SDK => Plug-in Details你可以看到由“FindBugs Project”提供的“FindBugs Plug-in”版本0.0.17插件,如下圖所示:
FindBugs是一個(gè)可以在Java程序中發(fā)現(xiàn)Bugs的程序。
它是專門用來尋找處于“Bug Patterns”列表中的代碼的。
Bug Patterns指很有可能是錯(cuò)誤的代碼的實(shí)例。
原文:FindBugs is a program to find bugs in Java programs. It looks for instances of "bug patterns" --- code instances that are likely to be errors.
目前FindBugs最高版本0.9.4,不過更新速度很快的,你應(yīng)當(dāng)經(jīng)常上去看看是否有新版本發(fā)布。
Eclipse plugin for FindBugs最高版本0.0.17
使用FindBugs至少需要JDK1.4.0以上版本,F(xiàn)indBugs是平臺(tái)獨(dú)立的,可以運(yùn)行于GNU/Linux、Windows、MacOS X 等平臺(tái)上。
運(yùn)行FindBugs至少需要有256 MB內(nèi)存,如果你要分析一個(gè)很大的項(xiàng)目,那就需要更加多的內(nèi)存了。
FindBugs獨(dú)立運(yùn)行和與Ant結(jié)合的詳細(xì)操作就不介紹了,可以看官方的文檔http://findbugs.sourceforge.net/manual/
獨(dú)立運(yùn)行的效果圖如下:
本文主要介紹Eclipse中使用的情況
打開Bug Details視圖
Windows => Show View => Other… => FindBugs => BugDetails
在Package Explorer或Navigator視圖中,選中你的Java項(xiàng)目,右鍵,可以看到“Find Bugs”菜單項(xiàng),子菜單項(xiàng)里有“Find Bugs”和“Clear Bug Markers”兩項(xiàng)內(nèi)容,如下圖所示:
我們建立一個(gè)簡單的測試文件Test.java 內(nèi)容如下:
public class Test{private String[] name;public String[] getName(){return name;}public void setName(String[] name){this.name = name;}}
我們點(diǎn)中“Find Bugs”,運(yùn)行時(shí)會(huì)出現(xiàn)如下進(jìn)度框:
運(yùn)行結(jié)束后可以在Problems中看到增加了如下的警告信息內(nèi)容
FindBugs運(yùn)行后的警告信息內(nèi)容不僅在Problems視圖中顯示,而且將標(biāo)記在源代碼標(biāo)記框中,在源代碼編輯器中我們可以看到警告標(biāo)識(shí),如下圖:
當(dāng)光標(biāo)指向你的警告信息的代碼上面時(shí),就會(huì)有相應(yīng)的錯(cuò)誤提示信息,與Eclipse本身的錯(cuò)誤或警告信息提示類似。
選中Problems視圖里出現(xiàn)的相應(yīng)問題,就會(huì)在代碼編輯器里切換到相應(yīng)的代碼上去,方便根據(jù)相應(yīng)的提示信息進(jìn)行代碼的修改。
will point to locations in your code which have been identified as potential instances of bug patterns.
在Problems視圖里,選中相應(yīng)的問題條目,右鍵,在彈出的菜單中,可以看到“Show Bug Details”,如下圖所示:
點(diǎn)中它,會(huì)切換到Bug Details視圖上去,顯示更加詳細(xì)的提示信息。
當(dāng)然,在代碼編輯窗口中,點(diǎn)擊帶有警告提示信息的圖標(biāo)時(shí),也會(huì)自動(dòng)切換到Bud Details窗口去,查看詳細(xì)的警告信息,如下圖所示。
根據(jù)這里詳細(xì)的信息,你可以得到FindBugs為什么會(huì)對你的代碼報(bào)警告信息,及相應(yīng)的處理辦法,根據(jù)它的提示,你可以快速方便地進(jìn)行代碼修改。
根據(jù)提示,我們將代碼修改成如下,再運(yùn)行就不會(huì)報(bào)有警告信息了。
public class Test{private String[] name;public String[] getName(){String[] temp = name;return temp;}public void setName(String[] name){String[] temp = name;this.name = temp;}}
配置FindBugs
選擇你的項(xiàng)目,右鍵 => Properties => FindBugs =>
可以配置的信息包括如上圖所示的四個(gè)選項(xiàng)的相關(guān)設(shè)置:
此插件的功能很不錯(cuò),可以幫助我們提升Java代碼的編寫能力,寫出更加安全可靠的代碼。建議使用或加在Ant里進(jìn)行持續(xù)構(gòu)建。
現(xiàn)在,你可以馬上拿出你已經(jīng)開發(fā)的一個(gè)項(xiàng)目,檢查一下你的代碼有沒有問題了。