[發(fā)明專利]一種結(jié)合修復(fù)模板與深度學(xué)習(xí)的代碼缺陷自動(dòng)修復(fù)方法在審
| 申請(qǐng)?zhí)枺?/td> | 202310177017.3 | 申請(qǐng)日: | 2023-02-28 |
| 公開(公告)號(hào): | CN116069337A | 公開(公告)日: | 2023-05-05 |
| 發(fā)明(設(shè)計(jì))人: | 王旭;胡春明;孟祥鑫;劉旭東 | 申請(qǐng)(專利權(quán))人: | 北京航空航天大學(xué) |
| 主分類號(hào): | G06F8/41 | 分類號(hào): | G06F8/41;G06F8/70;G06N5/022;G06N5/04 |
| 代理公司: | 北京中創(chuàng)陽光知識(shí)產(chǎn)權(quán)代理有限責(zé)任公司 11003 | 代理人: | 尹振啟 |
| 地址: | 100191*** | 國省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 結(jié)合 修復(fù) 模板 深度 學(xué)習(xí) 代碼 缺陷 自動(dòng) 方法 | ||
1.一種結(jié)合修復(fù)模板與深度學(xué)習(xí)的代碼缺陷自動(dòng)修復(fù)方法,其特征在于:以出錯(cuò)語句及其上下文函數(shù)作為模型輸入,以對(duì)應(yīng)的解析之后的補(bǔ)丁中間表示作為模型輸出,整體分為三個(gè)部分,第一部分為格式化模板表示方法,分別為基于模板的修復(fù)方法中的人工修復(fù)模板與基于NMT的修復(fù)方法中的通用單行修復(fù)模板構(gòu)建大規(guī)模數(shù)據(jù)集DatasetFT與DatasetSL,用于后續(xù)的模型訓(xùn)練;
第二部分為基于編碼器-解碼器框架的神經(jīng)網(wǎng)絡(luò)模型,分別從兩個(gè)大規(guī)模修復(fù)數(shù)據(jù)集中學(xué)習(xí)不同修復(fù)模板修復(fù)過程中所蘊(yùn)含的深層語義,并嘗試生成正確的補(bǔ)丁中間表示;兩部分生成結(jié)果按照訓(xùn)練數(shù)據(jù)集的樣本數(shù)目真實(shí)比例進(jìn)行組合,以擴(kuò)大模型的修復(fù)范圍;同時(shí),提出一種聯(lián)合推理策略,在保留復(fù)制機(jī)制從輸入文本中取詞輸出功能的同時(shí),留存部分可能超出復(fù)制機(jī)制取詞范圍的單詞到后處理階段;
第三部分是后處理階段,包含補(bǔ)丁還原工具、未登錄詞替換工具和補(bǔ)丁檢查工具的設(shè)計(jì)與實(shí)現(xiàn),它們分別完成補(bǔ)丁中間表示到真實(shí)補(bǔ)丁的轉(zhuǎn)換、語法規(guī)則約束下的未登錄詞替換以及常見編譯錯(cuò)誤的預(yù)篩除任務(wù),以生成最終的補(bǔ)丁列表。
2.如權(quán)利要求1所述的一種結(jié)合修復(fù)模板與深度學(xué)習(xí)的代碼缺陷自動(dòng)修復(fù)方法,其特征在于:所述大規(guī)模數(shù)據(jù)集的構(gòu)建方法為:選擇35個(gè)人工修復(fù)模板,并設(shè)計(jì)基于AST的代碼差異化算法,來判定原始代碼修復(fù)語料庫中的每個(gè)函數(shù)對(duì)所對(duì)應(yīng)的真實(shí)代碼變更行為是否滿足其中的某個(gè)修復(fù)模板的預(yù)定義代碼變更模式,并基于此為函數(shù)對(duì)打上不同的模板標(biāo)簽,函數(shù)對(duì)被標(biāo)記到這35個(gè)類別中,當(dāng)沒有任何模板類型能夠匹配時(shí),該函數(shù)對(duì)被丟棄;
在這35個(gè)人工修復(fù)模板中,部分模板的修復(fù)行為被限定在單行代碼內(nèi),另一部分模板的修復(fù)行為可能會(huì)跨越多行代碼;為了有效表示跨行修復(fù)并盡可能簡化單行修復(fù)的表示形式,針對(duì)每個(gè)修復(fù)模板,設(shè)計(jì)對(duì)應(yīng)的格式化模板表示,將真實(shí)的代碼補(bǔ)丁轉(zhuǎn)換成“模板名稱+骨干元素”的形式,模板名稱用來指定修復(fù)模板的類型,用以確定代碼變更的動(dòng)作,而骨干元素是完成該變更動(dòng)作所依賴的核心代碼元素;
在人工修復(fù)模板的基礎(chǔ)上,增加一個(gè)通用的單行修復(fù)模板,目標(biāo)是對(duì)人工修復(fù)模板未能涉及到的單行范圍內(nèi)的缺陷提供修復(fù)指導(dǎo),所述修復(fù)模板總數(shù)為36個(gè)。
3.如權(quán)利要求2所述的一種結(jié)合修復(fù)模板與深度學(xué)習(xí)的代碼缺陷自動(dòng)修復(fù)方法,其特征在于:所述基于編碼器-解碼器框架的神經(jīng)網(wǎng)絡(luò)模型的設(shè)計(jì)方式為:
所述編碼器使用一個(gè)雙向的LSTM來實(shí)現(xiàn),它會(huì)不斷學(xué)習(xí)訓(xùn)練數(shù)據(jù)中所蘊(yùn)含的深層修復(fù)語義,并將這些語義編碼到一個(gè)上下文向量中;解碼器使用一個(gè)單向的LSTM來實(shí)現(xiàn),它以編碼階段生成的上下文向量和解碼階段的上一步輸出單詞作為輸入,迭代更新模型參數(shù),并輸出當(dāng)前時(shí)間步的預(yù)測(cè)單詞,當(dāng)解碼器生成了表示停止的結(jié)束字符或當(dāng)前輸出的序列已經(jīng)超過最大長度限制時(shí),解碼過程結(jié)束。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于北京航空航天大學(xué),未經(jīng)北京航空航天大學(xué)許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202310177017.3/1.html,轉(zhuǎn)載請(qǐng)聲明來源鉆瓜專利網(wǎng)。





