版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、findBugs(靜態(tài)分析工具)2vFindBugs簡介 vFindBugs的安裝vFindBugs的使用v自定義FindBugs檢測器vFindBugs生成html形式的報告整理3FindBugs簡介FindBugsFindBugs是一個專門分析JAVAJAVA代碼問題的靜態(tài)代碼掃描工具, ,它是通過檢查javajava字節(jié)碼來查找代碼缺陷。很多我們寫的不好的地方, ,可以優(yōu)化的地方, ,它都能檢查出來。FindbugsFindbugs 是一個靜態(tài)分析工具, ,它檢查類或者 JARJAR 文件, ,將字節(jié)碼與一組缺陷模式進行對比以發(fā)現(xiàn)可能的問題。利用這個工具, ,就可以在不實際運行程序的情況
2、對軟件進行分析。它可以幫助改進代碼的質量。4FindBugs能做什么FindBugsFindBugs可以發(fā)現(xiàn)的問題包括: :未關閉的數(shù)據(jù)庫連接, ,缺少必要的null check,null check,多余的 null null check,check,多余的ifif后置條件, ,相同的條件分支, ,重復的代碼塊, ,錯誤的使用了=,=,建議使用StringBufferStringBuffer代替字符串連加等等。而且我們還可以自己配置檢查規(guī)則( (做哪些檢查, ,不做哪些檢查) )。FindbugsFindbugs提供了方便操作的可視化界面, ,同時也可以作為EclipseEclipse的一個
3、插件來使用, ,而我們使用得最多的還是作為EclipseEclipse的插件來使用。5FindBugs和其他工具的區(qū)別CheckstyleCheckstyle和和PMDPMD是根據(jù)樣式(是根據(jù)樣式(stylestyle) 來改來改進代碼質量的。進代碼質量的。FindBugsFindBugs分析引擎它直接操作類文件(分析引擎它直接操作類文件(classclass文文 件)而不是源代碼。我們可以通過命令行、各種件)而不是源代碼。我們可以通過命令行、各種構建工具(如構建工具(如AntAnt、Cruise ControlCruise Control、HudsonHudson及及MavenMaven等)
4、、獨立的等)、獨立的Swing GUISwing GUI或是以或是以EclipseEclipse和和NetBeans IDENetBeans IDE插件的方式來運行插件的方式來運行FindBugsFindBugs。輸。輸出結果既可以是出結果既可以是XMLXML的的, ,也可以是文本形式的。也可以是文本形式的。6FindBugs的安裝vEclipse插件的安裝 a.a.在EclipseEclipse當中分別打開一下菜單 Help-Software Help-Software Updates-Find and Install Updates-Find and Install b. b.選擇 Sea
5、rch for new features to install Search for new features to install 選項然后點擊 Next Next c. c.新建一個 New Remote Site. New Remote Site. d. d.輸入名稱(比如: :Findbugs Plug-inFindbugs Plug-in)和下面 的URL:URL: e. e. 開始安裝 安裝好FindbugsFindbugs以后, ,選擇Windows - Show View - Windows - Show View - OtherOther - FindBugs - BugDe
6、tails - FindBugs - BugDetails打開Bug DetailsBug Details視圖。7v包安裝包安裝: :(myeclipse(myeclipse安裝安裝findBugs) findBugs) 1 1 、首先從、首先從findbugsfindbugs網(wǎng)站下載插件網(wǎng)站下載插件: : (附件中也有下好了的(附件中也有下好了的插件)插件)2 2、將下載回來的、將下載回來的zipzip包解壓包解壓, ,得到文件得到文件夾夾:edu.umd.cs.findbugs.plugin.eclipse_01207:edu.umd.cs.findbugs.plugin.e
7、clipse_0120712 ,12 ,將該文件夾拷貝到將該文件夾拷貝到myeclipsemyeclipse安裝目錄下安裝目錄下common/pluginscommon/plugins目錄下。我的目錄結構目錄下。我的目錄結構:D:Program :D:Program FilesGenuitecCommonpluginsedu.umd.cs.findbugs.FilesGenuitecCommonpluginsedu.umd.cs.findbugs.plugin.eclipse_0120712 plugin.eclipse_0120712 83 3、修改
8、myeclipsemyeclipse安裝目錄下configuration/org.eclipse.equinox.simpleconfiguratconfiguration/org.eclipse.equinox.simpleconfiguratoror的文件, ,在文件最后添加一行: : edu.umd.cs.findbugs.plugin.eclipse,0120712, edu.umd.cs.findbugs.plugin.eclipse,0120712, 這里filefile后面的路徑要根據(jù)自己的目錄設置進行修
9、改, ,要不然重啟myeclipsemyeclipse后, ,仍然找不到findbugsfindbugs。 4 4、重啟myeclipse,myeclipse,選中項目, ,右鍵會出現(xiàn)一個Find BugsFind Bugs菜單。至此,findbugs,findbugs插件安裝完畢。 9FindBugs的使用FindbugsFindbugs可以通過三種方法使用可以通過三種方法使用: :Ant/MavenAnt/Maven工具工具; ;通過通過AntAnt提供的提供的SwingSwing操作界面操作界面; ;作為作為EclipseEclipse的一個插件來使用。的一個插件來使用。10Findbu
10、gs的Eclipse插件使用安裝了安裝了FindbugsFindbugs插件后。右擊點擊你要檢查的插件后。右擊點擊你要檢查的項目選擇項目選擇【Find BugsFind Bugs】-【Find BugsFind Bugs】進行進行檢查。檢查。要查看要查看FindbugsFindbugs檢查出了哪些檢查出了哪些Bug,Bug,可以選擇可以選擇WindowsWindows菜單菜單-Show View-Bug Explorer-Show View-Bug Explorer, ,打開打開Bug ExplorerBug Explorer面板。面板。如果想要查看某個如果想要查看某個BugBug詳細的信息詳
11、細的信息, ,則可以選擇則可以選擇WindowsWindows菜單菜單-Open Perspective-Open Perspective, ,然后選擇然后選擇FindBugsFindBugs就可以打開就可以打開FindBugsFindBugs的的PropertiesProperties面面板板, ,在這個面板里面可以看到最詳盡的在這個面板里面可以看到最詳盡的BugsBugs信息。信息。12FindBugs的配置 選擇你的項目選擇你的項目, ,右鍵右鍵 = Properties = = Properties = FindBugs =FindBugs =vRun FindBugs Automat
12、icallyRun FindBugs Automatically開關開關 當此項選中后當此項選中后,FindBugs,FindBugs將會在你修改將會在你修改JavaJava類時類時自動運行自動運行, ,如你設置了如你設置了EclipseEclipse自動編譯開關后自動編譯開關后, ,當當你修改完你修改完JavaJava文件保存文件保存,FindBugs,FindBugs就會運行就會運行, ,并將并將相應的信息顯示出來。當此項沒有選中相應的信息顯示出來。當此項沒有選中, ,你只能每你只能每次在需要的時候自己去運行次在需要的時候自己去運行FindBugsFindBugs來檢查你的來檢查你的代碼。
13、代碼。 13vMinimum priority to report選擇項 這個選擇項是讓你選擇哪個級別的信息進行顯示,有Low、Medium、High三個選擇項可以選擇,很類似于Log4J的級別設置啦。比如:你選擇了High選擇項,那么只有是High級別的提示信息才會被顯示。你選擇了Medium選擇項,那么只有是Medium和High級別的提示信息才會被顯示。你選擇了Low選擇項,那么所有級別的提示信息都會被顯示14Enable bug categories選擇項 Correctness關于代碼正確性相關方面的; Performance關于代碼性能相關方面的; Internationaliza
14、tion關于代碼國際化相關方面; Multithreaded correctness關于代碼多線程正確性相關方面的; Style關于代碼樣式相關方面的; Malicious code vulnerability關于惡意破壞代碼相關方面的; 15vSelect bug patterns to check for選擇項 在這里你可以選擇所要進行檢查的相關的Bug Pattern條目 可以從Bug codes、Detector name、Detector description中看到相應的是要檢查哪些方面的內(nèi)容,你可以根據(jù)需要選擇或去掉相應的 檢查條件1617自定義FindBugs檢測器v編寫自定義
15、的檢測器Detector 項目中需要引入FindBugs的jar文件:findBug.jar自定義的檢測器需要繼承OpcodeStackDetector重寫其sawOpcode方法。下面用一個簡單的自定義檢測器來說明。此檢測器是用來查找項目中有沒有system.out和system.error情況出現(xiàn)的。建議編寫的時候可以先查看FindBugs源代碼以查找類似于你要編寫的檢測器。18自定義檢測器ForbiddenSystemOutClass.java19 接下來找到接下來找到eclipseeclipse編譯的編譯的.class.class文件文件, ,一般在一般在項目的項目的liblib目錄里
16、面可以找到。將其放入目錄里面可以找到。將其放入findbufindbugs-plugin.jargs-plugin.jar文件中對應的目錄下文件中對應的目錄下: :findbugs -findbugs -plugin.jareduumdcsfindbugsdetectplugin.jareduumdcsfindbugsdetect(如圖)(如圖) 20v修改修改findbugs.xmlfindbugs.xml文件文件 找到找到EclipseEclipse插件安裝文件夾中插件安裝文件夾中findbugs-findbugs-plugin.jarplugin.jar所在的文件夾所在的文件夾, ,我的
17、文件夾我的文件夾是是: :D:ProgramFilesGenuitecCommonpluginsD:ProgramFilesGenuitecCommonpluginsedu.umd.cs.findbugs.plugin.eclipse_2.0.1.edu.umd.cs.findbugs.plugin.eclipse_012071220120712 打開打開findbugs-plugin.jarfindbugs-plugin.jar文件文件, ,找到找到findbugs.xmlfindbugs.xml和和messages.xmlmessages.xml兩個文件。雙擊打兩個文件。雙擊
18、打開開findbugs.xml,findbugs.xml,你可以修改原有的文件你可以修改原有的文件, ,也可以也可以替換原有的文件為自己寫的替換原有的文件為自己寫的findbugs.xmlfindbugs.xml。21findbugs.xml和messages.xml兩個文件22findbugs.xml的編寫v 對于每一個新的檢測器對于每一個新的檢測器, ,在在 FindBugs.xml FindBugs.xml 文件中增加一文件中增加一個個 Detector Detector 元素和一個元素和一個 BugPattern BugPattern 元素。元素。 Detector Detector
19、元素指定用于實現(xiàn)檢測器的類以及它是快速還是慢速檢測元素指定用于實現(xiàn)檢測器的類以及它是快速還是慢速檢測器。器。speed speed 屬性的可能值有屬性的可能值有 slow slow、moderate moderate 和和 fast fast。v BugPattern BugPattern 元素指定三個屬性。元素指定三個屬性。 abbrev abbrev 屬性定義檢測屬性定義檢測器的縮寫??s寫用于標識用命令行客戶運行時檢測到的缺器的縮寫??s寫用于標識用命令行客戶運行時檢測到的缺陷??梢杂猛粋€縮寫將幾個相關的檢測器組織到一起。陷。可以用同一個縮寫將幾個相關的檢測器組織到一起。. .23vtyp
20、e 屬性是惟一標識符,有兩個用途。在使用 Ant 版本或者命令行版本的 FindBugs 且輸出格式設置為 XML 時,用 type 屬性標識問題。 type 屬性也是在檢測器的 Java 代碼中指定的,用以創(chuàng)建缺陷的正確類型。 category 屬性是枚舉類型。它是以下類型中的一種:CORRECTNESS :一般正確性問題MT_CORRECTNESS :多線程正確性問題MALICIOUS_CODE :如果公開給惡意代碼,有可能成為攻擊點PERFORMANCE :性能問題24messages.xml的編寫25vmessages.xml 文件由三個元素組成: Detector 、 BugPatt
21、ern 和 BugCode vDetails 元素包含檢測器的簡單 HTML 描述,因而應當包含在 CDATA 部分中.vBugPattern 元素類似于在 FindBugs.xml 中定義的 BugPattern 元素。需要 type 屬性,并且它應當匹配在 FindBugs.xml 和在檢測器的 Java 代碼中使用的相同惟一標識符。v BugCode 元素必須用元素的屬性指定這個縮寫26v運行 放置好這三個文件,重啟Eclipse,在需要檢測的文件上單擊右鍵,選擇findbugs即可從檢測出帶有system.out或system.error語句。27FindBugs生成html形式的報告整理v之前用的是findbugs的eclipse插件,但是在導出報告的時候是xml形式的,很不易閱讀,下來講下用findbugs來導出html的報告。v準備工作 下載到ant和findbugs。并且配置好它們的環(huán)境變量2829編寫ant腳本(build.xml)30build.xml部分屬性參數(shù)說明vclass 嵌套元素指定要分析的類。這個元素必須指定一個location屬性
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025國際商事合同通則的“艱難情形規(guī)則”對我國合同法的借鑒意義
- 2025尚智喜服飾代理合同范本
- 2025年度智能家居門系統(tǒng)安裝及售后服務合同范本4篇
- 二零二四年度中小企業(yè)市場拓展與品牌合作合同3篇
- 二婚再婚2024年度婚姻財產(chǎn)規(guī)劃合同3篇
- 2025年度高速公路建設承包合同范本模板4篇
- 秸稈化學機械漿化學改性及其增強機制研究
- 2025年度牧業(yè)廢棄物處理與承包運營合同4篇
- 2025年度古建筑修復專業(yè)木工施工合同4篇
- 2025年度商業(yè)地產(chǎn)租賃保證金合同協(xié)議書8篇
- 2023-2024學年度人教版一年級語文上冊寒假作業(yè)
- 軟件運維考核指標
- 空氣動力學仿真技術:格子玻爾茲曼方法(LBM)簡介
- 對表達方式進行選擇與運用
- GB/T 18488-2024電動汽車用驅動電機系統(tǒng)
- 投資固定分紅協(xié)議
- 高二物理題庫及答案
- 職業(yè)發(fā)展展示園林
- 七年級下冊英語單詞默寫表直接打印
- 2024版醫(yī)療安全不良事件培訓講稿
- 中學英語教學設計PPT完整全套教學課件
評論
0/150
提交評論