[發明專利]一種基于對抗判別的跨軟件缺陷預測方法有效
| 申請號: | 202010056839.2 | 申請日: | 2020-01-16 |
| 公開(公告)號: | CN111290947B | 公開(公告)日: | 2022-06-14 |
| 發明(設計)人: | 陸璐;盛雷 | 申請(專利權)人: | 華南理工大學 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 廣州市華學知識產權代理有限公司 44245 | 代理人: | 陳宏升 |
| 地址: | 510640 廣*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 對抗 別的 軟件 缺陷 預測 方法 | ||
本發明公開了一種基于對抗判別的跨軟件缺陷預測方法,包括以下步驟:選定源項目與目標項目;將源項目和目標項目中的源代碼轉換成抽象語法樹,提取出節點向量集合;對節點進行編碼,將節點向量集合轉換成整數向量集合;對源項目中整數向量集合進行處理,用于同時訓練出源項目特征提取器和目標項目特征提取器,并提取出源項目和目標項目中的能夠遷移的代碼語義特征;將源項目能夠遷移的代碼語義特征輸入到邏輯回歸分類器中,訓練出跨軟件缺陷預測模型,將缺陷預測模型應用到目標項目上,進行缺陷預測分類。本發明將對抗判別方法作為強大的領域自適應技術之一,通過最小化源項目映射分布和目標項目映射分布之間的距離,可以解決特征分布差異的問題。
技術領域
本發明涉及軟件工程領域,特別涉及一種基于對抗判別的跨軟件缺陷預測方法。
背景技術
軟件開發生命周期里,如果內部潛在缺陷發現的越晚,后期為了修復這些缺陷的開銷就越大。但是,若對每個軟件模塊都進行完備全面地測試,勢必會注入過多地人力資源。所以項目經理希望預先識別軟件模塊中可能出現的缺陷,并重點測試該模塊。因此,軟件缺陷預測技術越來越受到廣大軟件工程研究人員和測試人員的關注,并且有一些基于機器學習和深度學習的軟件缺陷方法被提出來,來檢測軟件中可能存在的有缺陷的文件。
基于機器學習的軟件缺陷預測方法,利用專家從源項目中手工提取的特征,包括基于操作數和操作符的Halstead特征,基于代碼依賴的McCabe特征,面向對象編程的CK特征等。基于以上手工提取的特征,一些機器學習算法如邏輯回歸、隨即森林、貝葉斯網絡等訓練出軟件缺陷模型,在一定程度上,這類模型能預測出軟件項目中的有缺陷的文件。但是,手工提取的特征沒有考慮源代碼中隱含的語義結構特征,這就導致基于機器學習的軟件缺陷方法預測性能不太理想。因此,基于深度學習的軟件缺陷預測方法被提出來,進一步提高了預測性能。然而,這類方法也存在一些問題,沒有考慮源項目和目標項目之間的特征分布差異,這也會影響缺陷預測性能。
發明內容
本發明的主要目的在于克服現有技術的缺點與不足,提供一種基于對抗判別的跨軟件缺陷預測方法。
本發明的目的通過以下的技術方案實現:
一種基于對抗判別的跨軟件缺陷預測方法,包括以下步驟:
1)從開源項目中選擇一成熟項目(有豐富的標簽信息)作為源項目,需要進行缺陷預測的項目作為目標項目;
2)將步驟1)中選擇的源項目和目標項目中的源代碼轉換成抽象語法樹(AST),提取出節點向量集合;
3)對節點進行編碼,將步驟2)中得到的節點向量集合轉換成后續所需要的整數向量集合;
4)采用隨機過采樣的方式對步驟3)中得到的源項目中整數向量集合進行處理,解決源項目中的分類不平衡的問題;
5)采用對抗判別學習用步驟4)平衡后的整數向量集合同時訓練出源項目特征提取器和目標項目特征提取器;
6)用步驟5)訓練得到的源項目特征提取器和目標項目特征提取器,提取出源項目和目標項目中的能夠遷移的代碼語義特征;
7)將步驟6)中的源項目能夠遷移的代碼語義特征輸入到邏輯回歸分類器中,訓練出跨軟件缺陷預測模型,將缺陷預測模型應用到目標項目上,進行缺陷預測分類。
步驟7)中,所述跨軟件缺陷預測模型,具體訓練步驟如下:
701、設計卷積神經網絡模型:采用的卷積神經網絡模型包括一個輸入層,一個詞嵌入層,一個卷積層,一個最大池化層,兩個完全連接的隱含層,其中最后一個隱含層的輸出作為模型從整數向量集合中學習出來的特征;
702、利用步驟701中設計的卷積神經網絡模型,用分類平衡后的源項目整數向量和文件的標簽信息訓練源項目特征提取器;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于華南理工大學,未經華南理工大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010056839.2/2.html,轉載請聲明來源鉆瓜專利網。





