版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、findBugs(靜態(tài)分析工具)vFindBugs簡介簡介 vFindBugs的安裝的安裝vFindBugs的使用的使用v自定義自定義FindBugs檢測器檢測器vFindBugs生成生成html形式的報告整理形式的報告整理FindBugs簡介vFindBugsFindBugs是一個專門分析是一個專門分析JAVAJAVA代碼問題的代碼問題的靜態(tài)代碼掃描工具,它是通過檢查靜態(tài)代碼掃描工具,它是通過檢查javajava字字節(jié)碼來查找代碼缺陷。很多我們寫的不好節(jié)碼來查找代碼缺陷。很多我們寫的不好的地方,可以優(yōu)化的地方,它都能檢查出的地方,可以優(yōu)化的地方,它都能檢查出來來。vFindbugsFindb
2、ugs 是一個靜態(tài)分析工具,它檢查類是一個靜態(tài)分析工具,它檢查類或者或者 JARJAR 文件,將字節(jié)碼與一組缺陷模式文件,將字節(jié)碼與一組缺陷模式進行對比以發(fā)現(xiàn)可能的問題。利用這個工進行對比以發(fā)現(xiàn)可能的問題。利用這個工具,就可以在不實際運行程序的情況對軟具,就可以在不實際運行程序的情況對軟件進行分析。它可以幫助改進代碼的質(zhì)量。件進行分析。它可以幫助改進代碼的質(zhì)量。FindBugs能做什么vFindBugsFindBugs可以發(fā)現(xiàn)的問題包括:未關閉的可以發(fā)現(xiàn)的問題包括:未關閉的數(shù)據(jù)庫連接,缺少必要的數(shù)據(jù)庫連接,缺少必要的null checknull check,多,多余的余的 null check
3、 null check,多余的,多余的ifif后置條件,相后置條件,相同的條件分支,重復的代碼塊,錯誤的使同的條件分支,重復的代碼塊,錯誤的使用了用了=,建議使用,建議使用StringBufferStringBuffer代替字代替字符串連加等等。而且我們還可以自己配置符串連加等等。而且我們還可以自己配置檢查規(guī)則檢查規(guī)則( (做哪些檢查做哪些檢查, ,不做哪些檢查不做哪些檢查) )。vFindbugsFindbugs提供了方便操作的可視化界面,提供了方便操作的可視化界面,同時也可以作為同時也可以作為EclipseEclipse的一個插件來使用,的一個插件來使用,而我們使用得最多的還是作為而我們使
4、用得最多的還是作為EclipseEclipse的插的插件來使用件來使用。FindBugs和其他工具的區(qū)別vCheckstyleCheckstyle和和PMDPMD是根據(jù)樣式(是根據(jù)樣式(stylestyle) 來改進代碼質(zhì)量的。來改進代碼質(zhì)量的。vFindBugsFindBugs分析引擎它直接操作類文件分析引擎它直接操作類文件(classclass文文 件)而不是源代碼。我們可以件)而不是源代碼。我們可以通過命令行、各種構(gòu)建工具(如通過命令行、各種構(gòu)建工具(如AntAnt、Cruise ControlCruise Control、HudsonHudson及及MavenMaven等)、獨等)、獨
5、立的立的Swing GUISwing GUI或是以或是以EclipseEclipse和和NetBeans NetBeans IDEIDE插件的方式來運行插件的方式來運行FindBugsFindBugs。輸出結(jié)果。輸出結(jié)果既可以是既可以是XMLXML的,也可以是文本形式的。的,也可以是文本形式的。FindBugs的安裝vEclipse插件的安裝插件的安裝 a.a.在在EclipseEclipse當中分別打開一下菜單當中分別打開一下菜單 Help-Software Help-Software Updates-Find and Install Updates-Find and Install b.
6、b.選擇選擇 Search 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)和下面)和下面 的的URLURL:/eclipse/eclipse e. e. 開始安裝開始安裝
7、 安裝好安裝好FindbugsFindbugs以后,選擇以后,選擇Windows - Show View - Windows - Show View - Other - FindBugs - BugDetailsOther - FindBugs - BugDetails打開打開Bug DetailsBug Details視視圖。圖。v包安裝:包安裝:(myeclipse(myeclipse安裝安裝findBugs) findBugs) 1 1 、首先從、首先從findbugsfindbugs網(wǎng)站下載插件:網(wǎng)站下載插件:http:/ http:/ (附件中也有下好了的插件)(附件中也有下好了的插
8、件)2 2、將下載回來的、將下載回來的zipzip包解壓,得到文件夾:包解壓,得到文件夾:edu.umd.cs.findbugs.plugin.eclipse_0120712 edu.umd.cs.findbugs.plugin.eclipse_0120712 ,將該文件夾拷貝到將該文件夾拷貝到myeclipsemyeclipse安裝目錄下安裝目錄下common/pluginscommon/plugins目錄下。我的目錄結(jié)構(gòu):目錄下。我的目錄結(jié)構(gòu):D:Program D:Program FilesGenuitecCommonpluginsedu.umd.cs.fin
9、dbugs.FilesGenuitecCommonpluginsedu.umd.cs.findbugs.plugin.eclipse_0120712 plugin.eclipse_0120712 3 3、修改、修改myeclipsemyeclipse安裝目錄下安裝目錄下configuration/org.eclipse.equinox.simpleconfiguratconfiguration/org.eclipse.equinox.simpleconfiguratoror的的文件,在文件最后添加一行:文件,在文件最后
10、添加一行: edu.umd.cs.findbugs.plugin.eclipse,0120712,edu.umd.cs.findbugs.plugin.eclipse,0120712,file:/D:/ProgramFiles/Genuitec/Common/plugins/edu.file:/D:/ProgramFiles/Genuitec/Common/plugins/edu.umd.cs.findbugs.plugin.eclipse_0120712,4,faumd.cs.findbugs.plugin.eclipse_012071
11、2,4,falselse 這里這里filefile后面的路徑要根據(jù)自己的目錄設置進行修改,要后面的路徑要根據(jù)自己的目錄設置進行修改,要不然重啟不然重啟myeclipsemyeclipse后,仍然找不到后,仍然找不到findbugsfindbugs。 4 4、重啟、重啟myeclipsemyeclipse,選中項目,右鍵會出現(xiàn)一個,選中項目,右鍵會出現(xiàn)一個Find BugsFind Bugs菜單。至此,菜單。至此,findbugsfindbugs插件安裝完畢。插件安裝完畢。 FindBugs的使用FindbugsFindbugs可以通過三種方法使用:可以通過三種方法使用:vAnt/MavenAn
12、t/Maven工具;工具;v通過通過AntAnt提供的提供的SwingSwing操作界面;操作界面;v作為作為EclipseEclipse的一個插件來使用。的一個插件來使用。Findbugs的Eclipse插件使用v安裝了安裝了FindbugsFindbugs插件后。右擊點擊你要檢查的項插件后。右擊點擊你要檢查的項目選擇目選擇【Find BugsFind Bugs】-【Find BugsFind Bugs】進行檢查。進行檢查。v要查看要查看FindbugsFindbugs檢查出了哪些檢查出了哪些BugBug,可以選擇,可以選擇WindowsWindows菜單菜單-Show View-Bug E
13、xplorer-Show View-Bug Explorer,打開,打開Bug ExplorerBug Explorer面板。面板。v如果想要查看某個如果想要查看某個BugBug詳細的信息,則可以選擇詳細的信息,則可以選擇WindowsWindows菜單菜單-Open Perspective-Open Perspective,然后選擇,然后選擇FindBugsFindBugs就可以打開就可以打開FindBugsFindBugs的的PropertiesProperties面板,面板,在這個面板里面可以看到最詳盡的在這個面板里面可以看到最詳盡的BugsBugs信息。信息。FindBugs的配置 選
14、擇你的項目,右鍵選擇你的項目,右鍵 = Properties = = Properties = FindBugs =FindBugs =vRun FindBugs AutomaticallyRun FindBugs Automatically開關開關 當此項選中后,當此項選中后,F(xiàn)indBugsFindBugs將會在你修改將會在你修改JavaJava類時類時自動運行,如你設置了自動運行,如你設置了EclipseEclipse自動編譯開關后,自動編譯開關后,當你修改完當你修改完JavaJava文件保存,文件保存,F(xiàn)indBugsFindBugs就會運行,就會運行,并將相應的信息顯示出來。當此項沒
15、有選中,你并將相應的信息顯示出來。當此項沒有選中,你只能每次在需要的時候自己去運行只能每次在需要的時候自己去運行FindBugsFindBugs來檢來檢查你的代碼。查你的代碼。 vMinimum priority to report選擇項 這個選擇項是讓你選擇哪個級別的信息進行顯示,有Low、Medium、High三個選擇項可以選擇,很類似于Log4J的級別設置啦。比如:你選擇了High選擇項,那么只有是High級別的提示信息才會被顯示。你選擇了Medium選擇項,那么只有是Medium和High級別的提示信息才會被顯示。你選擇了Low選擇項,那么所有級別的提示信息都會被顯示Enable bu
16、g categories選擇項 Correctness關于代碼正確性相關方面的; Performance關于代碼性能相關方面的; Internationalization關于代碼國際化相關方面; Multithreaded correctness關于代碼多線程正確性相關方面的; Style關于代碼樣式相關方面的; Malicious code vulnerability關于惡意破壞代碼相關方面的; vSelect bug patterns to check for選擇項 在這里你可以選擇所要進行檢查的相關的Bug Pattern條目 可以從Bug codes、Detector name、Det
17、ector description中看到相應的是要檢查哪些方面的內(nèi)容,你可以根據(jù)需要選擇或去掉相應的 檢查條件自定義FindBugs檢測器v編寫自定義的檢測器Detector 項目中需要引入FindBugs的jar文件:findBug.jar自定義的檢測器需要繼承OpcodeStackDetector重寫其sawOpcode方法。下面用一個簡單的自定義檢測器來說明。此檢測器是用來查找項目中有沒有system.out和system.error情況出現(xiàn)的。建議編寫的時候可以先查看FindBugs源代碼以查找類似于你要編寫的檢測器。自定義檢測器ForbiddenSystemOutClass.java
18、 接下來找到接下來找到eclipseeclipse編譯的編譯的.class.class文件,一般在文件,一般在項目的項目的liblib目錄里面可以找到。將其放入目錄里面可以找到。將其放入findbufindbugs-plugin.jargs-plugin.jar文件中對應的目錄下:文件中對應的目錄下:findbugs -findbugs -plugin.jareduumdcsfindbugsdetectplugin.jareduumdcsfindbugsdetect(如圖)(如圖) v修改修改findbugs.xmlfindbugs.xml文件文件 找到找到EclipseEclipse插件安裝
19、文件夾中插件安裝文件夾中findbugs-findbugs-plugin.jarplugin.jar所在的文件夾,我的文件夾是:所在的文件夾,我的文件夾是:D:ProgramFilesGenuitecCommonpluginsedD:ProgramFilesGenuitecCommonpluginsedu.umd.cs.findbugs.plugin.eclipse_01u.umd.cs.findbugs.plugin.eclipse_012071220712 打開打開findbugs-plugin.jarfindbugs-plugin.jar文件,找到文件,找到f
20、indbugs.xmlfindbugs.xml和和messages.xmlmessages.xml兩個文件。雙擊打兩個文件。雙擊打開開findbugs.xmlfindbugs.xml,你可以修改原有的文件,也可,你可以修改原有的文件,也可以替換原有的文件為自己寫的以替換原有的文件為自己寫的findbugs.xmlfindbugs.xml。findbugs.xml和messages.xml兩個文件findbugs.xml的編寫v對于每一個新的檢測器,在對于每一個新的檢測器,在 FindBugs.xml FindBugs.xml 文件文件中增加一個中增加一個 Detector Detector 元
21、素和一個元素和一個 BugPattern BugPattern 元素。元素。 Detector Detector 元素指定用于實現(xiàn)檢測器的類元素指定用于實現(xiàn)檢測器的類以及它是快速還是慢速檢測器。以及它是快速還是慢速檢測器。speed speed 屬性的可屬性的可能值有能值有 slow slow、moderate moderate 和和 fast fast。vBugPattern BugPattern 元素指定三個屬性。元素指定三個屬性。 abbrev abbrev 屬性屬性定義檢測器的縮寫??s寫用于標識用命令行客戶定義檢測器的縮寫??s寫用于標識用命令行客戶運行時檢測到的缺陷??梢杂猛粋€縮寫將
22、幾個運行時檢測到的缺陷。可以用同一個縮寫將幾個相關的檢測器組織到一起。相關的檢測器組織到一起。. .vtype 屬性是惟一標識符,有兩個用途。在使用 Ant 版本或者命令行版本的 FindBugs 且輸出格式設置為 XML 時,用 type 屬性標識問題。 type 屬性也是在檢測器的 Java 代碼中指定的,用以創(chuàng)建缺陷的正確類型。 category 屬性是枚舉類型。它是以下類型中的一種:CORRECTNESS :一般正確性問題MT_CORRECTNESS :多線程正確性問題MALICIOUS_CODE :如果公開給惡意代碼,有可能成為攻擊點PERFORMANCE :性能問題messages
23、.xml的編寫vmessages.xml 文件由三個元素組成: Detector 、 BugPattern 和 BugCode vDetails 元素包含檢測器的簡單 HTML 描述,因而應當包含在 CDATA 部分中.vBugPattern 元素類似于在 FindBugs.xml 中定義的 BugPattern 元素。需要 type 屬性,并且它應當匹配在 FindBugs.xml 和在檢測器的 Java 代碼中使用的相同惟一標識符。v BugCode 元素必須用元素的屬性指定這個縮寫v運行 放置好這三個文件,重啟Eclipse,在需要檢測的文件上單擊右鍵,選擇findbugs即可從檢測出帶有system.out或system.error語句。FindBugs生成html形式的報告整理v之前用的是findbugs的eclipse插件,但是在導出報告的時候是xml形式的,很不易閱讀,下來講下用findbugs來導出html的報告。v準備工作 下載到ant和findbugs。并且配置好它們的環(huán)境變量編寫ant腳本
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年時光的落幕黑金色年終匯報的魅力
- 2025年陽春公共衛(wèi)生醫(yī)院筆試及答案
- 2025年深圳教師事業(yè)編考試試題及答案
- 2025年-運營商通信類筆試及答案
- 2025年小學科學教師編筆試及答案
- 2026上海證券交易所員工招聘筆試模擬試題及答案解析
- 2025年興安盟事業(yè)編公告筆試及答案
- 2025年紅旗區(qū)事業(yè)編考試真題及答案
- 2026年《鉆探技術的創(chuàng)新與發(fā)展趨勢》
- 2026曲靖市事業(yè)單位公開招聘工作人員(889人)考試備考試題及答案解析
- 2025年網(wǎng)約車司機收入分成合同
- 2026年海南財金銀河私募基金管理有限公司招聘備考題庫參考答案詳解
- 2026年GRE數(shù)學部分測試及答案
- 浙江省寧波市鎮(zhèn)海中學2026屆高二上數(shù)學期末教學質(zhì)量檢測模擬試題含解析
- (2025年)電力交易員練習試題附答案
- 2026年咨詢工程師現(xiàn)代咨詢方法與實務模擬測試含答案
- 甘肅省酒泉市2025-2026學年高一上學期期末語文試題(解析版)
- GB/T 3634.1-2025氫氣第1部分:工業(yè)氫
- JJG 499-2021 精密露點儀檢定規(guī)程
- T-CPQS A0011-2022 二手車車況檢測及評估通則
- 吸毒的危害性后果
評論
0/150
提交評論