在eclipse中使用findbug

當我們編寫完代碼,做完單元測試等各種測試後就提交正式運行,只能由運行的系統來檢測我們代碼是否有問題了,代碼中隱藏的錯誤在系統運行的過程中被發現後,然後再來進行相應的修改,那麼後期修改的代價就相當高了。

  現在有很多Java代碼分析工具,FindBugs中開源項目當中的一個,它可以幫你找到代碼中隱藏的一些錯誤,提升你的代碼能力與系統安全可靠性。

  安裝

  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 下載

  插件管理技巧

  提示:新下載的插件PlugIn一定不要都放在原始的Eclipse目錄下去。

  1. 前提是你已經安裝好了Eclipse工具了,比如安裝在E:/OpenSource/Eclipse/目錄下,以下這個目錄以%ECLIPSE_HOME%來進行表示;
  2. 此時默認的插件是在%ECLIPSE_HOME%/plugins目錄中的;
  3. 在%ECLIPSE_HOME%下建立一個PlugInsNew的目錄;
     比如:E:/OpenSource/Eclipse/PlugInsNew/
  4. 你下載了個新的插件,比如叫做:XYZ
      那麼就在%ECLIPSE_HOME%/PlugInsNew/目錄下建立XYZ目錄,目錄裏面是eclipse目錄,eclipse目錄包含有features與plugins兩個子目錄;結構如下圖所示:
點擊在新窗口中瀏覽此圖片
  5. 把下載的新插件的文件放在以下相應目錄中
     %ECLIPSE_HOME%/PlugInsNew/XYZ/eclipse/features
     %ECLIPSE_HOME%/PlugInsNew/ XYZ/eclipse/plugins
  6. 建立相關的.link的文件
     然後在%ECLIPSE_HOME%/links目錄裏建立一個XYZ.link的文件
     內容如是:path=E:/OpenSource/Eclipse/PlugInsNew/XYZ就一行這樣的路徑指示而已。
     當然,採用相對路徑來表示可能更直觀一些,方便進行文件整體移動和小組全部成員的共享命名用,省得移動後要改動Link文件裏的絕對路徑而費心費力。直接拷貝過去就可以使用。
     即XYZ.link文件的內容如是:path=../PlugInsNew/XYZ
     這樣,如果你下載了多個插件就可以如法炮製建立多個Link文件,想加載哪個插件就把哪個插件的Link文件放到%ECLIPSE_HOME%/links的目錄中即可,使用與管理都很方便,建議千萬不要放在默認的安裝目錄中;
     如果你的%ECLIPSE_HOME%與此不同,請修改XYZ.link文件裏的路徑
  7. 刪除,關閉Eclipse
     刪除%ECLIPSE_HOME%/links/XYZ.link文件即可
     刪除%ECLIPSE_HOME%/PlugInsNew/XYZ整個目錄及文件
  8. 重新啓動Eclipse即可

  使用

  重新啓動Eclipse後,在Help => About Eclipse SDK => Plug-in Details你可以看到由“FindBugs Project”提供的“FindBugs Plug-in”版本0.0.17插件,如下圖所示:
點擊在新窗口中瀏覽此圖片
FindBugs的使用方法

  FindBugs是一個可以在Java程序中發現Bugs的程序。

  它是專門用來尋找處於“Bug Patterns”列表中的代碼的。

  Bug Patterns指很有可能是錯誤的代碼的實例。

  目前FindBugs最高版本1.1.3,不過更新速度很快的,你應當經常上去看看是否有新版本發佈。Eclipse plugin for FindBugs最高版本1.1.3。

  系統要求

  使用FindBugs至少需要JDK1.4.0以上版本,FindBugs是平臺獨立的,可以運行於GNU/Linux、Windows、MacOS X 等平臺上。

  運行FindBugs至少需要有256 MB內存,如果你要分析一個很大的項目,那就需要更加多的內存了。

  FindBugs獨立運行和與Ant結合的詳細操作就不介紹了,可以看官方的文檔http://findbugs.sourceforge.net/manual/

  獨立運行的效果圖如下:
點擊在新窗口中瀏覽此圖片
本文主要介紹在Eclipse中使用的情況

  打開Bug Details視圖

  Windows => Show View => Other… => FindBugs => BugDetails
點擊在新窗口中瀏覽此圖片

在Package Explorer或Navigator視圖中,選中你的Java項目,右鍵,可以看到“Find Bugs”菜單項,子菜單項裏有“Find Bugs”和“Clear Bug Markers”兩項內容,如下圖所示:
點擊在新窗口中瀏覽此圖片

我們建立一個簡單的測試文件Test.java 內容如下:

public class Test
{
private String[] name;
public String[] getName()
{
return name;
}

public void setName(String[] name)
{
this.name = name;
}
}


  我們點中“Find Bugs”,運行時會出現如下進度框:

  運行結束後可以在Problems中看到增加了如下的警告信息內容

  FindBugs運行後的警告信息內容不僅在Problems視圖中顯示,而且將標記在源代碼標記框中,在源代碼編輯器中我們可以看到警告標識,如下圖:

  當光標指向你的警告信息的代碼上面時,就會有相應的錯誤提示信息,與Eclipse本身的錯誤或警告信息提示類似。

  選中Problems視圖裏出現的相應問題,就會在代碼編輯器裏切換到相應的代碼上去,方便根據相應的提示信息進行代碼的修改。
點擊在新窗口中瀏覽此圖片

   在Problems視圖裏,選中相應的問題條目,右鍵,在彈出的菜單中,可以看到“Show Bug Details”,如下圖所示:
點擊在新窗口中瀏覽此圖片

     點中它,會切換到Bug Details視圖上去,顯示更加詳細的提示信息。

  當然,在代碼編輯窗口中,點擊帶有警告提示信息的圖標時,也會自動切換到Bud Details窗口去,查看詳細的警告信息,如下圖所示。
點擊在新窗口中瀏覽此圖片

     根據這裏詳細的信息,你可以得到FindBugs爲什麼會對你的代碼報警告信息,及相應的處理辦法,根據它的提示,你可以快速方便地進行代碼修改。
點擊在新窗口中瀏覽此圖片

根據提示,我們將代碼修改成如下,再運行就不會報有警告信息了。

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

  選擇你的項目,右鍵 => Properties => FindBugs =>
點擊在新窗口中瀏覽此圖片

可以配置的信息包括如上圖所示的四個選項的相關設置:

  1. Run FindBugs Automatically開關

     當此項選中後,FindBugs將會在你修改Java類時自動運行,如你設置了Eclipse自動編譯開關後,當你修改完Java文件保存,FindBugs就會運行,並將相應的信息顯示出來。

     當此項沒有選中,你只能每次在需要的時候自己去運行FindBugs來檢查你的代碼。

  2. Minimum priority to report選擇項

     這個選擇項是讓你選擇哪個級別的信息進行顯示,有Low、Medium、High三個選擇項可以選擇,很類似於Log4J的級別設置啦。 比如:

     你選擇了High選擇項,那麼只有是High級別的提示信息纔會被顯示。

     你選擇了Medium選擇項,那麼只有是Medium和High級別的提示信息纔會被顯示。

     你選擇了Low選擇項,那麼所有級別的提示信息都會被顯示。

  3. Enable bug categories選擇項

     在這裏是一些顯示Bug分類的選擇:

     Correctness關於代碼正確性相關方面的

     Performance關於代碼性能相關方面的

     Internationalization關於代碼國際化相關方面的

     Multithreaded correctness關於代碼多線程正確性相關方面的

     Style關於代碼樣式相關方面的

     Malicious code vulnerability關於惡意破壞代碼相關方面的

     比如:如果你把Style的檢查框去掉不選擇中它,那麼與Style分類相關的警告信息就不會顯示了。其它的類似。

  4. Select bug patterns to check for選擇項

     在這裏你可以選擇所要進行檢查的相關的Bug Pattern條目

     可以從Bug codes、Detector name、Detector description中看到相應的是要檢查哪些方面的內容,你可以根據需要選擇或去掉相應的 檢查條件。

  總結

  此插件的功能很不錯,可以幫助我們提升Java代碼的編寫能力,寫出更加安全可靠的代碼。建議使用或加在Ant裏進行持續構建。

  現在,你可以馬上拿出你已經開發的一個項目,檢查一下你的代碼有沒有問題了。
剛剛發現了另外一種更加簡單的安裝方法,詳情見:http://findbugs.cs.umd.edu/eclipse
   If you have previously installed a version of the FindBugs plugin prior to mid-May, 2006, then you should remove it first. Simply remove the de.tobject.findbugs_0.0.n directory from Eclipse's plugins directory.

To install the FindBugs plugin:

  1. In Eclipse, click on Help -> Software Update -> Find and Install...
  2. Choose the Search for new features to install option, and click Next.
  3. Click New Remote Site.
  4. Enter the following:
         * Name: FindBugs update site
         * URL: one of the following (note: no final slash on the url)
               o http://findbugs.cs.umd.edu/eclipse for official releases
               o http://findbugs.cs.umd.edu/eclipse-candidate for candidate releases and official releases
               o http://findbugs.cs.umd.edu/eclipse-daily for all releases, inculding developmental ones
     and click OK.
  5. "FindBugs update site" should appear under Sites to include in search.
     Click the checkbox next to it to select it, and click Finish.
  6. You should see FindBugs Feature under Select features to install.
     (You may have to click on one or two triangles to make it visible in the tree.)
     Select the checkbox next to it and click next.
  7. Select the I accept option to accept the license and click Next.
  8. Make sure the location is correct where you're installing it. The default (your workspace) should be fine. Click Finish.
  9. The plugin is not digitally signed. Go ahead and install it anyway.
 10. Click Yes to make Eclipse restart itself.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章