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

空指針引用缺陷分類假陽性識別方法

2017-12-14 05:35:38王曙燕權(quán)雅菲孫家澤
計算機應(yīng)用 2017年10期
關(guān)鍵詞:程序報告分類

王曙燕,權(quán)雅菲,孫家澤

(西安郵電大學(xué) 計算機學(xué)院,西安 710061) (*通信作者電子郵箱wsylxj@126.com)

空指針引用缺陷分類假陽性識別方法

王曙燕*,權(quán)雅菲,孫家澤

(西安郵電大學(xué) 計算機學(xué)院,西安 710061) (*通信作者電子郵箱wsylxj@126.com)

針對靜態(tài)測試中空指針引用缺陷假陽性問題,提出一種空指針引用缺陷分類假陽性識別方法。挖掘空指針引用缺陷知識,對空指針引用缺陷知識進行預(yù)處理,生成空指針引用缺陷數(shù)據(jù)集;通過基于粗糙集理論屬性重要性的ID3算法分類空指針引用缺陷數(shù)據(jù)集,分類結(jié)果有假陽性空指針引用缺陷實例和真實空指針引用缺陷實例兩種;根據(jù)分類結(jié)果對靜態(tài)測試中的空指針引用缺陷進行假陽性識別,確認真實的空指針引用缺陷。該方法對十個基準程序和基于主流靜態(tài)測試工具FindBugs的空指針引用缺陷檢測方法相比,空指針引用缺陷假陽性降低率平均為25%,減少了24%的空指針引用缺陷確認。實驗結(jié)果表明,該方法在靜態(tài)測試方面能有效降低缺陷確認開銷,提高空指針引用缺陷檢測效率和穩(wěn)定性。

靜態(tài)測試;空指針引用缺陷;假陽性識別;缺陷分類;缺陷確認

0 引言

軟件缺陷由不合理的設(shè)計和軟件開發(fā)人員的疏忽引起[1-2],軟件缺陷導(dǎo)致軟件運行時失效,軟件缺陷頻發(fā)會帶來極大危害。面向代碼缺陷的軟件靜態(tài)測試技術(shù)正逐漸受到軟件業(yè)界的青睞[3],包括靜態(tài)缺陷檢測和缺陷確認兩個階段。當前軟件行業(yè)越來越依賴自動化缺陷檢測工具檢測軟件缺陷[4],自動化缺陷檢測工具在靜態(tài)缺陷檢測效率方面很有優(yōu)勢,但會報告大量缺陷,而驗證這些缺陷的正確性時主要的缺陷確認工作仍由人工完成[5],高耗時耗力的缺陷審查工作會降低該工具在軟件開發(fā)流程中的可用性。靜態(tài)測試優(yōu)化技術(shù)試圖在靜態(tài)缺陷檢測工具運行后進行缺陷報告優(yōu)化,降低缺陷確認負擔(dān),從另一個角度提升工具的檢測效率和精度[5]。

據(jù)中國國家信息安全漏洞庫統(tǒng)計,由空指針引用(Null Pointer Dereference, NPD)缺陷造成的安全漏洞引發(fā)了許多嚴重的安全問題。目前的缺陷檢測方法有動態(tài)檢測和靜態(tài)檢測、動態(tài)檢測輸入樣例很難構(gòu)造;靜態(tài)檢測則在代碼覆蓋率方面有優(yōu)勢,檢測缺陷時更有針對性。所以,基于NPD缺陷知識在靜態(tài)測試后進行NPD缺陷假陽性識別,能有效降低缺陷確認開銷,進而提升軟件測試整體效率。

在現(xiàn)有的靜態(tài)缺陷檢測方法中,Zhang等[6]通過分析缺陷報告優(yōu)化缺陷檢測結(jié)果,但未考慮噪聲報告對優(yōu)化結(jié)果的影響。梁廣泰等[7]挖掘受檢程序中的新缺陷模式并以“缺陷模式描述模板”半自動擴充原缺陷模式庫,擴充靜態(tài)測試工具NPD缺陷檢測能力,但未考慮到分析技術(shù)和規(guī)則挖掘技術(shù)對缺陷檢測的影響。楊睿等[8]結(jié)合空指針故障模型和控制流圖進行數(shù)據(jù)流分析,根據(jù)分析結(jié)果盡可能多地識別出那些可能不是缺陷的項來降低空指針故障誤報率,但忽略了區(qū)間運算和函數(shù)摘要的計算能力。

針對上述問題,張大林等[5]通過缺陷關(guān)聯(lián)分析分組靜態(tài)測試工具報告的缺陷,若組內(nèi)主導(dǎo)NPD缺陷被證是誤報,其他NPD缺陷也是誤報,能有效降低缺陷確認負擔(dān);但分組缺陷時缺陷關(guān)聯(lián)抽象域計算能力的不足,會導(dǎo)致關(guān)聯(lián)誤報。

因此,針對靜態(tài)測試中的假陽性NPD缺陷,本文研究采用基于粗糙集理論屬性重要性的ID3(ID3 Based Rough Set, RSID3)算法結(jié)合NPD缺陷知識進行NPD缺陷假陽性識別,挖掘靜態(tài)缺陷報告與軟件歷史倉庫中代碼修改中的NPD缺陷知識,預(yù)處理后生成NPD缺陷數(shù)據(jù)集,通過RSID3分類NPD缺陷實例,避免了分組缺陷時缺陷關(guān)聯(lián)的抽象域計算,根據(jù)分類結(jié)果識別假陽性NPD缺陷,以期快速確認真實NPD缺陷。

1 靜態(tài)測試NPD缺陷檢測技術(shù)

1.1 NPD靜態(tài)檢測

靜態(tài)測試不執(zhí)行程序從語法或語義層面分析程序文本,推導(dǎo)其語法或語義性質(zhì)進行潛在缺陷檢測,30%~ 70% 的代碼邏輯設(shè)計和編碼缺陷能通過靜態(tài)測試檢測并修復(fù)。基于缺陷模式的軟件測試技術(shù)[9]將代碼中已有缺陷總結(jié)成缺陷模式,在靜態(tài)測試過程中通過模式匹配算法判斷待測程序中是否存在匹配缺陷模式的代碼段,對受檢代碼進行缺陷檢測。

NPD缺陷在程序運行時發(fā)生,編譯階段無法發(fā)現(xiàn),動態(tài)測試方法難以達到全面覆蓋的效果。若先進行空指針靜態(tài)檢測來查找程序中所有可能為空的對象,能彌補動態(tài)測試無法檢測程序中不確定執(zhí)行路徑的NPD缺陷的不足。使用靜態(tài)測試方法檢測NPD缺陷是近年來NPD檢測方法研究的重點[8]。

1.2 基本概念

定義1 NPD缺陷假陽性。NPD缺陷檢測可轉(zhuǎn)為求解問題D={P,M,A}, 其中:p是待測程序;M是與P對應(yīng)的NPD缺陷模式集;A={ρ(L,X),ψ,R}是NPD缺陷檢測算法,ρ是P執(zhí)行到L處變量X取值信息,ψ是P執(zhí)行到L處實時堆棧中被調(diào)方法摘要信息,R是P中所有可達路徑。通過靜態(tài)測試方法檢測NPD缺陷時,需分析p中所有可達路徑上出現(xiàn)的指針引用的相關(guān)指針在運行時的指向狀態(tài),則NPD缺陷假陽性為:

?x,x∈{ρ(L,X)|R}∧~D={P,M,A} ?FP(X)

其中:~D={P,M,A}指變量X取值為x時不會引發(fā)NPD缺陷;FP(X)是X引發(fā)NPD缺陷的假陽性現(xiàn)象。

2 NPD缺陷分類假陽性識別方法

2.1 NPD缺陷數(shù)據(jù)集生成

如何利用已有缺陷知識確認程序潛在缺陷是靜態(tài)缺陷檢測的關(guān)鍵[10]。Zhang等[6]通過分析缺陷報告快速確認真實缺陷;Kim等[10]提出挖掘軟件修改歷史能快速識別出真正的缺陷代碼。所以,本文挖掘靜態(tài)缺陷報告與軟件代碼修改歷史中的NPD缺陷知識,基于NPD缺陷知識生成NPD缺陷數(shù)據(jù)集,對其分類后進行NPD缺陷假陽性識別。

靜態(tài)缺陷報告用元素標記描述數(shù)據(jù),所有元素都有文本屬性和離散屬性,以開始標記和結(jié)束標記限定元素描述缺陷內(nèi)容的范圍,解析包含NPD缺陷內(nèi)容的元素屬性,提取屬性及屬性值作為缺陷報告中的NPD缺陷知識。分析軟件歷史倉庫中的版本控制系統(tǒng),提取所有代碼修改,修改日志含有多條記錄,每條記錄包含修復(fù)NPD缺陷相關(guān)屬性,通過從修改日志匹配修復(fù)NPD缺陷的關(guān)鍵詞,能從所有代碼修改中識別出修復(fù)NPD缺陷的代碼修改,通過分析源程序中引發(fā)NPD缺陷的程序點L處第1次到第n-1次代碼修改歷史,從修復(fù)NPD缺陷的第n次代碼修改的修改日志中提取修復(fù)NPD缺陷記錄,提取上述記錄的屬性及屬性值作為軟件歷史中倉庫代碼修改中的NPD缺陷知識。

缺陷模式有助于快速識別程序中的缺陷,程序P對應(yīng)M中的NPD缺陷模式[11]用有限狀態(tài)機表示為:

MNPD=〈S,T,C〉

(1)

其中:S={Sstart,Snot,Spossible,Snpddefect,Send}是可達狀態(tài)集;Sstart是始態(tài);Snot是非空狀態(tài);Spossible是可能為空狀態(tài);Snpddefect是引發(fā)NPD缺陷時的狀態(tài),與NPD缺陷模式有關(guān);Send是末態(tài);T={〈ni,nj〉|ni,nj∈S}是狀態(tài)遷移集,指從狀態(tài)ni遷移到狀態(tài)nj,T:S×C→S,C是遷移條件,引發(fā)NPD缺陷是指對象O從Sstart經(jīng)一系列狀態(tài)遷移到達Snpddefect。

通過式(1)形式化描述特定模式的NPD缺陷,根據(jù)程序P中引發(fā)NPD缺陷的程序點L處指針的指向狀態(tài),包括空、可能為空和非空三種,前兩種指向狀態(tài)與引發(fā)NPD缺陷有關(guān)。對每個被引用指針構(gòu)造MNPD實例,MNPD實例狀態(tài)遷移如圖1所示,圖1中的NPD缺陷狀態(tài)遷移關(guān)系如表1所示。在MNPD上進行狀態(tài)遷移時需分析L處程序狀態(tài)信息ρ和ψ,根據(jù)引發(fā)NPD缺陷的對象O在MNPD上遷移過程得到NPD缺陷模式集:

圖1 NPD缺陷有限狀態(tài)機實例狀態(tài)遷移圖

如圖1所示,給定狀態(tài)集S={t1,t2,t3,t4,t5},t1至t5依次代表狀態(tài)Sstart、Snot、Spossible、Snpddefect、Send,通過表1 NPD缺陷狀態(tài)遷移集描述各NPD缺陷模式,其T和C結(jié)合上述程序狀態(tài)信息分析設(shè)定。

表1 NPD缺陷狀態(tài)遷移集

從表1可知,引發(fā)NPD缺陷的對象O到達Snpddefect的狀態(tài)遷移不同,識別各NPD缺陷模式下的NPD缺陷需要滿足的條件,即NPD缺陷引發(fā)條件DCNPD不同,根據(jù)表1中的T和C提取NPD缺陷模式集中各模式對應(yīng)的DCNPD,則

DCNPD=(Vlocal=nullMay)‖(Vglobal=nullMay)‖

(FPfunction=nullMay)‖(APfunction=null)‖

(RVmethod=nullMay)

經(jīng)上述預(yù)處理, 通過NPD缺陷模式提取NPD缺陷引發(fā)條件后, 對比NPD缺陷知識與NPD缺陷引發(fā)條件,確定一組包含NPD缺陷引發(fā)條件的屬性,即NPD缺陷關(guān)聯(lián)屬性組(type, priority, role, category, is-fixed, is-true),各屬性依次指定NPD缺陷引發(fā)原因、優(yōu)先級、引發(fā)條件、類別、是否修復(fù)、真實性,其一組取值為一個NPD缺陷實例,一個NPD缺陷實例對應(yīng)P在靜態(tài)測試中報告的某個NPD缺陷,累積P中所有NPD缺陷實例,以NPD缺陷關(guān)聯(lián)屬性和NPD缺陷實例為基本分量,構(gòu)造描述NPD缺陷關(guān)聯(lián)屬性間關(guān)系的NPD缺陷數(shù)據(jù)集,作為RSID3算法的輸入。

2.2 基于粗糙集理論屬性重要性的ID3算法

提高ID3算法分類精度的關(guān)鍵在于劃分屬性的選擇。劃分NPD缺陷數(shù)據(jù)集時,很難根據(jù)經(jīng)驗選擇當前NPD缺陷數(shù)據(jù)集的劃分屬性,且劃分屬性選擇存在多值偏向,本文提出的RSID3通過考慮屬性ai∈A對劃分屬性的重要性[12]來指導(dǎo)劃分屬性選擇。首先,調(diào)整當前劃分屬性Ak對當前屬性集A的依賴度k(A,Ak);然后,確定所有屬性ai∈A對Ak的重要性γ(A);最后,在尋找信息增益最大的屬性時,通過遍歷為T和A建立的索引數(shù)組,基于索引搜索A中信息增益最大的屬性作為當前劃分屬性,作用于RSID3算法輸入。信息增益方程為:

Gain(A)=I(s1,s2,…,sm)-

1)若k(A,Ak)=0時,則認為Ak完全不依賴于A;

2)若0lt;k(A,Ak)lt;1時,則認為Ak部分依賴于A;

3)若k(A,Ak)=1時,Ak完全依賴于A。

通過k(A,Ak)的調(diào)整方案自適應(yīng)調(diào)整γ(ai),確定γ(A):

k(A,Ak)-k(A-{ai},Ak)

其中:R=C∪Ak。

2.3 實例分析

下面通過例子來進一步闡述RSID3算法的劃分屬性選擇過程和效果。下述程序片段展示了靜態(tài)測試工具在檢測Java開源項目Weka-3-6時報告的兩個NPD缺陷,分別為:第192行變量contents.length可能為空指針并在192行解引用;第193行contents[i]可能為空指針并在193行解引用。

190: public static void loadProperties() {

191: File[] contents= piuginDir.listFiles();

192: for(int i=0;ilt;contents.length;i++){

193: if(contents[i].isDirectory()amp;amp;contents[i].listFiles().

lengthgt;0){…

202: File anyJars[]=contents[i].listFiles();

228:…}}}

根據(jù)2.1節(jié)內(nèi)容對示例代碼段的完整文件報告的所有NPD缺陷生成NPD缺陷數(shù)據(jù)集,如表2所示,以二維表格式展示。

從表2可知,屬性集A={a1,a2,a3,a4,a5},Card(T)=3,d為初始劃分屬性,則Ak=g0gggggg,從任意屬性a3開始, 首先計算d對A的依賴度,顯然0lt;k(A,d)=0.67lt;1,d部分依賴于A,其中,posA(d)={1,2};然后計算a3對d的重要性γ(a3,A,d)=0.33,即將a3從A中去除后被分類錯誤的概率。同理γ(a5)=0.26,γ(ai)值越大表示ai對A分類質(zhì)量影響越大,應(yīng)優(yōu)先挑選,所以選擇劃分屬性時優(yōu)先考慮a3。

2.4 NPD缺陷分類假陽性識別模型

NPD缺陷分類假陽性識別模型分為缺陷報告、NPD缺陷數(shù)據(jù)集生成和假陽性識別三個模塊,如圖2所示。

圖2中:缺陷報告模塊是模型基礎(chǔ),用于生成靜態(tài)缺陷報告;NPD缺陷數(shù)據(jù)集生成是核心模塊,解析缺陷報告,挖掘解析后的缺陷報告與軟件歷史倉庫代碼修改中的NPD缺陷知識,預(yù)處理NPD缺陷知識,確定NPD缺陷關(guān)聯(lián)屬性組,結(jié)合其取值構(gòu)造NPD缺陷數(shù)據(jù)集;假陽性識別模塊在模型中起橋梁作用,通過接收NPD缺陷數(shù)據(jù)集分類NPD缺陷實例,分類結(jié)果有真實NPD缺陷實例和假陽性NPD缺陷實例兩種,根據(jù)分類結(jié)果進行NPD缺陷假陽性識別,輸出真實NPD缺陷并評估NPD缺陷確認效率。

表2 NPD缺陷數(shù)據(jù)集

圖2 NPD缺陷分類假陽性識別模型

2.5 算法步驟

假設(shè)含有NPD缺陷程序P的NPD缺陷數(shù)據(jù)集為T,候選屬性集為A,NPD缺陷分類模型為Mtree,基于RSID3算法的NPD缺陷分類假陽性識別方法的步驟如下。

輸入 含有NPD缺陷程序P的NPD缺陷數(shù)據(jù)集T,候選屬性集A,即Generate_model(T,A)。

輸出 NPD缺陷分類模型Mtree。

步驟1 分別為T和A建立索引數(shù)組,利用式(2)計算A中所有屬性信息增益,創(chuàng)建初始節(jié)點N。

步驟2 通過索引數(shù)組遍歷T和A,如果T∈同類C,則返回N為葉子,標記為類C,轉(zhuǎn)步驟6。

步驟3 從任意Ai開始遍歷其索引數(shù)組,搜索當前信息增益最大的屬性索引,確定該索引指向的屬性為當前劃分屬性,記N為Ak,刪除該索引并更新索引數(shù)組。

步驟4 將T按Ak劃分, 對每個Ak的取值ai,由N長出分枝Ak=ai,在Ak處取值相同的實例歸為同一子集Si。

步驟5 如果Si=null,則轉(zhuǎn)步驟2;否則,對Si遞歸調(diào)用Generate_model(Si,A)生成Si上的決策樹,轉(zhuǎn)步驟3,自頂向下遞歸劃分。

步驟6 算法結(jié)束,輸出NPD缺陷分類模型Mtree。

3 實驗與分析

3.1 實驗設(shè)置

為驗證本文方法的有效性,選取10個典型的開源Java項目[8]為基準程序進行靜態(tài)NPD缺陷檢測對比實驗來驗證本文方法的有效性,其中后5個Java項目為MegaMek項目連續(xù)版本,上述開源項目文檔規(guī)范且得到持續(xù)維護,其相關(guān)信息如表3所示。

表3 基準程序相關(guān)信息

在實驗過程中,通過FindBugs-3.0.1工具生成靜態(tài)測試缺陷報告,ant_1.8.2工具獲取靜態(tài)測試缺陷報告,NPD缺陷數(shù)據(jù)集為.arff格式,所有程序均用Java語言編寫,使用jdk-1.7.0_06,Windows 7,計算機主頻為2.00 GHz,內(nèi)存2 GB。

3.2 實驗結(jié)果

基于以上實驗設(shè)置,選擇基于目前代表性靜態(tài)測試工具FindBugs[3]的靜態(tài)NPD缺陷檢測方法和本文方法進行對比,在相同條件下對基準程序進行靜態(tài)NPD缺陷檢測,記錄不同方法的報告的總?cè)毕荨⒑臅r和NPD缺陷數(shù),NPD缺陷假陽性降低率為通過本文方法識別出的假陽性NPD缺陷在FindBugs報告的全部NPD缺陷中的比例,是衡量靜態(tài)測試方法有效性的重要指標[8],實驗結(jié)果如表4所示。

表4 不同方法檢測NPD缺陷結(jié)果對比

對表4的10個基準程序進行缺陷檢測,FindBugs共報告1 909個缺陷,466個NPD缺陷,而本文方法共報告1 800個缺陷,357個NPD缺陷,在NPD缺陷分類假陽性識別過程中其假陽性降低率平均為25%,最高為35.5%,且在MegaMek連續(xù)版本中穩(wěn)定在35%,通過本文方法減少NPD缺陷確認共109個,有效減少24%的NPD缺陷確認工作,假陽性NPD缺陷識別效果好,降低了缺陷確認開銷,提高了靜態(tài)NPD缺陷檢測效率。在表4中,以Weka-3-6為例,在不同項目中通過本文方法最高可以減少(32-24)/32×100%=25%的假陽性NPD缺陷;對于Jstock報告的NPD缺陷基數(shù)較小,NPD缺陷變化不大。對于MegaMek0.32.2,因其丟失其類信息造成部分源文件編譯不能通過,使生成的中間代碼不全導(dǎo)致其NPD缺陷假陽性降低率較低。通過表4求得兩種方法檢測時間標準差分別為32.70和22.19,檢測的NPD缺陷標準差分別為23.21和19.74,說明本文方法穩(wěn)定性更好。

缺陷確認效率可以反映靜態(tài)測試方法的有效性,從降低的缺陷確認數(shù)量可以間接估計該測試方法缺陷確認效率[5],將NPD缺陷確認效率近似為除不需要再進行確認的NPD缺陷,其余缺陷占FindBugs報告的全部缺陷的比例,比較各方法對基準程序靜態(tài)測試后的NPD缺陷確認效率如圖3所示,本文方法在NPD缺陷確認效率方面優(yōu)勢明顯且在MegaMek連續(xù)版本中NPD缺陷確認效率更穩(wěn)定。

圖3 各方法檢測NPD缺陷在基準程序上的缺陷確認效率

所以,對于基準程序,本文提出的NPD分類假陽性識別方法在充分利用靜態(tài)缺陷報告與軟件歷史倉庫中代碼修改中的NPD缺陷知識的基礎(chǔ)上結(jié)合數(shù)據(jù)挖掘分類算法,以較小的代價更穩(wěn)定地進行缺陷確認,提高了NPD缺陷檢測效率。

4 結(jié)語

在面向代碼缺陷的靜態(tài)測試NPD分類假陽性識別方法中,如何充分利用已有NPD缺陷知識快速確認真實NPD缺陷是提高NPD缺陷檢測效率的關(guān)鍵。本文提出了一種空指針引用缺陷分類假陽性識別方法,該方法通過對多個基準程序進行測試并與基于主流靜態(tài)測試工具FindBugs的NPD缺陷檢測方法進行比較,實驗結(jié)果表明,本文方法有效降低了靜態(tài)測試缺陷確認開銷,在NPD缺陷檢測效率和穩(wěn)定性上都有明顯提高。

在NPD缺陷分類假陽性識別過程中,基于軟件靜態(tài)缺陷報告與軟件歷史倉庫代碼修改中的NPD缺陷知識結(jié)合RSID3算法在缺陷確認之前先進行NPD缺陷假陽性識別,雖在一定程度上提高了靜態(tài)NPD缺陷檢測效率和穩(wěn)定性,使缺陷確認開銷降低,但對于實際中的復(fù)雜軟件,檢測軟件NPD缺陷和缺陷確認所需缺陷關(guān)聯(lián)知識的充分性仍需提高。

References)

[1] 陳翔, 顧慶, 劉望舒, 等.靜態(tài)軟件缺陷預(yù)測方法研究[J]. 軟件學(xué)報, 2016, 27(1): 1-25. (CHEN X, GU Q, LIU W S, et al. Survey of static software defect prediction [J]. Journal of Software, 2016, 27(1): 1-25.)

[2] 李舟軍, 張俊賢, 廖湘科, 等.軟件安全漏洞檢測技術(shù)[J]. 計算機學(xué)報, 2015, 38(4): 717-732. (LI Z J, ZHANG J X, LIAO X K, et al. Survey of software vulnerability detection techniques[J]. Chinese Journal of Computers, 2015, 38(4): 717-732.)

[3] 金大海, 宮云戰(zhàn), 楊朝紅, 等.運行時異常對軟件靜態(tài)測試的影響研究[J]. 計算機學(xué)報, 2011, 34(6): 1090-1099. (JIN D H, GONG Y Z, YANG Z H, et al. Research on the effect of runtime exception in software static testing[J]. Chinese Journal of Computers, 2011, 34(6): 1090-1099.)

[4] DAS M, LERNER S, SEIGLE M. ESP: path-sensitive program verification in polynomial time[J]. ACM SIGPLAN Notices, 2002, 37(5): 57-68.

[5] 張大林, 金大海, 宮云戰(zhàn), 等.基于缺陷關(guān)聯(lián)的靜態(tài)分析優(yōu)化[J]. 軟件學(xué)報, 2014, 25(2): 386-399. (ZHANG D L, JIN D H, GONG Y Z, et al. Optimization static analysis based on defect correlations[J]. Journal of Software, 2014, 25(2): 386-399.)[6] ZHANG J, WANG X, HAO D, et al. A survey on bug-report analysis[J]. Science China Information Sciences, 2015, 58(2): 24-48.

[7] 梁廣泰, 孟娜, 李進輝, 等.一個可半自動化擴展的靜態(tài)代碼缺陷分析工具[J]. 計算機學(xué)報, 2011, 34(6): 1114-1125. (LIANG G T, MENG N, LI J H, et al. A semi-automatic extensible static defect analysis tool[J]. Chinese Journal of Computers, 2011, 34(6): 1114-1125.)

[8] 楊睿, 金大海, 宮云戰(zhàn), 等.Java中空指針引用故障的靜態(tài)檢測方法[J]. 清華大學(xué)學(xué)報, 2011, 52 (增刊1): 1509-1514. (YANG R, JIN D H, GONG Y Z, et al. Static analysis method for detecting null pointer dereference in Java[J]. Journal of Tsinghua University, 2011, 52 (Supp1): 1509-1514.)

[9] QUINLAN D J, VUDUC R W, MISHERGHI G. Techniques for specifying bug pattern[C]// PADTAD 2007: Proceedings of the 2007 ACM Workshop on Parallel and Distributed Systems: Testing and Debugging. New York: ACM, 2007: 27-35.

[10] KIM S, WHITEHEAD E J, Jr, ZHANG Y, et al. Classifying software changes: clean or buggy?[J]. IEEE Transactions on Software Engineering, 2008, 34(2): 181-196.

[11] RUTER N, ALMAZAN C B, FOSTER J S. A comparison of bug finding tools for Java[C]// ISSRE 2004: Proceedings of the 15th International Symposium on Software Reliability Engineering. Piscataway, NJ: IEEE, 2004: 269-270.

[12] 韓松來, 張輝, 周華平, 等.決策樹算法中多值偏向問題的理論分析[C]// 2005全國自動化新技術(shù)學(xué)術(shù)交流會論文集. 南京: 中國金屬學(xué)會, 2005: 138-145. (HAN S L, ZHANG H, ZHOU H P, et al. Theoretical analysis for variety bias of decision tree algorithm[C]// Proceedings of the 2005 Chinese Symposium on New Technologies for Automation. Nanjing: Chinese Society of Metals, 2005: 138-145.)

[13] 朱顥東.ID3算法的改進和簡化[J]. 上海交通大學(xué)學(xué)報, 2010, 44(7): 883-891. (ZHU H D. Research on improvement and simplification of ID3 algorithm[J]. Journal of Shanghai Jiaotong University, 2010, 44(7): 883-891.)

Falsepositiverecognitionmethodbasedonclassificationfornullpointerdereferencedefects

WANG Shuyan*, QUAN Yafei, SUN Jiaze

(SchoolofComputerScienceamp;Technology,Xi’anUniversityofPostsandTelecommunications,Xi’anShaanxi710061,China)

Focusing on the false positive problem of null pointer dereference (NPD) defect in static testing, a new false positive recognition method for null pointer reference defect based on classification was proposed. The knowledge of NPD defect was mined and preprocessed to generate data set of the defects. Then the data set of NPD defects was classified via ID3 classification algorithm based on rough set theory, and there were two kinds of classification results, one was false positive null pointer reference defect instances, the other was real null pointer reference defect instances. The real NPD defects were confirmed according to the classification results of the defect instances by recognizing the false positive NPD defects. The method was tested on ten benchmark programs and compared to the NPD defect detection method based on the mainstream static testing tool FindBugs, the false positive rate was reduced by 25%, and the confirmation amount was reduced by 24% for NPD defects. The experimental result shows that the proposed method can effectively reduce defect confirmation overhead and improve the detection efficiency and stability for NPD defects in static testing.

static testing; Null Pointer Dereference (NPD) defect; false positive recognition; defect classification; defect confirmation

2017- 04- 28;

2017- 06- 05。

陜西省工業(yè)攻關(guān)項目(2016GY-089);陜西省教育廳自然科學(xué)基金資助項目(15JK1672)。

王曙燕(1964—),女,河南南陽人,教授,博士,CCF會員,主要研究方向:軟件測試、數(shù)據(jù)挖掘、智能信息處理; 權(quán)雅菲(1991—),女,陜西西安人,碩士研究生,主要研究方向:軟件設(shè)計與測試、數(shù)據(jù)挖掘; 孫家澤(1980—),男,河南南陽人,副教授,博士,CCF會員,主要研究方向:軟件測試、數(shù)據(jù)挖掘、智能信息處理。

1001- 9081(2017)10- 2968- 05

10.11772/j.issn.1001- 9081.2017.10.2968

TP311.5

A

This work is partially supported by the Industrial Research and Development Program of Shaanxi Province (2016GY-089), the Natural Science Foundation of the Ministry of Education of Shaanxi Province (15JK1672).

WANGShuyan, born in 1964, Ph. D., professor. Her research interests include software testing, data mining, intelligent information processing.

QUANYafei, born in 1991, M. S. candidate. Her research interests include software design and testing, data mining.

SUNJiaze, born in 1980, Ph. D., associate professor. His research interests include software testing, data mining, intelligent information processing.

猜你喜歡
程序報告分類
分類算一算
試論我國未決羈押程序的立法完善
分類討論求坐標
數(shù)據(jù)分析中的分類討論
“程序猿”的生活什么樣
一圖看懂十九大報告
教你一招:數(shù)的分類
英國與歐盟正式啟動“離婚”程序程序
報告
創(chuàng)衛(wèi)暗訪程序有待改進
主站蜘蛛池模板: 精品久久蜜桃| yy6080理论大片一级久久| 色天天综合| 久草国产在线观看| 欧美不卡视频在线| 免费激情网站| 久久久精品国产SM调教网站| 色一情一乱一伦一区二区三区小说| AV不卡国产在线观看| 国产福利免费在线观看| 三上悠亚一区二区| 亚洲三级影院| 日本高清有码人妻| 久久成人免费| 999国产精品| 国产一区二区人大臿蕉香蕉| 久久特级毛片| 中文成人无码国产亚洲| 日韩大乳视频中文字幕| 欧美日韩精品综合在线一区| 国产在线98福利播放视频免费| 高清精品美女在线播放| 青青网在线国产| 国产高清无码第一十页在线观看| 91免费片| 国产尤物在线播放| 欧美国产在线一区| 免费观看精品视频999| 茄子视频毛片免费观看| 亚洲男人天堂2018| 亚洲制服丝袜第一页| 亚洲视频欧美不卡| 在线不卡免费视频| 伊人中文网| 91 九色视频丝袜| 天堂岛国av无码免费无禁网站 | 成人综合在线观看| 日韩精品亚洲人旧成在线| 免费在线a视频| 国产91视频免费观看| 亚洲综合网在线观看| 九色视频线上播放| 成人无码一区二区三区视频在线观看 | 精品人妻AV区| 日韩成人高清无码| 亚洲一本大道在线| 免费可以看的无遮挡av无码| 亚洲人成网址| 亚洲欧美日韩中文字幕在线| 久久综合AV免费观看| 四虎亚洲国产成人久久精品| 91欧美在线| 亚洲欧美另类日本| 中文字幕人妻av一区二区| 国产爽妇精品| 91成人在线免费观看| 依依成人精品无v国产| 男女男精品视频| …亚洲 欧洲 另类 春色| 青草视频在线观看国产| 久久久无码人妻精品无码| 久久中文电影| 永久免费无码日韩视频| 亚洲色无码专线精品观看| 久久久精品久久久久三级| 成人小视频网| 国产99精品视频| 国产成人亚洲欧美激情| 狠狠色成人综合首页| 日韩一级二级三级| 高潮毛片免费观看| 广东一级毛片| 黄色网页在线播放| 福利姬国产精品一区在线| 999国产精品永久免费视频精品久久 | 综合久久五月天| 国产aⅴ无码专区亚洲av综合网| 国产www网站| 国产黑丝视频在线观看| 亚洲一级毛片在线观播放| 国产探花在线视频| 国产主播在线观看|