歡迎您光臨本站 註冊首頁

開源靜態代碼分析工具-FindBugs

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
  

由馬里蘭大學Bill Pugh教授開發的FindBugs是一個開源的(LGPL)靜態代碼分析工具(無需運行就能對代碼進行分析的工具),目的是找出Java代碼中的常見缺陷。現在使用FindBugs的人越來越多了,很多知名企業包括美國銀行、eBay、Oracle、Sun Microsystems以及Google等都在使用FindBugs,此外Bill Pugh還是Google的訪問學者。

Findbugs主要著眼於尋找代碼中的缺陷,這就與其他類似工具有些區別了,比如說Checkstyle和PMD就是根據樣式(style)來改進代碼質量的。FindBugs分析引擎與Checkstyle和PMD也有所不同,因為它直接操作類文件(class文件)而不是源代碼。我們可以通過命令行、各種構建工具(如Ant、Cruise Control、Hudson及Maven等)、獨立的Swing GUI或是以Eclipse和NetBeans IDE插件的方式來運行FindBugs。輸出結果既可以是XML的,也可以是文本形式的。目前的FindBugs分析引擎已經對大約300個不同的bug模式進行過測試。完成這個工作的檢測器也是非常直觀的,同時該軟體還支持插件架構,這樣開發者就可以增加自己的檢測器了。與PMD通過模式語言來描述bug不同,FindBugs的檢測器是用Java開發的。

開發者可以通過多種方式來使用靜態代碼分析工具,最常見的兩個使用場景分別是在新編寫模塊的代碼審查上以及對現有代碼進行更大範圍的審查上。這兩個使用場景其實是有很大區別的。對於前一種情況,開發者通常會檢查工具所發現的有疑問的代碼,然後去修改代碼(即便這個問題對應用本身並沒有什麼影響時也是如此)。與此相反,在審查已有代碼時,由於代碼已經處於產品階段且並沒有造成什麼明顯的問題,開發者在修改之前需要先熟悉一下代碼,因此其修改代價就很高了。FindBugs分析引擎一直在持續地改進,同時新的1.3.9版中還添加了12個新的檢測器,自從1.3.9之後FindBugs就開始重點解決第二種情況了。比如說,FindBugs總是將每一種bug模式劃分到某個類別中,如正確性、最差實踐、性能與國際化等,然後為其指定高、中、低優先順序。對於開發者來說,可以通過這種方式從龐大的代碼中過濾掉那些不重要的缺陷。這個概念在1.3.9版中得到了擴充:增加了bug級別(1—20)以及根據級別進行過濾的能力。即將於今年底發布的2.0版還可以根據用戶自己定製的優先順序來客戶化bug級別信息。

FindBugs 2.0的一個重要特性就是社區審查,意思就是說任何人都能檢查開源項目中的問題(比如說將其標識成“必須解決”或是“沒什麼問題”等),同時這些審查信息會持久化到一個中央存儲中,而其他審查者則可以自動共享這些內容。我們可以通過FindBugs站點來獲取該功能的早期beta版,其上的一個Java Web Start應用顯示了對Sun JDK 7以及Eclipse 3.5(Java 1.5+)的審查結果,同時該功能也通過了Google的考核,正如FindBugs主頁上所說:

今年5月13、14日這兩天,Google專門針對UMD FindBugs靜態代碼分析工具舉辦了一個全球大會,用以找出Java軟體中的代碼問題。此次大會的重心在於讓Google的工程師們決定FindBugs所找出的Google4,000個最高優先順序問題中所需修復的問題。700多個工程師運行了FindBugs。其中250多個工程師檢查了8,000多個問題。每個檢查其實就是對問題的一種分類:必須修復、應該修復、沒什麼影響、並非bug以及其他幾個類別。其中有超過75%的檢查將問題標為必須修復、應該修復或是我會修復。其中每個問題都被檢查了10遍以上。

這些工程師們已經提交的變更修正了3,800個問題當中的1,100多個,他們提出了1,700個bug報告,其中的600個已經被標示為修復。隨後人們繼續對這些問題加以討論並打算將FindBugs集成到Google的軟體開發過程當中。

此次大會還展示了FindBugs的一些新功能:以雲計算與社交網路為背景。對問題的審查會被立刻持久化到中央存儲當中,這樣其他開發者也能看到這些問題了,同時FindBugs還被集成到了Google的內部工具當中以查看bug報告及瀏覽源代碼的版本控制歷史。對於此次大會來說,FindBugs被設置為這樣一種模式:工程師只有進入到自己的審查后才能查看別人的審查結果,之後配置又被改成更加開發的形式:工程師無需提供自己的審查結果就能查看別人的了。

靜態代碼分析工具並非銀彈,其他的一些技術比如設計、代碼審查以及測試等也非常重要,但如果恰當使用的話無論對個人還是項目來說都會收到意想不到的效果。

查看英文原文:Bill Pugh Releases FindBugs 1.3.9



[火星人 ] 開源靜態代碼分析工具-FindBugs已經有561次圍觀

http://coctec.com/news/soft/show-post-73691.html