JAVA靜態代碼質量分析工具FindBugs介紹_第1頁
JAVA靜態代碼質量分析工具FindBugs介紹_第2頁
JAVA靜態代碼質量分析工具FindBugs介紹_第3頁
JAVA靜態代碼質量分析工具FindBugs介紹_第4頁
JAVA靜態代碼質量分析工具FindBugs介紹_第5頁
已閱讀5頁,還剩30頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

findBugs〔靜態分析工具〕FindBugs簡介

FindBugs的安裝FindBugs的使用自定義FindBugs檢測器FindBugs生成html形式的報告整理FindBugs簡介FindBugs是一個專門分析JAVA代碼問題的靜態代碼掃描工具,它是通過檢查java字節碼來查找代碼缺陷。很多我們寫的不好的地方,可以優化的地方,它都能檢查出來。Findbugs

是一個靜態分析工具,它檢查類或者

JAR

文件,將字節碼與一組缺陷模式進行比照以發現可能的問題。利用這個工具,就可以在不實際運行程序的情況對軟件進行分析。它可以幫助改進代碼的質量。FindBugs能做什么FindBugs可以發現的問題包括:未關閉的數據庫連接,缺少必要的nullcheck,多余的nullcheck,多余的if后置條件,相同的條件分支,重復的代碼塊,錯誤的使用了"==",建議使用StringBuffer代替字符串連加等等。而且我們還可以自己配置檢查規那么(做哪些檢查,不做哪些檢查)。Findbugs提供了方便操作的可視化界面,同時也可以作為Eclipse的一個插件來使用,而我們使用得最多的還是作為Eclipse的插件來使用。

FindBugs和其他工具的區別Checkstyle和PMD是根據樣式〔style〕來改進代碼質量的。FindBugs分析引擎它直接操作類文件〔class文件〕而不是源代碼。我們可以通過命令行、各種構建工具〔如Ant、CruiseControl、Hudson及Maven等〕、獨立的SwingGUI或是以Eclipse和NetBeansIDE插件的方式來運行FindBugs。輸出結果既可以是XML的,也可以是文本形式的。FindBugs的安裝Eclipse插件的安裝a.在Eclipse當中分別翻開一下菜單Help->SoftwareUpdates->FindandInstall

b.選擇Searchfornewfeaturestoinstall選項然后點擊Nextc.新建一個NewRemoteSite...

e.開始安裝安裝好Findbugs以后,選擇Windows->ShowView->Other…->FindBugs->BugDetails翻開BugDetails視圖。包安裝:(myeclipse安裝findBugs)1、首先從findbugs網站下載插件::///downloads.html〔附件中也有下好了的插件〕2、將下載回來的zip包解壓,得到文件夾:edu.umd.cs.findbugs.plugin.eclipse_0120712,將該文件夾拷貝到myeclipse安裝目錄下common/plugins目錄下。我的目錄結構:D:\ProgramFiles\Genuitec\Common\plugins\edu.umd.cs.findbugs.plugin.eclipse_01207123、修改myeclipse安裝目錄下configuration/org.eclipse.equinox.simpleconfigurator的文件,在文件最后添加一行:edu.umd.cs.findbugs.plugin.eclipse,0120712,file:/D:/ProgramFiles/Genuitec/Common/plugins/edu.umd.cs.findbugs.plugin.eclipse_0120712,4,false這里file后面的路徑要根據自己的目錄設置進行修改,要不然重啟myeclipse后,仍然找不到findbugs。4、重啟myeclipse,選中工程,右鍵會出現一個FindBugs菜單。至此,findbugs插件安裝完畢。FindBugs的使用Findbugs可以通過三種方法使用:Ant/Maven工具;通過Ant提供的Swing操作界面;作為Eclipse的一個插件來使用。Findbugs的Eclipse插件使用安裝了Findbugs插件后。右擊點擊你要檢查的工程選擇【FindBugs】->【FindBugs】進行檢查。要查看Findbugs檢查出了哪些Bug,可以選擇Windows菜單->ShowView->BugExplorer,翻開BugExplorer面板。如果想要查看某個Bug詳細的信息,那么可以選擇Windows菜單->OpenPerspective,然后選擇FindBugs就可以翻開FindBugs的Properties面板,在這個面板里面可以看到最詳盡的Bugs信息。FindBugs的配置選擇你的工程,右鍵=>Properties=>FindBugs=>RunFindBugsAutomatically開關當此項選中后,FindBugs將會在你修改Java類時自動運行,如你設置了Eclipse自動編譯開關后,當你修改完Java文件保存,FindBugs就會運行,并將相應的信息顯示出來。當此項沒有選中,你只能每次在需要的時候自己去運行FindBugs來檢查你的代碼。Minimumprioritytoreport選擇項這個選擇項是讓你選擇哪個級別的信息進行顯示,有Low、Medium、High三個選擇項可以選擇,很類似于Log4J的級別設置啦。比方:你選擇了High選擇項,那么只有是High級別的提示信息才會被顯示。你選擇了Medium選擇項,那么只有是Medium和High級別的提示信息才會被顯示。你選擇了Low選擇項,那么所有級別的提示信息都會被顯示Enablebugcategories選擇項Correctness關于代碼正確性相關方面的;Performance關于代碼性能相關方面的;Internationalization關于代碼國際化相關方面;Multithreadedcorrectness關于代碼多線程正確性相關方面的;Style關于代碼樣式相關方面的;Maliciouscodevulnerability關于惡意破壞代碼相關方面的;

Selectbugpatternstocheckfor選擇項

在這里你可以選擇所要進行檢查的相關的Bug

Pattern條目

可以從Bugcodes、Detectorname、Detectordescription中看到相應的是要檢查哪些方面的內容,你可以根據需要選擇或去掉相應的檢查條件自定義FindBugs檢測器編寫自定義的檢測器Detector工程中需要引入FindBugs的jar文件:findBug.jar自定義的檢測器需要繼承OpcodeStackDetector重寫其sawOpcode方法。下面用一個簡單的自定義檢測器來說明。此檢測器是用來查找工程中有沒有system.out和system.error情況出現的。建議編寫的時候可以先查看FindBugs源代碼以查找類似于你要編寫的檢測器。自定義檢測器ForbiddenSystemOutClass.java接下來找到eclipse編譯的.class文件,一般在工程的lib目錄里面可以找到。將其放入findbugs-plugin.jar文件中對應的目錄下:findbugs-plugin.jar\edu\umd\cs\findbugs\detect〔如圖〕

修改findbugs.xml文件翻開findbugs-plugin.jar文件,找到findbugs.xml和messages.xml兩個文件。雙擊翻開findbugs.xml,你可以修改原有的文件,也可以替換原有的文件為自己寫的findbugs.xml。findbugs.xml和messages.xml兩個文件findbugs.xml的編寫對于每一個新的檢測器,在FindBugs.xml文件中增加一個Detector元素和一個BugPattern元素。Detector元素指定用于實現檢測器的類以及它是快速還是慢速檢測器。speed屬性的可能值有slow、moderate和fast。BugPattern元素指定三個屬性。abbrev屬性定義檢測器的縮寫??s寫用于標識用命令行客戶運行時檢測到的缺陷??梢杂猛粋€縮寫將幾個相關的檢測器組織到一起。.type屬性是惟一標識符,有兩個用途。在使用Ant版本或者命令行版本的FindBugs且輸出格式設置為XML時,用type屬性標識問題。type屬性也是在檢測器的Java代碼中指定的,用以創立缺陷的正確類型。category屬性是枚舉類型。它是以下類型中的一種:CORRECTNESS:一般正確性問題MT_CORRECTNESS:多線程正確性問題MALICIOUS_CODE:如果公開給惡意代碼,有可能成為攻擊點PERFORMANCE:性能問題messages.xml的編寫messages.xml文件由三個元素組成:Detector、BugPattern和BugCodeDetails元素包含檢測器的簡單HTML描述,因而應當包含在CDATA局部中.BugPattern元素類似于在FindBugs.xml中定義的BugPattern元素。需要type屬性,并且它應當匹配在FindBugs.xml和在檢測器的Java代碼中使用的相同惟一標識符。BugCode元素必須用元素的屬性指定這個縮寫運行

放置好這三個文件,重啟Eclipse,在需要檢測的文件上單擊右鍵,選擇findbugs即可從檢測出帶有system.out或system.error語句。FindBugs生成html形式的報告整理之前用的是findbugs的eclipse插件,但是在導出報告的時候是xml形式的,很不易閱讀,下來講下用findbugs來導出html的報告。準備工作

下載到ant和findbugs。并且配置好它們的環境變量編寫ant腳本(build.xml)build.xml局部屬性參數說明class嵌套元素指定要分析的類。這個元素必須指定一個location屬性,location屬性的名字為archive文件(jar,zip等)、目錄或者class文件??梢詾橐粋€findbugs元素指定多個class元素。auxClasspath可選的嵌套元素,用于指定要分析的類所引用的類,但是并不對引用的類進行分析。sourcePath可選的嵌套元素,指定Java源代碼的目錄。home必須的屬性,findbugs的安裝目錄。quietErrors可選的布爾型屬性。如果是true的話,報告嚴重的分析錯誤和喪失的類。默認情況下為false。reportLevel可選的屬性。指定優先級別。如果是low的話,那么報告所有的bug,如果是medium(缺省值),報告medium和high優先級的bug。生成FindbugsReport運行cmd翻開DOS窗口,進入到build.xml所在目錄,鍵入命令antfindbugs回車即可。可能遇到的問題由于工程比較大,所以在導出html的過程中有可能產生一個空白的html。此時原因可能是JVM內存的錯〔堆棧信息之類的〕,此時將<findbugs>的jvmargs屬性改大,如改為jvmargs="-Xmx1000m",其實此屬性是可選的,也可以省略。FindBugs進階-過濾器FingBugs自定義的缺陷是很多的,當工程十分龐大的時候,一個一個查看缺陷實在是很痛苦的事情。而且有些缺陷是可以忽略的。解決方法是采用過濾器來選擇關閉特定的檢測器。匹配所有BUG<Match><Classname="com.foobar.MyClass"/></Match>匹配特定類型

Matchcertaintestsfromaclassbyspecifyingtheirabbreviations.<Match><Classname="c

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論