一種基于文本詞性和程序調(diào)用關(guān)系的軟件缺陷定位方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于計算機技術(shù)領(lǐng)域,尤其指代一種基于文本詞性和程序調(diào)用關(guān)系的軟件 缺陷定位方法。
【背景技術(shù)】
[0002] 軟件缺陷的及時修復(fù)對提高用戶滿意度相當重要,也是一個軟件發(fā)展的重要環(huán) 節(jié)。在軟件發(fā)展周期中,軟件缺陷定位成為維護時一個非常困難的工作,尤其是對那些不熟 悉缺陷模塊的開發(fā)者來說,更是耗時和令人煩躁的工作。通常使用軟件缺陷跟蹤系統(tǒng)(BTS) 來管理軟件缺陷以及需求。當一個軟件發(fā)布以后,相應(yīng)的BTS就負責收集程序測試人員或 者終端用戶提交的對軟件缺陷的描述報告(即缺陷報告),軟件的開發(fā)人員可以通過這些 報告對軟件進行適當?shù)木S護和完善。開發(fā)人員需要仔細閱讀缺陷報告里的內(nèi)容,發(fā)現(xiàn)關(guān)鍵 字,例如:類名或者方法名,檢索數(shù)以萬計的源代碼文件從而找出缺陷在源代碼中的位置。 為了減輕開發(fā)人員的工作,許多研究者開始著手提出軟件缺陷定位的方法。
[0003] 軟件缺陷定位是軟件工程領(lǐng)域中被廣泛研究的主題,其大致可分為動態(tài)和靜態(tài)的 方法,動態(tài)方法使用預(yù)先設(shè)計好的測試用例對程序進行測試,在程序運行過程中收集程序 的執(zhí)行信息,通過收集的信息來判斷缺陷可能存在的位置。最常用的是基于頻譜的動態(tài)定 位方法,定位的粒度可以精確到一個執(zhí)行語句??墒莿討B(tài)定位也存在著測試用例的生成以 及選擇等復(fù)雜的問題。
[0004] 靜態(tài)的缺陷定位多采用信息檢索的方法,通過分析代碼和缺陷報告的特征,用這 些特征計算得出缺陷與代碼的相關(guān)性。與動態(tài)的缺陷定位方法不同,靜態(tài)的方法不需要測 試用例,可以使用開源軟件數(shù)據(jù)來檢驗方法的有效性。靜態(tài)的方法通常定位到代碼文件級 或者是程序方法級。信息檢索中的多個模型被運用,如潛在語義索引模型,向量空間潛以及 狄利克雷分配模型,這些模型都是將缺陷報告作為查詢,而將代碼文件作為檢索的對象,通 過計算缺陷報告與代碼的相關(guān)性來定位缺陷。
[0005] 近年來,研究者們利用缺陷之間的相似性來提高缺陷定位的效果。因為相似的缺 陷可能出現(xiàn)在同一個位置,Zhou等人結(jié)合缺陷之間的相似性和缺陷文件之間的相似性,進 一步提高缺陷定位的精度,并在2012年第34屆軟件工程國際會議ICSE發(fā)表論文,提出軟 件缺陷定位方法BugLocator,其中若該方法參數(shù)α = 〇,則表示該方法不運用相似缺陷報 告這一模塊。從此以后,更多的缺陷信息,包括缺陷的歷史信息、相似的缺陷報告和文件的 結(jié)構(gòu)信息都被利用來提升缺陷定位。這些研究在對于缺陷文本的處理上,對所有詞性的詞 項都已是一視同仁,也沒有利用缺陷文件程序的調(diào)用關(guān)系。
【發(fā)明內(nèi)容】
[0006] 針對于上述問題,本發(fā)明的目的在于提供一種基于文本詞性和程序調(diào)用關(guān)系的軟 件缺陷定位方法,利用文本詞性調(diào)整詞項權(quán)值,程序間的調(diào)用關(guān)系校正相似度值,以及根據(jù) 程序員要求進行源代碼文件濾除和最終結(jié)果輸出,達到提高缺陷定位準確度的目的。
[0007] 為達到上述目的,本發(fā)明的一種基于文本詞性和程序調(diào)用關(guān)系的軟件缺陷定位方 法,包括步驟如下:
[0008] 1)提取缺陷報告里小結(jié)和描述的文本信息,并標記文本詞項的詞性,然后根據(jù) 詞性標記提高缺陷報告文本信息中名詞詞項的權(quán)重并且整體提高小結(jié)模塊所有詞項的權(quán) 重;
[0009] 2)根據(jù)開發(fā)者的需求參數(shù)ran濾除源代碼文件不需要的成分,同時對缺陷報告文 本信息和濾除后的源代碼文件進行預(yù)處理,得到特征詞集合;
[0010] 3)利用信息檢索技術(shù)建立模型,計算缺陷報告與源代碼文件的相似度,并根據(jù)相 似度的大小生成可疑缺陷文件列表;
[0011] 4)提取缺陷報告文本信息里所含的類名并找到其對應(yīng)的源代碼文件,找出這些源 代碼文件在列表中排名最高的源代碼文件,通過字符串檢索找到排名最高源代碼文件調(diào)用 的所有源代碼文件,即調(diào)用源文件,適當提高調(diào)用源文件的相似度值來校正原有排名;
[0012] 5)根據(jù)開發(fā)者的需求參數(shù)ran輸出缺陷報告對應(yīng)的缺陷源代碼文件或者缺陷源 代碼文件列表。
[0013] 優(yōu)選地,所述步驟1)中標記詞性是由開源的詞性標記器來實現(xiàn),輸入詞性標記器 的為一個完整的句子,且逐句進行詞性標記。
[0014] 優(yōu)選地,所述步驟1)還包括:通過增加名詞與其他詞性詞項的頻數(shù)比來實現(xiàn)其在 整體文本中權(quán)重的提高。
[0015] 優(yōu)選地,所述步驟1)還包括:詞項權(quán)重調(diào)整后,詞項標記將會被刪除,以釋放內(nèi) 存。
[0016] 優(yōu)選地,所述步驟2)和5)中的開發(fā)者需求參數(shù)ran有兩個值,即true和false ; 若ran值為true,則表示開發(fā)者針對單個缺陷報告只需要一個可疑的缺陷源代碼文件,源 代碼文件濾除操作后將只留下類名和方法名,并且最后的輸出為與缺陷報告相似度值最高 的源代碼文件;若ran值為false,則表示開發(fā)者針對單個缺陷報告需要N個可疑缺陷源代 碼文件,源代碼文件濾除操作將只刪除源代碼里的注釋,并且最后的輸出為一個可疑缺陷 源代碼文件列表。
[0017] 優(yōu)選地,對于缺陷文件和濾除后源代碼文件的預(yù)處理包括分詞,去停用詞和提取 詞干;且兩者使用的停用詞集合不同,特征詞項是缺陷報告預(yù)處理后的詞項。
[0018] 優(yōu)選地,所述步驟3)中提到的基于信息檢索的建立的模型為向量空間模型,它將 缺陷文件和源代碼文件表示為一個個的詞向量,詞項在一個缺陷報告或者源代碼文件的權(quán) 重是由它在其中的詞頻和數(shù)據(jù)集中的逆文檔頻率決定的。
[0019] 優(yōu)選地,相似度計算主要是計算缺陷報告對應(yīng)的詞向量和源代碼文件所對應(yīng)的詞 向量的Cosine值,值越大表示對應(yīng)的缺陷報告和源代碼文件越相近,源代碼文件是缺陷報 告所描述問題的位置的可能性就越大。
[0020] 優(yōu)選地,所述步驟4)中提到的字符串檢索是指掃描最高排名源代碼文件的所有 詞項,如果掃到的詞項是一個源代碼文件的名字,那么這個源代碼文件就是調(diào)用源文件。
[0021] 優(yōu)選地,調(diào)用源文件原來相似值的70%加上調(diào)用它的源代碼文件的相似值的 30 %,得到該調(diào)用源文件新的相似度值。
[0022] 本發(fā)明的有益效果:
[0023] 本發(fā)明文本詞性調(diào)整詞項權(quán)值,程序間的調(diào)用關(guān)系校正相似度值,以及根據(jù)程序 員要求進行源代碼文件濾除和最終結(jié)果輸出,達到提高缺陷定位準確度的目的。
【附圖說明】
[0024] 圖1為本發(fā)明基于文本詞性和程序調(diào)用關(guān)系的軟件缺陷定位方法的流程圖。
[0025] 圖2為圖1模塊二中抽取調(diào)用源文件,并校正調(diào)用源文件與缺陷報告相似度值的 示意圖。
【具體實施方式】
[0026] 為了便于本領(lǐng)域技術(shù)人員的理解,下面結(jié)合實施例與附圖對本發(fā)明作進一步的說 明,實施方式提及的內(nèi)容并非對本發(fā)明的限定。
[0027] 參照圖1至圖2所示,本發(fā)明的一種基于文本詞性和程序調(diào)用關(guān)系的軟件缺陷定 位方法,包括如下:
[0028] 1、需求參數(shù)ran
[0029] 需求參數(shù)ran皆出現(xiàn)在兩個模塊中,該參數(shù)為布爾類型,值域為true(真)或者 false (假),主要是控制源帶代碼文件成分濾除和最終的結(jié)果輸出。
[0030] 如果ran值為true,則表示開發(fā)者針對單個缺陷報告只需要一個可疑的缺陷源代 碼文件,源代碼文件濾除操作后將只留下類名和方法名,并且最后的輸出為相似度值最高 的源代碼文件;如果ran值為false,則表示開發(fā)者對單個缺陷報告需要N個可疑缺陷源代 碼文件,源代碼文件濾除操作將只刪除源代碼所有的注釋,并且最后的輸出相應(yīng)的可疑缺 陷源代碼文件列表。
[0031] 2、模塊一
[0032] 該模塊一主要是實現(xiàn)文本詞性的標記,詞項權(quán)重的調(diào)整,以及缺陷報告與源代碼 文件相似度的計算。
[0033] 從軟件缺陷跟蹤系統(tǒng)中提取缺陷報告,再從缺陷報告中提取文本屬性的小結(jié)和描 述兩部分,然后將該兩部分中的句子輸入到詞性標記器中,得到每個詞項在整個句子中的 詞性;接著,通過增加名詞與其他詞性詞項的頻數(shù)比來實現(xiàn)其在整體文本中權(quán)重的提高,并 通過增加小結(jié)詞項與描述詞項的頻數(shù)比來實現(xiàn)提高小結(jié)的權(quán)重。
[0034] 將調(diào)整過詞項權(quán)重的文本進行預(yù)處理,包括分詞、去停用詞和提取詞干,停用詞可 根據(jù)文本特性自由添加;經(jīng)預(yù)處理后得到特征詞集合。以特征詞集合為索引詞項建立空間 詞向量模型,將每個缺陷報告都表示成為基于特征詞的詞向量。
[0035] 下載缺陷報告對應(yīng)版本的項目源代碼,根據(jù)參數(shù)ran的值對源代碼文件的成分進 行濾除。如果ran的值為true,那么只保留源代碼文件的類名和方法名;如果ran的值為 false,那么刪除源代碼文件中的所有注釋。濾除操作后,對源代碼文本進行預(yù)處理,包括分 詞,去停用詞,提取詞干,停用詞可根據(jù)源碼特性自由添加且一般與缺陷報告的停用詞集合 不