本技術涉及軟件缺陷定位,尤其是涉及一種多維度多注意力的軟件缺陷定位方法、系統(tǒng)及設備。
背景技術:
1、現(xiàn)有的技術例如基于程序頻譜的缺陷定位技術(spectrum-based?faultlocalization,sbfl),現(xiàn)有的技術主要針對測試覆蓋率信息,無法區(qū)分測試用例意外執(zhí)行的元素和實際的故障元素。并且由于其僅僅利用了測試的覆蓋率信息,無法定位到錯誤的真正原因,例如沒有利用程序語義信息和歷史提交信息來定位錯誤。導致現(xiàn)有的技術在實際的項目中軟件缺陷定位效果不佳,準確率比較低。
技術實現(xiàn)思路
1、本技術旨在提出一種多維度多注意力的軟件缺陷定位方法、系統(tǒng)及設備,能夠從多維度的角度分析軟件代碼,從而提高軟件缺陷定位的準確率。
2、第一方面,本技術實施例提供了一種多維度多注意力的軟件缺陷定位方法,所述方法包括:
3、獲取待定位缺陷的軟件程序代碼;
4、提取所述待定位缺陷的軟件程序代碼中的第一動態(tài)執(zhí)行信息、第一歷史修改信息以及第一靜態(tài)語義信息,所述第一動態(tài)執(zhí)行信息用于表征所述待定位缺陷的軟件程序代碼在運行時的異常風險,所述第一歷史修改信息用于表征所述待定位缺陷的軟件程序代碼歷史上的缺陷風險,所述第一靜態(tài)語義信息具有所述待定位缺陷的軟件程序代碼中的上下文語義信息;
5、將所述第一動態(tài)執(zhí)行信息、所述第一歷史修改信息以及所述第一靜態(tài)語義信息進行融合,得到第一融合信息向量;
6、將所述第一融合信息向量輸入訓練好的多頭注意力缺陷定位模型中,得到缺陷定位結(jié)果。
7、與現(xiàn)有技術相比,本技術第一方面具有以下有益效果:
8、本方法通過提取待定位缺陷的軟件程序代碼中的第一動態(tài)執(zhí)行信息、第一歷史修改信息以及第一靜態(tài)語義信息,第一動態(tài)執(zhí)行信息用于表征待定位缺陷的軟件程序代碼在運行時的異常風險,第一歷史修改信息用于表征待定位缺陷的軟件程序代碼歷史上的缺陷風險,第一靜態(tài)語義信息具有待定位缺陷的軟件程序代碼中的上下文語義信息;將第一動態(tài)執(zhí)行信息、第一歷史修改信息以及第一靜態(tài)語義信息進行融合,得到第一融合信息向量;將第一融合信息向量輸入訓練好的多頭注意力缺陷定位模型中,得到缺陷定位結(jié)果。如此,通過結(jié)合第一動態(tài)執(zhí)行信息、第一歷史修改信息以及第一靜態(tài)語義信息,能夠獲得更加全面和準確的信息,從而提高軟件缺陷定位的準確率和魯棒性。
9、在一些實施方式中,所述提取所述待定位缺陷的軟件程序代碼中的第一動態(tài)執(zhí)行信息、第一歷史修改信息以及第一靜態(tài)語義信息,包括:
10、采用測試用例集對所述待定位缺陷的軟件程序代碼進行測試,得到測試結(jié)果;
11、根據(jù)所述測試結(jié)果,計算所述待定位缺陷的軟件程序代碼中每行代碼的第一缺陷懷疑度;
12、將所述第一缺陷懷疑度作為所述待定位缺陷的軟件程序代碼中的第一動態(tài)執(zhí)行信息。
13、在一些實施方式中,所述提取所述待定位缺陷的軟件程序代碼中的第一動態(tài)執(zhí)行信息、第一歷史修改信息以及第一靜態(tài)語義信息,包括:
14、采用問題追蹤系統(tǒng)和版本控制系統(tǒng)提取所述待定位缺陷的軟件程序代碼中每行代碼的修改信息;
15、根據(jù)所述每行代碼的修改信息,計算所述每行代碼的第二缺陷懷疑度;
16、將所述第二缺陷懷疑度作為所述待定位缺陷的軟件程序代碼中的第一歷史修改信息。
17、在一些實施方式中,所述采用問題追蹤系統(tǒng)和版本控制系統(tǒng)提取所述待定位缺陷的軟件程序代碼中每行代碼的修改信息,包括:
18、采用所述問題追蹤系統(tǒng)獲取修復缺陷的提交記錄;
19、根據(jù)所述修復缺陷的提交記錄,采用所述版本控制系統(tǒng)確定所述待定位缺陷的軟件程序代碼對應的第一引入缺陷版本和所述第一引入缺陷版本的數(shù)量,所述第一引入缺陷版本用于表征所述待定位缺陷的軟件程序代碼對應的引入bug的版本;
20、采用所述版本控制系統(tǒng)提取所述待定位缺陷的軟件程序代碼中每行代碼在第一引入缺陷版本中被修改的次數(shù)和所述每行代碼的所有修改版本的數(shù)量,所述修改版本用于表征每行代碼被修改的版本;
21、將所述第一引入缺陷版本的數(shù)量、所述每行代碼在第一引入缺陷版本中被修改的次數(shù)和所述每行代碼的所有修改版本的數(shù)量作為每行代碼的修改信息。
22、在一些實施方式中,所述提取所述待定位缺陷的軟件程序代碼中的第一動態(tài)執(zhí)行信息、第一歷史修改信息以及第一靜態(tài)語義信息,包括:
23、對所述待定位缺陷的軟件程序代碼進行數(shù)據(jù)清洗和分詞,得到處理后的結(jié)果;
24、將所述處理后的結(jié)果輸入至bert模型中進行詞嵌入處理,生成每個代碼片段的詞向量;
25、將所述每個代碼片段的詞向量輸入至位置編碼器進行位置編碼,得到位置編碼結(jié)果;
26、將所述位置編碼結(jié)果通過包含多個堆疊編碼模塊的codebert編碼器進行特征提取,得到第一靜態(tài)語義信息。
27、在一些實施方式中,在將所述第一融合信息向量輸入訓練好的多頭注意力缺陷定位模型中之前,所述方法還包括:
28、獲取所有提交的軟件程序代碼中的第二引入缺陷版本和缺陷代碼行,所述第二引入缺陷版本用于表征所述所有提交的軟件程序代碼對應的引入bug的版本;
29、構(gòu)建包含transformer編碼器、全連接層以及歸一化指數(shù)函數(shù)的多頭注意力缺陷定位模型;
30、基于所述第二引入缺陷版本和所述缺陷代碼行,訓練所述多頭注意力缺陷定位模型,得到訓練好的多頭注意力缺陷定位模型。
31、在一些實施方式中,所述基于所述第二引入缺陷版本和所述缺陷代碼行,訓練所述多頭注意力缺陷定位模型,得到訓練好的多頭注意力缺陷定位模型,包括:
32、提取所述第二引入缺陷版本中的第二動態(tài)執(zhí)行信息、第二歷史修改信息以及第二靜態(tài)語義信息;
33、將所述第二動態(tài)執(zhí)行信息、所述第二歷史修改信息以及所述第二靜態(tài)語義信息進行融合,得到第二融合信息向量;
34、根據(jù)所述缺陷代碼行對所述第二引入缺陷版本中的代碼行進行標簽標記,得到標記后的代碼行;
35、采用所述標記后的代碼行和所述第二融合信息向量訓練所述多頭注意力缺陷定位模型,得到訓練好的多頭注意力缺陷定位模型。
36、第二方面,本技術實施例還提供了一種多維度多注意力的軟件缺陷定位系統(tǒng),所述系統(tǒng)包括:
37、數(shù)據(jù)獲取單元,用于獲取待定位缺陷的軟件程序代碼;
38、信息提取單元,用于提取所述待定位缺陷的軟件程序代碼中的第一動態(tài)執(zhí)行信息、第一歷史修改信息以及第一靜態(tài)語義信息,所述第一動態(tài)執(zhí)行信息用于表征所述待定位缺陷的軟件程序代碼在運行時的異常風險,所述第一歷史修改信息用于表征所述待定位缺陷的軟件程序代碼歷史上的缺陷風險,所述第一靜態(tài)語義信息具有所述待定位缺陷的軟件程序代碼中的上下文語義信息;
39、信息融合單元,用于將所述第一動態(tài)執(zhí)行信息、所述第一歷史修改信息以及所述第一靜態(tài)語義信息進行融合,得到第一融合信息向量;
40、缺陷定位單元,用于將所述第一融合信息向量輸入訓練好的多頭注意力缺陷定位模型中,得到缺陷定位結(jié)果。
41、第三方面,本技術實施例還提供了一種電子設備,包括至少一個控制處理器和用于與所述至少一個控制處理器通信連接的存儲器;所述存儲器存儲有可被所述至少一個控制處理器執(zhí)行的指令,所述指令被所述至少一個控制處理器執(zhí)行,以使所述至少一個控制處理器能夠執(zhí)行如上所述的一種多維度多注意力的軟件缺陷定位方法。
42、第四方面,本技術實施例還提供了一種計算機可讀存儲介質(zhì),所述計算機可讀存儲介質(zhì)存儲有計算機可執(zhí)行指令,所述計算機可執(zhí)行指令用于使計算機執(zhí)行如上所述的一種多維度多注意力的軟件缺陷定位方法。
43、可以理解的是,上述第二方面至第四方面與相關技術相比存在的有益效果與上述第一方面與相關技術相比存在的有益效果相同,可以參見上述第一方面中的相關描述,在此不再贅述。