登入  |  English
新聞

FindBugs

Java Opensources for Web Development Part I:
Chapter 5 檢測程式碼
Lession 21 : FindBugs

當一個系統開發完畢之後,應該沒有編譯錯誤,但是很難說沒有 Bug 存在,所以我們會希望有一些小工具來檢測程式碼有沒有「可能是」BUG 的錯誤存在。FindBug 是由許多公司與組織所支持的一個開放原始碼專案,如 FORTIFY、Google、SUN、NSF、University of Maryland 等。在各種有名的專案也利用 FindBugs 作為專案是出前的最後檢測,如 Glassfish、JSF、SAT4j 等等。因此現在有越來越多的 java 開發族群,開始學習使用 FindBugs 讓系統的臭蟲可以在使用者測試之前就被清除。

簡單來說,FindBugs 是利用 Bug 的 pattern 進行程式碼的比對,進而了解系統之中是否有臭蟲存在。有時候,在開發程式的時候,可能無法得知這邏輯會造成系統的效能負擔,或是程式的撰寫方式是錯誤的觀念,都會被發現。FindBugs 有許多執行的方式,可以用 Command-Line 直接利用 findbugs (findbugs.bat on Windows) 執行圖型化操作介面,或是加入 –textui 參數使用文字介面。

{mosimage}

當然,也可以結合 ant 來使用,不過我通常是利用 Eclipse 的 Plugins 模式。

可以利用 Eclipse Update 功能設定新更新站台 https://findbugs.cs.umd.edu/eclipse/ 進行 findbugs 的 plugins 功能。

{mosimage}

直接在專案選擇 Find Bugs 中的 Find Bugs,會針對該專案或是單一檔案進行 Bug Pattern 的比對,如果有 Bug 產生,將會在該程式碼前面標示 Bug 的符號。並且在 Bug Detail 框框或 Hint 資訊可以看到一些說明。

我會建議把 Bug Tree View 打開,從 Eclipse [Window] -> [Show View]->[Others..] 打開 Bug Tree View。

{mosimage}

就可以查看並且快速跳到該 Bug 的程式碼位置。

{mosimage}

如果我們要對於每個專案調整 Bug Pattern 的設定,在各 project 的 Properties 參數中找到 FindBugs 的屬性。

{mosimage}

如果勾選 Run FindBugs automatically 就會在建立 / 修改檔案時,自動偵測是否有 Bug 存在,另外 Report 的等級可以針對檢測的等級進行調整,我通常會設定 “High”,如果想要寫出更不具爭議性的程式碼,可以調整為 “Low”,讓 FindBugs 好好檢查你的程式。另外,檢測的類型目前分為 Performance 效能、Correctness 正確性、Internationalization 國際化、Multithreaded correctness 多執行緒正確性、Bad Pratice 壞習慣、Dodgy 模擬兩可的、Malicious code vulnerability 惡意破壞的 等等類型,所以,依照你的習慣是否檢查或不檢查某些類型。

開發測試工程,是軟體開發的最後一道防線,希望 FindBugs 可以協助大家做最後的把關!




自由軟體鑄造場電子報 : 第 88 期 親和力部門

分類: 技術專欄