999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Eclipse的Find Bugs插件的研究與設(shè)計(jì)

2022-01-14 12:34:42趙彥紅
科學(xué)與信息化 2022年1期
關(guān)鍵詞:功能分析檢測(cè)

趙彥紅

通號(hào)工程局集團(tuán)北京研究設(shè)計(jì)實(shí)驗(yàn)中心有限公司 北京 100070

引言

隨著近來(lái)軟件行業(yè)的迅猛發(fā)展,以及人們對(duì)軟件需求的日益增長(zhǎng),軟件的質(zhì)量越來(lái)越成為人們關(guān)注的對(duì)象,保證軟件質(zhì)量的途徑有兩種:一種是設(shè)計(jì)階段盡量避免缺陷,另一種就是軟件開發(fā)完成后的測(cè)試。軟件的測(cè)試按功能性可分為白盒測(cè)試、黑盒測(cè)試和灰盒測(cè)試;從是否執(zhí)行程序角度可分為動(dòng)態(tài)測(cè)試和靜態(tài)測(cè)試。本文主要研究的是靜態(tài)測(cè)試,靜態(tài)測(cè)試不實(shí)際運(yùn)行軟件,主要對(duì)軟件的編程格式、結(jié)構(gòu)等方面進(jìn)行評(píng)估。靜態(tài)測(cè)試包括代碼規(guī)范性檢查、靜態(tài)結(jié)構(gòu)分析和代碼質(zhì)量檢查等,可人工完成,也可借助軟件工具進(jìn)行。靜態(tài)分析工具能自動(dòng)找出代碼中已有的缺陷[1]。好的靜態(tài)分析工具是測(cè)試過(guò)程中不可或缺的利器,可在短時(shí)間內(nèi)通過(guò)分析或檢查源程序的語(yǔ)法、結(jié)構(gòu)、過(guò)程、接口等來(lái)檢查程序的正確性,找出代碼隱藏的錯(cuò)誤和缺陷,如參數(shù)不匹配,有歧義的嵌套語(yǔ)句,錯(cuò)誤的遞歸,可能出現(xiàn)的空指針引用等[2]。

1 基于Eclipse的Find Bugs插件

1.1 什么是Eclipse插件

Eclipse是一款開源的基于java的可擴(kuò)展開發(fā)平臺(tái)。開源性決定了任何人都可以對(duì)Eclipse實(shí)施開發(fā)插件的過(guò)程,可擴(kuò)展決定了java功能的可完善性和易維護(hù)性。所以,Eclipse插件就是集成在Eclipse平臺(tái)中的實(shí)現(xiàn)不同功能的工具。

1.2 Eclipse中的Find Bugs插件

Find Bugs是一個(gè)能靜態(tài)分析源代碼中可能會(huì)出現(xiàn)bug的Eclipse插件工具。它檢查類文件,將字節(jié)碼(bytecode存在于編譯后的.class文件中)與一組缺陷模式和集成的規(guī)范進(jìn)行對(duì)比以發(fā)現(xiàn)可能的問題。有了靜態(tài)分析工具,就可以在不實(shí)際運(yùn)行程序中對(duì)源代碼進(jìn)行分析。不是通過(guò)分析類文件(.class的文件) 的形式或結(jié)構(gòu)來(lái)確定程序的意圖,而是使用Visitor模式[3]對(duì)文件進(jìn)行掃描和分析,在不改變?cè)创a的情況下,檢測(cè)出源代碼中的存在的潛在性問題。

1.3 插件的功能管理

Find Bugs是由許多不同特性的JAR文件組成,這些JAR文件可以通過(guò)Eclipse運(yùn)行實(shí)現(xiàn)自己的功能。而這些功能是可選的,所以在進(jìn)行測(cè)試時(shí),可以根據(jù)需要來(lái)選擇功能。這正是Find Bugs的方便之處,也是插件開發(fā)者能夠進(jìn)行方便開發(fā)的前提。

2 Find Bugs插件的實(shí)現(xiàn)

2.1 開發(fā)流程

開發(fā)流程圖如下:

圖1 開發(fā)流程圖

2.2 需求分析和功能定位

進(jìn)行Java開發(fā)過(guò)程中,Eclipse的使用是不可避免的,而基于Eclipse的Find Bugs插件在前期能夠減少代碼出現(xiàn)錯(cuò)誤和避免不好的編碼習(xí)慣。

Find Bugs將檢測(cè)到的錯(cuò)誤分為以下幾類:Bad practice,Correctness,Internationalization,Malicious code vulnerability,Multithreaded correctness,Performance,Dodgy code,Security,Experimental。可見Find Bugs插件不僅是檢查代碼的漏洞和錯(cuò)誤,還會(huì)檢查代碼的書寫習(xí)慣、安全性能、多線程以及國(guó)際通用性等問題。

本文設(shè)計(jì)的插件就是屬于Find Bugs中的Bad practice,本文所開發(fā)的插件主要檢查Java代碼中空的try/catch塊。眾所周知,異常檢測(cè)在Java開發(fā)中是一個(gè)重要的環(huán)節(jié),其語(yǔ)句如下:

其中try語(yǔ)句用來(lái)捕獲異常,而catch語(yǔ)句用來(lái)打印異常信息。異常信息對(duì)于Java代碼的調(diào)試非常重要,如果不輸出異常信息,Java檢測(cè)機(jī)制不會(huì)報(bào)錯(cuò),代碼本身也沒有錯(cuò),這樣會(huì)產(chǎn)生一種情況:當(dāng)代碼出現(xiàn)可以被捕獲的錯(cuò)誤后,無(wú)法知道這種錯(cuò)誤是什么和這種錯(cuò)誤出現(xiàn)的具體位置。所以,本文闡述的插件功能屬于Find Bugs中bad practice一類。

2.3 數(shù)據(jù)結(jié)構(gòu)和功能的實(shí)施

本文設(shè)計(jì)中,使用了Hashmap數(shù)據(jù)結(jié)構(gòu),Hashmap用來(lái)存儲(chǔ)鍵值對(duì),key值為Java源代碼中的方法名稱,而value值則為byte code中象征catch內(nèi)容為空的標(biāo)志關(guān)鍵字。例如,本文中我們將要存儲(chǔ)的方法名或關(guān)鍵字用形參mName(方法的名稱)來(lái)代替,對(duì)應(yīng)在字節(jié)碼中相應(yīng)的value有不同的值,我們用統(tǒng)一的形參seen代替,實(shí)現(xiàn)語(yǔ)句如下:

正常情況下的程序,也就是有異常但catch塊不為空,被處理的情況下的字節(jié)碼如下:

對(duì)比以上兩段代碼可以觀察到,第一段中的第11行astore_1將byteArray調(diào)用完成后直接返回,沒有經(jīng)過(guò)異常處理機(jī)制,即未經(jīng)過(guò)catch塊。第二段中第8行經(jīng)過(guò)astore_1后,進(jìn)行了異常處理函數(shù)的調(diào)用,其指令為第11行的invokevitual。所以,這將成為我們檢測(cè)空的catch塊的一種實(shí)施方案。部分源代碼如下:

2.4 設(shè)計(jì)模式

由于Find Bugs是一款靜態(tài)分析工具,并且集成了不同檢測(cè)功能的插件,所以要想將本文中的功能集成到Find Bugs中去,最好的辦法就是應(yīng)用visitor設(shè)計(jì)模式。

Visitor模式的主要作用就是在不改變現(xiàn)有類的情況下,向其中添加新的方法。其序列圖如下:

圖2 visitor設(shè)計(jì)模式的序列圖

具體實(shí)現(xiàn)的部分源代碼如下:

3 性能分析

完成插件的開發(fā)后會(huì)生成.jar文件,把.jar文件添加到Find Bugs插件中,再次重啟Eclipse可以看到在Find Bugs中已有新添加的插件。將Find Bugs新的插件應(yīng)用在測(cè)試用例上會(huì)看到,新的插件給出了錯(cuò)誤的具體位置以及錯(cuò)誤信息,如下圖:

圖3 新插件運(yùn)行在測(cè)試用例中的效果

整個(gè)過(guò)程用時(shí)1.15s,可以說(shuō)是比較快,如果和其他插件功能同時(shí)運(yùn)行,基本上不會(huì)增加Find Bugs的運(yùn)行負(fù)擔(dān)。

4 結(jié)束語(yǔ)

本文介紹了基于Eclipse的Find Bugs插件的開發(fā),重點(diǎn)介紹了對(duì)檢測(cè)空的catch塊功能的研究與開發(fā)。由于Eclipse是一款開源平臺(tái),所有基于Eclipse插件的開放性為廣大的開發(fā)者提供了良好的開發(fā)平臺(tái),使開發(fā)者可以在遵循JVM規(guī)則的基礎(chǔ)之上,對(duì)必要的以及感興趣的功能做嘗試性開發(fā)。本文就是在充分了解JVM規(guī)則、Find Bugs運(yùn)行機(jī)制以及已存在的Find Bugs插件基礎(chǔ)上,對(duì)Find Bugs中檢測(cè)空catch塊的功能進(jìn)行了彌補(bǔ)和嘗試性的開發(fā),并得到了預(yù)期的效果。

猜你喜歡
功能分析檢測(cè)
也談詩(shī)的“功能”
“不等式”檢測(cè)題
“一元一次不等式”檢測(cè)題
“一元一次不等式組”檢測(cè)題
隱蔽失效適航要求符合性驗(yàn)證分析
電力系統(tǒng)不平衡分析
電子制作(2018年18期)2018-11-14 01:48:24
關(guān)于非首都功能疏解的幾點(diǎn)思考
電力系統(tǒng)及其自動(dòng)化發(fā)展趨勢(shì)分析
小波變換在PCB缺陷檢測(cè)中的應(yīng)用
中西醫(yī)結(jié)合治療甲狀腺功能亢進(jìn)癥31例
主站蜘蛛池模板: 国产毛片久久国产| 免费久久一级欧美特大黄| 免费看美女自慰的网站| 国内a级毛片| 久久久久亚洲AV成人网站软件| 综1合AV在线播放| 亚洲第一极品精品无码| 亚洲妓女综合网995久久| 国产精品开放后亚洲| 久久久国产精品无码专区| 国产www网站| 青青国产视频| 欧洲在线免费视频| 欧美高清视频一区二区三区| 女同久久精品国产99国| 小13箩利洗澡无码视频免费网站| 国产精品亚洲日韩AⅤ在线观看| 日韩在线永久免费播放| 国产成人午夜福利免费无码r| 无码国产偷倩在线播放老年人| 亚洲一级毛片免费观看| 永久免费精品视频| 久久国产亚洲欧美日韩精品| 喷潮白浆直流在线播放| 国产视频入口| 精品久久久久成人码免费动漫| 欧洲亚洲一区| 国产精品亚洲五月天高清| 欧美日韩精品在线播放| 亚洲精品高清视频| 91福利免费视频| 国产美女精品在线| 免费看久久精品99| 国产成人AV男人的天堂| 在线a网站| 亚洲男人天堂网址| 国产在线麻豆波多野结衣| 国产精品久久久精品三级| 亚洲美女操| 在线另类稀缺国产呦| 亚洲黄色视频在线观看一区| 亚洲成a人在线播放www| 国产91透明丝袜美腿在线| 国产性生交xxxxx免费| 久久精品国产精品青草app| 国产亚洲视频免费播放| 91偷拍一区| 国产午夜无码专区喷水| 欧美成人第一页| 精品久久国产综合精麻豆| 97免费在线观看视频| 亚洲成人在线网| 成人午夜久久| 日本在线亚洲| www.youjizz.com久久| 久久中文电影| 2020精品极品国产色在线观看| 国产肉感大码AV无码| 亚洲日本在线免费观看| 日韩av无码DVD| 国产99欧美精品久久精品久久| 婷婷激情亚洲| 精品欧美视频| 亚洲国产成人综合精品2020| 国产又爽又黄无遮挡免费观看 | 色窝窝免费一区二区三区| 精品国产亚洲人成在线| 国产在线麻豆波多野结衣| 亚洲第一国产综合| 国产成年女人特黄特色毛片免| 亚洲成a人在线播放www| 久久精品国产国语对白| 国产乱子伦一区二区=| 国产粉嫩粉嫩的18在线播放91| 无码中文字幕乱码免费2| 久久综合九九亚洲一区| 国产sm重味一区二区三区| 久久国产精品国产自线拍| 丁香婷婷综合激情| 99视频在线观看免费| 国产三级国产精品国产普男人| 99这里只有精品6|