本發(fā)明涉及軟件工程的缺陷預(yù)測,尤其涉及一種軟件缺陷預(yù)測方法、系統(tǒng)、設(shè)備及介質(zhì)。
背景技術(shù):
1、軟件缺陷預(yù)測技術(shù)(software?defect?prediction,sdp)致力于協(xié)助測試團隊揭示尚未被識別的軟件問題,目的是在軟件開發(fā)過程的初期階段識別出那些最可能含有缺陷的軟件組件,進而集中并優(yōu)先對這些組件開展測試,從而協(xié)助開發(fā)與測試團隊更有效地修復(fù)這些缺陷。軟件缺陷預(yù)測的流程通常包括數(shù)據(jù)收集、數(shù)據(jù)預(yù)處理、特征選擇、模型建立、模型評估以及模型應(yīng)用等步驟。
2、目前現(xiàn)有的軟件缺陷預(yù)測方法通常是基于單視圖的方法進行特征選擇,但是基于單一視圖的方法獲取的特征數(shù)據(jù)所構(gòu)建的預(yù)測模型無法充分利用各視圖之間的互補信息,導(dǎo)致缺陷預(yù)測無法更加全面和準確;同時,現(xiàn)有的軟件缺陷預(yù)測方法在預(yù)測模型的構(gòu)建中忽視了類依賴網(wǎng)絡(luò)中每個節(jié)點上的更多屬性信息,未能充分利用這些屬性會導(dǎo)致預(yù)測模型對代碼特征的表示不夠充分,從而影響缺陷預(yù)測的準確性。
技術(shù)實現(xiàn)思路
1、本發(fā)明所要解決的技術(shù)問題是,提供一種軟件缺陷預(yù)測方法、系統(tǒng)、設(shè)備及介質(zhì),可以提高軟件缺陷預(yù)測的準確性。
2、為解決以上技術(shù)問題,本發(fā)明實施例提供一種軟件缺陷預(yù)測方法,包括:
3、將軟件源代碼轉(zhuǎn)換為抽象語法樹,基于主節(jié)點優(yōu)先的遍歷算法和卷積神經(jīng)網(wǎng)絡(luò)對所述抽象語法樹進行處理,以生成語法樹特征;
4、根據(jù)所述源代碼中的依賴關(guān)系構(gòu)建類依賴網(wǎng)絡(luò),利用圖嵌入算法對所述類依賴網(wǎng)絡(luò)進行嵌入,以得到網(wǎng)絡(luò)嵌入向量;
5、將所述源代碼的代碼度量與所述網(wǎng)絡(luò)嵌入向量進行拼接,以生成增強特征;
6、將所述語法樹特征與所述增強特征進行組合,以得到圖節(jié)點屬性特征;
7、基于所述圖節(jié)點屬性特征進行缺陷預(yù)測。
8、作為上述方案的改進,所述基于主節(jié)點優(yōu)先的遍歷算法和卷積神經(jīng)網(wǎng)絡(luò)對所述抽象語法樹進行處理,生成語法樹特征,包括:
9、基于主節(jié)點優(yōu)先的遍歷算法對所述抽象語法樹進行抽取,得到目標節(jié)點序列;
10、將所述目標節(jié)點序列轉(zhuǎn)換為詞嵌入向量;
11、使用卷積神經(jīng)網(wǎng)絡(luò)對所述詞嵌入向量進行處理,生成語法樹特征。
12、作為上述方案的改進,所述基于主節(jié)點優(yōu)先的遍歷算法對所述抽象語法樹進行抽取,得到目標節(jié)點序列,包括:
13、從所述抽象語法樹的根節(jié)點開始,逐一判斷節(jié)點是否為目標節(jié)點;
14、若是,則添加到目標節(jié)點序列;
15、若否,則根據(jù)每一節(jié)點的子節(jié)點的子樹大小對每一子節(jié)點進行遍歷,以返回符合要求的目標節(jié)點序列。
16、作為上述方案的改進,所述使用卷積神經(jīng)網(wǎng)絡(luò)對所述詞嵌入向量進行處理,生成語法樹特征,包括:
17、使用卷積神經(jīng)網(wǎng)絡(luò)的卷積層對所述詞嵌入向量進行卷積操作,以提取卷積特征;
18、通過所述卷積神經(jīng)網(wǎng)絡(luò)的池化層對所述卷積特征進行池化;
19、將池化后的特征通過所述卷積神經(jīng)網(wǎng)絡(luò)的全連接層進行變換,以生成語法樹特征。
20、作為上述方案的改進,將所述語法樹特征與所述增強特征進行組合的方式包括按特征的元素相加、相乘或或者拼接的方式中的至少一種。
21、作為上述方案的改進,在所述生成增強特征之后,還包括:
22、采用主成分分析降維方法對所述增強特征進行降維,得到低維特征。
23、作為上述方案的改進,所述基于所述圖節(jié)點屬性特征進行缺陷預(yù)測,包括:
24、將所述圖節(jié)點屬性特征作為深度學(xué)習模型的輸入,以輸出缺陷預(yù)測結(jié)果;
25、根據(jù)所述預(yù)測結(jié)果計算損失函數(shù),以所述損失函數(shù)最小為目標對所述深度學(xué)習模型進行優(yōu)化訓(xùn)練,得到訓(xùn)練好的軟件缺陷預(yù)測模型;
26、通過訓(xùn)練好的軟件缺陷預(yù)測模型進行軟件缺陷預(yù)測。
27、為解決以上技術(shù)問題,本發(fā)明實施例還提供了一種軟件缺陷預(yù)測系統(tǒng),包括:
28、第一特征生成模塊,用于將軟件源代碼轉(zhuǎn)換為抽象語法樹,基于主節(jié)點優(yōu)先的遍歷算法和卷積神經(jīng)網(wǎng)絡(luò)對所述抽象語法樹進行處理,以生成語法樹特征;
29、網(wǎng)絡(luò)嵌入向量生成模塊,用于根據(jù)所述源代碼中的依賴關(guān)系構(gòu)建類依賴網(wǎng)絡(luò),利用圖嵌入算法對所述類依賴網(wǎng)絡(luò)進行嵌入,以得到網(wǎng)絡(luò)嵌入向量;
30、第二特征生成模塊,用于將所述源代碼的代碼度量與所述網(wǎng)絡(luò)嵌入向量進行拼接,以生成增強特征;
31、第三特征生成模塊,用于將所述語法樹特征與所述增強特征進行組合,以得到圖節(jié)點屬性特征;
32、缺陷預(yù)測模塊,用于基于所述圖節(jié)點屬性特征進行缺陷預(yù)測。
33、為解決以上技術(shù)問題,本發(fā)明實施例還提供了一種終端設(shè)備,包括:處理器、存儲器以及存儲在所述存儲器中且被配置為由所述處理器執(zhí)行的計算機程序,所述處理器執(zhí)行所述計算機程序時實現(xiàn)如上任意一項所述的軟件缺陷預(yù)測方法。
34、為解決以上技術(shù)問題,本發(fā)明實施例還提供了一種計算機可讀存儲介質(zhì),所述計算機可讀存儲介質(zhì)存儲有計算機程序,其中,在所述計算機程序運行時控制所述計算機可讀存儲介質(zhì)所在設(shè)備執(zhí)行如上任意一項所述的軟件缺陷預(yù)測方法。
35、本發(fā)明實施例提供的一種軟件缺陷預(yù)測方法、系統(tǒng)、設(shè)備及介質(zhì),該方法通過將軟件源代碼轉(zhuǎn)換為抽象語法樹,基于主節(jié)點優(yōu)先的遍歷算法和卷積神經(jīng)網(wǎng)絡(luò)對所述抽象語法樹進行處理,生成語法樹特征;并根據(jù)所述源代碼中的依賴關(guān)系構(gòu)建類依賴網(wǎng)絡(luò),利用圖嵌入算法對所述類依賴網(wǎng)絡(luò)進行嵌入,以得到網(wǎng)絡(luò)嵌入向量;然后將所述源代碼的代碼度量與所述網(wǎng)絡(luò)嵌入向量進行拼接,以生成增強特征;再將所述語法樹特征與所述增強特征進行組合,以得到圖節(jié)點屬性特征;最后基于所述圖節(jié)點屬性特征進行缺陷預(yù)測。本發(fā)明首先通過基于主節(jié)點優(yōu)先的遍歷算法和卷積神經(jīng)網(wǎng)絡(luò)來捕捉語法樹特征,能夠從源代碼中提取出深層次的且與缺陷相關(guān)的特征;其次通過在類依賴網(wǎng)絡(luò)中嵌入了傳統(tǒng)代碼度量中提取的特征,豐富了每個節(jié)點的屬性信息,進一步提升了特征的質(zhì)量;最后通過融合抽象語法樹、傳統(tǒng)代碼度量和類依賴網(wǎng)絡(luò)三種視圖信息特征,構(gòu)建一個高質(zhì)量的圖節(jié)點屬性特征,并基于此特征表示訓(xùn)練和優(yōu)化軟件缺陷預(yù)測模型,可以捕獲更全面的代碼語義和結(jié)構(gòu)信息,學(xué)習到更加全面的特征表示,從而提升缺陷預(yù)測的準確性和缺陷識別能力。
1.一種軟件缺陷預(yù)測方法,其特征在于,包括:
2.如權(quán)利要求1所述的軟件缺陷預(yù)測方法,其特征在于,所述基于主節(jié)點優(yōu)先的遍歷算法和卷積神經(jīng)網(wǎng)絡(luò)對所述抽象語法樹進行處理,生成語法樹特征,包括:
3.如權(quán)利要求2所述的軟件缺陷預(yù)測方法,其特征在于,所述基于主節(jié)點優(yōu)先的遍歷算法對所述抽象語法樹進行抽取,得到目標節(jié)點序列,包括:
4.如權(quán)利要求2所述的軟件缺陷預(yù)測方法,其特征在于,所述使用卷積神經(jīng)網(wǎng)絡(luò)對所述詞嵌入向量進行處理,生成語法樹特征,包括:
5.如權(quán)利要求1所述的方法,其特征在于,將所述語法樹特征與所述增強特征進行組合的方式包括按特征的元素相加、相乘或者拼接的方式中的至少一種。
6.如權(quán)利要求1所述的軟件缺陷預(yù)測方法,其特征在于,在所述生成增強特征之后,還包括:
7.如權(quán)利要求1所述的方法,其特征在于,所述基于所述圖節(jié)點屬性特征進行缺陷預(yù)測,包括:
8.一種軟件缺陷預(yù)測系統(tǒng),其特征在于,包括:
9.一種終端設(shè)備,其特征在于,包括:處理器、存儲器以及存儲在所述存儲器中且被配置為由所述處理器執(zhí)行的計算機程序,所述處理器執(zhí)行所述計算機程序時實現(xiàn)如權(quán)利要求1至7中任意一項所述的軟件缺陷預(yù)測方法。
10.一種計算機可讀存儲介質(zhì),其特征在于,所述計算機可讀存儲介質(zhì)存儲有計算機程序,其中,在所述計算機程序運行時控制所述計算機可讀存儲介質(zhì)所在設(shè)備執(zhí)行如權(quán)利要求1至7中任意一項所述的軟件缺陷預(yù)測方法。