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

基于代碼結構信息和歷史缺陷報告軟件缺陷定位研究

2017-10-12 03:23:06劉艾俠劉丹丹寶雞職業技術學院寶雞7203中國科學院大學北京00039中國科學院國家授時中心西安70600
微型電腦應用 2017年9期
關鍵詞:報告歷史結構

劉艾俠, 劉丹丹(. 寶雞職業技術學院, 寶雞 7203; 2. 中國科學院大學, 北京 00039;3. 中國科學院 國家授時中心, 西安 70600)

基于代碼結構信息和歷史缺陷報告軟件缺陷定位研究

劉艾俠1, 劉丹丹2,3
(1. 寶雞職業技術學院, 寶雞 721013; 2. 中國科學院大學, 北京 100039;3. 中國科學院 國家授時中心, 西安 710600)

靜態缺陷定位通常采用信息檢索的方法,現有的信息檢索方法一般采用源代碼與缺陷報告的文本相似性的排序方法,但是這種基于文本相似性的方法沒能充分利用源代碼結構信息,缺陷定位的準確率較低。為了解決這個問題,提出了一種基于源代碼結構信息(如類名、方法名、變量名、注釋等)和歷史缺陷報告信息進行缺陷定位的方法。對于源代碼結構的不同部分,在與缺陷報告進行詞語匹配時,賦予它們不同的權重,同時充分利用歷史缺陷報告信息,提高缺陷定位的精度。最后為了驗證基于代碼結構信息的缺陷定位技術的有效性,與以前提出的BugLocator、BugScout等方法進行了比較,結果表明基于代碼結構信息的軟件缺陷定位方法比BugLocator和BugScout方法準確度有明顯提高。

代碼結構; 缺陷定位; 缺陷報告; 歷史缺陷報告

Abstract: Static bug localization method commonly uses information retrieval method to locate bug. Existing information retrieval methods generally use text similarity between the source codes and bug reports, but the text similarity method fails to make full use of the source code structure information, and has low accuracy. In order to solve this problem, this paper presents a bug localization method using source code structure (such as the class name, method names, variable names, comment etc.) and historical bug report information. When different parts of the source code structure match the bug report, they are given different weights. The paper also makes full use of the historical bug report information to improve the accuracy of bug localization. Finally in order to validate the method, this paper is compared the proposed method with BugLocator and BugScout, the results show that software bug localization method based on source code structure has significant advantage than the BugLocator and the BugScout.

Keywords: Code structure; Bug localization; Bug report; Historical bug report

0 引言

軟件缺陷(bug)是影響軟件質量的重要因素之一,缺陷的存在經常導致系統的失效和崩潰,給系統的可信運行帶來挑戰[1]。近年來,缺陷定位技術受到諸多國內外學者廣泛研究,并已經取得了較為顯著的結果。現今缺陷定位技術主要分為三類,靜態缺陷定位技術[2]和動態缺陷定位技術[2]以及動靜結合的缺陷定位技術[3]。靜態缺陷定位通常使用文本信息檢索技術來比較缺陷報告和源代碼文件之間的相似性,如常用的向量空間模型和隱性語義索引等。信息檢索技術從程序源代碼中抽取文本,然后計算與缺陷報告之間的文本相似性,相似性越高意味著源代碼文件和缺陷報告關聯的嫌疑度越大[4]。但是,現有的信息檢索技術僅僅把源代碼視為一種普通文本,沒有考慮代碼文件中的結構信息,如果能充分利用這些結構信息,就可以進一步提高缺陷定位的精度[5]。本文認為一個缺陷報告通常是一個或多個類的代碼錯誤引起的,與通常的文本相似性匹配不同,本文直接分析類與缺陷報告的相似性,研究源代碼結構信息對缺陷定位的影響,利用了源代碼不同的結構信息、文本信息與缺陷報告之間的相似性,并在其中加入了權重的因素,使其可以根據不同情況進行動態調整。另外,還考慮了用不同缺陷報告之間的文本相似性,來進一步提高定位精準度。

1 基于代碼結構的缺陷定位模型

現有的基于信息檢索的缺陷定位方法僅僅把源代碼視為一種缺乏結構的普通文本,沒有考慮代碼文件中的結構信息[6]。事實上,源代碼豐富的結構如類名、方法名、變量名和注釋等有著重要的作用。雖然忽視這些結構能簡化缺陷定位運算,但是也失去了用結構化信息提高缺陷定位的機會。源代碼豐富的結構,包、類、屬性、方法、注釋之間有明確的結構關系,而這些結構信息對于缺陷定位有重要價值,可以幫助開發者提高缺陷定位精度[7]。通常這些重要的信息經常迷失在大量的變量名和注釋詞語中。

為了提高定位精度,本文提出需要充分利用代碼結構信息和歷史缺陷報告信息進行缺陷定位。缺陷定位流程,如圖1所示。

圖1 缺陷定位流程

首先提取軟件系統中java源代碼文件;運用Eclipse AST抽取java文件中的類名、方法名、變量名和注釋,同時進行預處理去除注釋中的無用停止詞等,然后把這些標識符組成源代碼的XML結構化文件;獲取新的缺陷報告,提取缺陷報告的摘要和內容,并對其進行預處理;將源代碼的XML結構化文件和缺陷報告進行結構化相似匹配運算,并進行加權,這一步稱為源代碼結構化的軟件缺陷定位;獲取歷史缺陷報告,將新缺陷報告與歷史缺陷報告進行VSM相似性計算,獲取每一個源代碼文件所關聯的歷史缺陷報告與新缺陷報告VSM相似性最大值作為利用歷史缺陷報告進行缺陷定位的相似性分數;將源代碼結構化的缺陷定位分數和利用歷史缺陷報告進行缺陷定位得出的分數進行加權,進行最終的缺陷定位計算。

2 缺陷定位模型算法設計

(1) 構建源代碼中類的XML文檔

對源代碼使用Eclipse中的JDT技術構建抽象語法樹(AST),通過抽象語法樹來提取程序結構如:類名、方法名、變量名和注釋,對注釋內容進行去除停止詞等預處理,每個源代碼文件的信息儲存為一個XML結構化文檔[8]。

(2) 源代碼結構化缺陷定位計算

為了分析某個源代碼文件與缺陷報告之間的結構化相似度,本文先獲取一個新的缺陷報告。本文先對缺陷報告進行去除停止詞等預處理后,然后用每個源代碼文件的結構化信息內容(Class Name,Method Name,Variable和Comment)中的4部分分別對缺陷報告進行詞語匹配,統計出現的次數,如表1所示。

表1 源代碼結構化信息與缺陷報告詞語匹配次數

缺陷與代碼結構化相似度計算式,如式(1)。

(1)

其中a,b,c,d分別表示類名、方法名、變量名和注釋的權重,通過調整模型中的權重,就可以改變類名、方法名、變量名和注釋在缺陷定位時所占的重要性。

給定一個缺陷報告,使用公式(1)中的StructScore計算每個源代碼文件和缺陷報告之間的相關分數,根據分數由高到低得出相關源代碼文件的排名列表。

(3)歷史缺陷報告信息的運用

每個歷史缺陷報告關聯著若干源代碼文件,如果新缺陷報告與歷史缺陷報告相似度較高,那么歷史缺陷報告關聯的源代碼文件就有可能是需要定位的缺陷文件。為充分利用歷史缺陷報告信息,對于一個新的缺陷報告,本文提出利用該報告與歷史缺陷報告的相似性來調整相關源代碼文件的排名。這里利用VSM來計算缺陷報告之間的相似性。在VSM中,每個處理后的缺陷報告被作為一個n維向量,n是出現在缺陷報告中詞語的個數,wi是n維向量中第i個詞語的權重。一個詞語t在文檔d中的權重可以用式(2)計算。

(2)

其中t表示詞語,d表示一個缺陷報告,e,是詞語t出現在d中的次數,N是缺陷報告總數,nt是含有詞語t的缺陷報告總數,缺陷報告之間的相似性得余弦式(3)。

(3)

(4) 最終缺陷定位計算

對StructScore和SimiScore進行加權組合,得出一個源代碼文件總分數如式(4)。

FinalScore=(1-k)×StructScore+k×SimiScore

(4)

其中k是權重參數,它的范圍在0~1之間,參數k根據多次實驗,選取最優值。源代碼文件按照FinalScore分數,由高到底遞減排列,源代碼文件排的越高,越是有可能和缺陷報告相關性大。

3 測試分析

本文在實驗過程中,使用NetBeans作為開發工具。為了研究使用代碼結構化信息和歷史缺陷報告信息是否能提高缺陷定位的精確度,本文選取了Eclipse開源項目作為測試集,并且Eclipse的版本和BugLocator方法中Eclipse的版本相同,以便進行比較。Eclipse3.1數據集總共包含了3075個缺陷報告,為Eclipse項目數據集,如表2所示。

表2 Eclipse項目數據集

本文選取了一部分缺陷報告作為歷史缺陷報告,以便進行實驗。

本文用StructLocato表示本文的源代碼結構化缺陷定位方法[8],用StructSimiLoactor表示源代碼結構化和歷史缺陷報告相結合的方法。對于式(1)中a,b,c,d權重的取值,本文經過一部分實驗,選取了其最優取值a=0.6,b=0.2,c=0.1,d=0.1。由于本文和BugLocator[9]使用了相同的Eclipse數據集,因此可以和BugLocator做比較。經過大量實驗后,本文獲得了源代碼文件的前N排名,并計算出了MAP和MRR的值。如表3、表4所示。表3、表4中BugLocator方法的數據來自于他們的論文中。表3顯示了使用BugLocator方法和本文的StructLocator方法的缺陷定位比較,由于沒有加入歷史缺陷報告相似性,所以k=0。實驗結果顯示StructLocator方法比BugLocator方法能定位更多缺陷。例如,對于Eclipse,使用StructLocator方法返回的相關源代碼文件位于Topl的缺陷報告數目占總數的29.4%,而使用BugLocator方法定位到的缺陷報告僅僅只有24.4%,Top5和Top10也有類似的趨勢,StructLocator方法的MAP和MRR數值(MAP=0.29,MRR=0.40)要高于BugLocator的MAP和MRR(MAP=0.26,MRR=0.35),表明在Eclipse中StructLoactor方法的缺陷源文件的整體排名比BugLocator的高。

表3 沒有使用歷史缺陷報告下的實驗對比

表4顯示了使用BugLocator方法和本文的StructSimiLoactor方法的缺陷定位比較,經測試比較,本文選取k權重因子為k=0.2。對于Eclipse的測試結果:

1) 在Topl中,使用StructSimiLoactor方法定位的缺陷報告占總數的32.7%而使用BugLocator方法定位的缺陷報告只占29.1%

2) 在Top5中,使用StructSimiLoactor方法定位的缺陷報告占56.0%,而使用BugLocator方法定位的缺陷報告只占53.8%}

3) 在Top10中,使用StructSimiLoactor方法定位的缺陷報告占65.3%,而使用BugLocator方法定位的缺陷報告只占62.6%

4) StructSimiLoactor方法的MAP和MRR數值分別是MAP=0.32}MRR=0.43而BugLocator的MAP和MRR數值分別是MAP=0.30}MRR=0.410

以上數據表明在Eclipse中StructSimiLoactor方法的缺陷源文件的整體排名比BugLocator的高。

表4 StructSimiLoactor和BugLocator的實驗對比

本文也同BugScout做了比較[10],如圖2所示。

圖2 在Eclipse中不同的缺陷定位方法對比

Nguyen等人使用了Eclipse數據集作為他們的實驗項目的一部分來評測BugScout,由于本文的Eclipse數據集和BugScout中Eclipse的版本不同,本文只列出了BugScout在Topl、Top5、Top10的概率。從圖2中可以看出:

1) 在Topl的位置,3個方法的缺陷定位概率大小比較是:

StructSimiLoactor>Buglocator>BugScout。

2) 在Top5和Top10的位置也有1)中類似的趨勢。

以上數據表明,StructSimiLoactor比Buglocator和BugScout表現出色。

4 總結

本文提出了使用源代碼結構化信息(如類名、方法名、變量名、注釋等)來提高缺陷定位的方法,本文將源代碼文件結構的不同部分分別與缺陷報告進行匹配,對每一部分賦予不同的權值,然后進行加權求和,獲得源代碼結構化的缺陷定位。為了更好的提高缺陷定位的精度,本文還充分利用了歷史缺陷報告信息。對歷史缺陷報告和新缺陷報告進行VSM相似性計算,將每個源代碼關聯的所有歷史缺陷報告分別與新缺陷報告進行相似性計算,將相似性計算的最大值作為這個源代碼文件的利用歷史缺陷報告的缺陷定位分數。將源代碼結構化的缺陷定位和利用歷史缺陷報告的缺陷定位分別賦予不同的權值,進行加權組合,獲得最終的缺陷定位排名。最后對于所有的源文件,排名最高的文件嫌疑度最大。

[1] National Institute of Standards and Technology(NIST). Software Errors Cost U. S. Economy $59. 5 Billion Annually[R], June 28, 2002.

[2] 梁成才, 章代雨, 林海靜. 軟件缺陷的綜合研究 [J]. 計算機工程, 2006, 32(19):88-90.

[3] 古可, 劉超, 金茂忠, 等. C++代碼缺陷自動檢測工具的研究與實現[J]. 計算機應用研究, 2009, 26(5):1628-1631.

[4] 丁暉, 陳林, 錢巨, 等.一種基于信息量的缺陷定位方法[J]. 軟件學報, 2013, 24(7):1484-1494.

[5] 趙磊, 王麗娜, 高東明,等. 基于關聯挖掘的軟件錯誤定位方法[J]. 計算機學報, 2012, 35(12):2529-2539.

[6] Moreno L, Bandara W, Haiduc S, et al. On the Relationship between the Vocabulary of Bug Reports and Source Code[C]// 2013 IEEE International Conference on Software Maintenance. IEEE Computer Society, 2013:452-455.

[7] 梁廣泰, 王千祥. CODAS:一個易擴展的靜態代碼缺陷分析服務[J]. 軟件學報, 2012, 39(1):14-17

[8] 陳翔, 鞠小林, 文萬志, 等. 基于程序頻譜的動態缺陷定位方法研究[J]. 軟件學報, 2015, 26(2):390-412.

[9] Poshyvanyk D, Uueheneuc Y G, Marcus A, et al. Feature Location Using Probabilistic Ranking of Methods Based on Execution Scenarios and Information Retrieval[J]. IEEE Transactions on Software Engineering, 2007, 33(6):420-432.

[10] Manning C D, Raghavan P, Schiatze H. Introduction to information retrieval[J]. Citeseer, 2008, 43(3):824-825.

ResearchofSoftwareDefectPositioningBasedontheCodeStructureInformationandHistoryDefectReport

Liu Aixia1, Liu Dandan2,3
(1. Baoji Vocational Technology College, Baoji 721013, China; 2. University of Chinese Academy of Science, Beijing 10039, China; 3. National Time ServiceCenter, Chinese Academy of Science, Xi’an 710600, China)

TP311

A

2017.06.26)

劉艾俠(1982-),女,陜西周至人,碩士,講師,研究方向:計算機技術。 劉丹丹(1983-),女,河南焦作人,碩士,助理研究員,研究方向:計算機軟件設計。

1007-757X(2017)09-0047-03

猜你喜歡
報告歷史結構
《形而上學》△卷的結構和位置
哲學評論(2021年2期)2021-08-22 01:53:34
論結構
中華詩詞(2019年7期)2019-11-25 01:43:04
一圖看懂十九大報告
報告
南風窗(2016年26期)2016-12-24 21:48:09
論《日出》的結構
新歷史
全體育(2016年4期)2016-11-02 18:57:28
歷史上的6月
報告
南風窗(2015年22期)2015-09-10 07:22:44
歷史上的八個月
歷史上的4月
主站蜘蛛池模板: 免费在线成人网| 日韩AV无码一区| 欧美日韩国产在线人| 先锋资源久久| 欧美yw精品日本国产精品| 九色国产在线| 国产无人区一区二区三区 | 一级片免费网站| 国产精品久久久久久久久| 91九色国产porny| 日韩精品毛片人妻AV不卡| 中国精品自拍| 白丝美女办公室高潮喷水视频| 在线观看无码av五月花| 亚洲成人在线网| 久久黄色一级片| 91久久国产综合精品女同我| 欧美va亚洲va香蕉在线| 亚洲国产中文在线二区三区免| 精品亚洲国产成人AV| 美女内射视频WWW网站午夜 | 亚洲国模精品一区| 亚洲欧美另类色图| 中国一级特黄大片在线观看| 国产视频自拍一区| 欧美一级在线看| 九九九国产| 欧美在线天堂| 97视频免费在线观看| 亚洲女人在线| 亚洲国产精品不卡在线| 99热这里都是国产精品| 成人在线第一页| 久久久久亚洲精品无码网站| 九九九精品成人免费视频7| 欧美在线伊人| 国产成人亚洲日韩欧美电影| 成人国产免费| 亚洲视频三级| 亚洲自拍另类| a网站在线观看| 9啪在线视频| 综1合AV在线播放| 日韩欧美91| 人妻21p大胆| 国产91高跟丝袜| 亚洲AV无码久久天堂| 久久亚洲天堂| 91亚洲视频下载| 在线观看国产小视频| 亚洲中字无码AV电影在线观看| 亚洲国产欧美自拍| 国产a网站| 久久精品国产在热久久2019| 亚洲天堂成人| 国产一级做美女做受视频| 好吊色妇女免费视频免费| 国产三级毛片| 怡春院欧美一区二区三区免费| 欧美日韩国产精品综合| 亚洲无线视频| 无遮挡一级毛片呦女视频| 亚洲国产精品美女| 国产在线观看91精品亚瑟| 欧美三级不卡在线观看视频| 第一页亚洲| 天天综合网色中文字幕| 成人亚洲天堂| 国产精品网址你懂的| 国产毛片高清一级国语| 亚国产欧美在线人成| 91九色视频网| 精品成人一区二区| 日韩性网站| 乱人伦视频中文字幕在线| 国产毛片不卡| 国产女人18水真多毛片18精品| 日韩AV无码一区| 国产精品熟女亚洲AV麻豆| 国产午夜精品鲁丝片| 97久久精品人人做人人爽| 国产99视频免费精品是看6|