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

基于缺陷報告分析的軟件缺陷定位方法

2019-10-08 06:43:30高子欣趙逢禹劉亞
軟件 2019年5期

高子欣 趙逢禹 劉亞

摘 ?要: 在軟件開發過程中,軟件缺陷是不可避免的。在缺陷跟蹤系統中,一個重要的問題是如何根據用戶所提交的缺陷報告,進行缺陷的自動定位。本文在綜合考慮缺陷報告與源代碼文件結構相似性的基礎上,進一步分析已修復缺陷報告、缺陷報告中的異常堆棧(Stack Trace)信息對軟件缺陷定位的作用,從而提高定位的精度。在Eclipse、AspectJ和SWT開源項目數據程序集上進行相關實驗,并與Buglocator、BRTracer和BLUiR缺陷定位方法進行了比較分析,實驗結果表明,本文方法能顯著提高軟件缺陷定位的精度。

關鍵詞: 缺陷定位;缺陷報告;結構相似;異常堆棧信息

中圖分類號: TP311.5 ? ?文獻標識碼: A ? ?DOI:10.3969/j.issn.1003-6970.2019.05.002

本文著錄格式:高子欣,趙逢禹,劉亞,等. 基于缺陷報告分析的軟件缺陷定位方法[J]. 軟件,2019,40(5):0815

【Abstract】: Software defects are inevitable during the software development process. In the defect tracking system, an important issue is how to automatically locate defects based on the bug report submitted by the user. Based on the comprehensive consideration of the structural similarity between the defect report and the source code file, this paper further analyzes the effect of the abnormal stack information in the fixed defect report and defect report on the software defect location, thus improving the positioning accuracy. Related experiments are carried out on the Eclipse, AspectJ and SWT open source project data assemblies, and compared with Buglocator, BRTracer and BLUiR defect location methods. The experimental results show that the proposed method can significantly improve the accuracy of software defect location.

【Key words】: Bug localization; Bug report; Similar structure; Stack information

0 ?引言

在整個軟件的生命周期中,軟件維護約占整個軟件開發項目工作量的40%左右[1-3]。在進行軟件維護時,如何定位軟件缺陷,是極具挑戰性的。當用戶在使用軟件過程中發現問題時,通常向軟件缺陷跟蹤系統中提交缺陷報告,開發人員再根據用戶填寫的缺陷報告進行缺陷定位,修改相應的代碼。但是隨著軟件規模以及復雜度的不斷加大,缺陷也越來越多,缺陷跟蹤系統上每天會收到大量的缺陷報告,只是通過人工完成缺陷定位會嚴重影響工作效率,所以如何通過缺陷報告自動定位到有缺陷的代碼一直是研究人員關注的熱點問題。

基于缺陷報告進行軟件缺陷定位目前已經有許多研究成果。Zhou等人[4]提出了BugLocator方法,原理是基于信息檢索,優化向量空間模型,根據源代碼文件和缺陷報告之間的文本相似度并結合歷史缺陷報告進行缺陷定位。Wong等人[5]提出了BRTracer方法,通過使用代碼分段和Stack Trace信息分析來提高缺陷定位的性能。他們將每個源代碼文件分成一系列的代碼片段,對于給定的一個缺陷報告,他們使用與該缺陷報告最相似的代碼片段來表示該源代碼文件,并利用了缺陷報告中的Stack Trace信息與源代碼文件之間的相似性。Saha等人[6]提出了BLUiR方法,通過修改tf-idf的計算方式,并利用源代碼結構化信息來檢索計算與缺陷報告中Summary和Description中的內容相似度,從而進行缺陷定位。

表1為從Eclipse官網中提取的一條Bug ID為80720缺陷報告以及這條缺陷對應的源代碼文件,這條缺陷報告主要是根據Description內容進行缺陷定位。

目前大部分研究人員都是將軟件缺陷報告和源代碼文件當作普通的文本來處理,分析它們之間的相似度,該方法主要是通過使用文本信息檢索技術[7-8]來比較缺陷報告與源代碼文件的相似性,對缺陷所在的源代碼文件進行定位。而實際上,軟件缺陷報告中通常包含Stack Trace信息、函數間調用的關系等,如果直接將它們視為純文本,則會丟掉大量有價值的缺陷信息,也會導致缺陷定位不準。

表2為另一條Bug ID為43709的缺陷報告以及這條缺陷對應的源代碼,這條缺陷報告則是根據Stack trace內容進行缺陷定位。Schroter等人[9]的一項研究表明,缺陷可能存在Stack Trace中的前10個函數中。

本文在綜合考慮軟件缺陷報告與源代碼文件結構相似性的基礎上,進一步分析待修復缺陷報告與已修復缺陷報告相似性、缺陷報告中的Stack Trace信息與源代碼文件相似性,從而提高定位的精度。

本文其它部分內容的組織說明如下:第二部分介紹了基于缺陷報告分析的軟件缺陷定位框架;第三部分詳細分析了本文用到的關鍵技術與方法;第四部分為實證分析該方法并與其他經典方法進行對比,確保其可行性;第五部分對本文方法做出總結并提出下一步改進工作。

1 ?基于缺陷報告分析的軟件缺陷定位框架

圖1為基于缺陷報告分析的軟件缺陷定位框架(Bug Report Defect location, 簡記為BRDL)。首先提取并預處理源代碼文件中的Class、Method、Variable、Comments等信息,并存儲為源代碼XML結構化文檔。同理我們將缺陷報告的Summary、Description、Comment提取出來并進行預處理操作,計算缺陷報告與源代碼文件的結構相似度;由于缺陷往往是存在于源代碼文件中的某個方法或者代碼塊中,所以再計算源代碼中的方法與缺陷報告的相似度,提高單個方法的影響力度;由于經常被修改的源代碼文件,含缺陷概率越高,待修復缺陷報告與已修復缺陷報告的相似度越高,則待修復缺陷報告關聯的缺陷文件很可能就是已修復缺陷報告修復的源代碼文件,用它們的相似度分數來調整最終源代碼文件排序;由于一些缺陷報告中會存在Stack Trace等信息,這些信息記錄了錯誤路徑上調用的方法以及所涉及到的類,它們參與了程序的錯誤執行過程,與程序錯誤密切相關,所以要對缺陷報告中的Stack Trace信息進行分析以輔助缺陷定位。

(1)構建源代碼XML結構化文檔

對源代碼使用Eclipse中的JDT技術來構建抽象語法樹[10-11],通過抽象語法樹來提取程序結構:Class、Method、Variable、Comments,并對Comments的內容進行去除停用詞等預處理,最后將這些處理后的信息存儲為一個源代碼XML結構化文檔。

(2)計算缺陷報告與源代碼文件的文本結構相似度

提取缺陷報告中的Summary、Description、Com?ments等相關信息,并進行分詞、去除停用詞等預處理操作,計算其與源代碼XML結構化文檔以及源代碼中方法的相似度。

(3)計算已修復缺陷報告與待修復缺陷報告的相似度

由于同一問題可能被不同用戶多次提交,并且經常被修改的源代碼文件含缺陷的概率更高,若一個待修復缺陷報告與已修復缺陷報告的相似度越高,則已修復缺陷報告所關聯的缺陷文件很可能就是這個待修復缺陷報告需要定位的源代碼文件。

(4)分析缺陷報告中的Stack Trace信息并計算其與源代碼文件的相似度

由于缺陷報告中的Stack Trace信息記錄了錯誤路徑上的調用的方法以及所涉及到的類,它們參與了程序的錯誤執行過程,所以該信息與程序錯誤密切相關,這里我們根據程序依賴圖找到源代碼中相關元素與Stack Trace中的結構化元素間的最小路徑,并計算其相似度。

2 ?基于缺陷報告分析的軟件缺陷定位的關鍵技術與方法

基于缺陷報告分析的軟件缺陷定位框架如圖1所示,其關鍵方法主要包含文本預處理、源代碼結構信息與缺陷報告相似度計算、待修復缺陷報告與已修復缺陷報告相似度計算和源代碼的結構信息與缺陷報告中的Stack Trace信息相似度計算。

2.1 ?文本預處理

預處理的目的是將缺陷報告或源代碼文件文本分解成可以被信息檢索技術分析的詞,即統一了詞空間。在對源代碼文件進行處理時,我們先將其轉換成抽象語法樹(Abstract Syntax Tree),則Class、Method、Variable、Comments等文本信息可被直接提取出來;提取缺陷報告中的Summary、Descri?ption、Comment內容;對提取的缺陷報告的內容以及源代碼文件中的Comments的內容進行分詞、去除停用詞、提取詞干等預處理操作。

在進行標識符分割時,那些標志符通常是根據Camel Case splitting[12]分割原則分割成它的構成詞,但這樣會增加單個詞命名的權重。所以我們將所有非字母符號轉為空格,用空格將文本分割成一連串的詞。

由于缺陷報告和源代碼文件有不同的停止詞。對缺陷報告而言,“is”、“the”、“on”等都是英文停止詞。對源代碼文件而言,除了英文停止詞,還要移除關鍵字,如“private”、“public”、“return”等。所以我們定義了兩個去停用詞列表,一個是英文停用詞,還有一個就是關鍵字。選擇去英文停用詞對自然語言文本進行去停用詞操作;選擇去關鍵字對源代碼進行去停用詞操作。

最后,使用標準的Porter Stemmer[11]來執行詞干提取,將衍生詞還原為詞根形式。例如,詞“removing”和“removes”將還原成詞“remove”。經過此處理后,相似的詞就能以相同形式出現。

2.2 ?源代碼結構信息與缺陷報告相似度計算

缺陷報告與源代碼文件進行預處理之后,我們計算源代碼的結構信息:Class、Method、Variable、Comments與缺陷報告的相似度,將源代碼XML文檔中的Class、Method、Variable、Comments中的內容分別與預處理后的缺陷報告內容進行詞語匹配,如表3所示。

由于缺陷通常是存在于源代碼文件中的某個方法或某個代碼塊中,所以這里增加方法的權重,單獨計算源代碼的方法中的信息與缺陷報告的匹配程度,以提高單個方法的影響力度。表4為源代碼方法信息與缺陷報告詞語匹配。

3 ?實驗分析

為了驗證本文方法的實用性,選取了被其他研究人員經常使用的數據集Eclipse3.1,AspectJ1.5,SWT3.1進行實驗分析,并與Buglocator、BRTracer、BLUiR三個缺陷定位方法進行比較,從而驗證本方法對提高軟件缺陷定位的精確度可行性。

主站蜘蛛池模板: 国产免费久久精品44| 99久久人妻精品免费二区| 一区二区三区国产精品视频| 日韩二区三区| 国产成人精品亚洲77美色| 精品福利视频导航| 91亚洲视频下载| 国产色伊人| 国产aⅴ无码专区亚洲av综合网| 久久精品国产精品一区二区| 青草免费在线观看| 四虎精品国产AV二区| 国产91av在线| 免费中文字幕一级毛片| av手机版在线播放| 久久国产精品娇妻素人| 国产人在线成免费视频| 亚洲网综合| 蜜桃臀无码内射一区二区三区 | 97在线国产视频| 1024你懂的国产精品| 国产原创第一页在线观看| 成人av手机在线观看| 蜜桃视频一区二区| 亚洲国产精品人久久电影| 一级在线毛片| 98精品全国免费观看视频| 六月婷婷综合| 女同久久精品国产99国| 欧美啪啪网| 激情成人综合网| 亚洲六月丁香六月婷婷蜜芽| 99999久久久久久亚洲| 色偷偷综合网| 一级毛片中文字幕| 欧美乱妇高清无乱码免费| 亚洲午夜福利在线| 91精品啪在线观看国产60岁 | 热伊人99re久久精品最新地| 美女啪啪无遮挡| 日日拍夜夜操| 国产精品成人AⅤ在线一二三四 | 久久96热在精品国产高清| 在线看国产精品| 久久永久视频| 婷婷综合在线观看丁香| 中文字幕首页系列人妻| 国产在线观看99| 精品国产美女福到在线不卡f| 一区二区自拍| 沈阳少妇高潮在线| 国模沟沟一区二区三区| 亚洲精品在线观看91| 亚洲国产精品成人久久综合影院| 99视频在线免费观看| 久久久噜噜噜| 日本a级免费| 成年人视频一区二区| 91探花国产综合在线精品| igao国产精品| 国产高清在线丝袜精品一区| a网站在线观看| 久久久久青草线综合超碰| 中文字幕无码av专区久久| 欧美第九页| 国产成本人片免费a∨短片| 99热国产这里只有精品无卡顿"| 美女一区二区在线观看| 在线看国产精品| 99国产精品免费观看视频| 国产在线精彩视频二区| 自慰高潮喷白浆在线观看| 中国国语毛片免费观看视频| 成人看片欧美一区二区| 亚洲av无码片一区二区三区| 婷婷色一区二区三区| 久久6免费视频| 精品国产三级在线观看| 亚洲精品爱草草视频在线| 欧美一级高清视频在线播放| 日韩毛片免费观看| 嫩草国产在线|