[發明專利]一種結合修復模板與深度學習的代碼缺陷自動修復方法在審
| 申請號: | 202310177017.3 | 申請日: | 2023-02-28 |
| 公開(公告)號: | CN116069337A | 公開(公告)日: | 2023-05-05 |
| 發明(設計)人: | 王旭;胡春明;孟祥鑫;劉旭東 | 申請(專利權)人: | 北京航空航天大學 |
| 主分類號: | G06F8/41 | 分類號: | G06F8/41;G06F8/70;G06N5/022;G06N5/04 |
| 代理公司: | 北京中創陽光知識產權代理有限責任公司 11003 | 代理人: | 尹振啟 |
| 地址: | 100191*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 結合 修復 模板 深度 學習 代碼 缺陷 自動 方法 | ||
本發明通過人工智能領域的方法,實現了一種結合修復模板與深度學習的代碼缺陷自動修復方法。分為三個部分,第一部分為格式化模板表示方法,用于后續的模型訓練;第二部分為基于編碼器?解碼器框架的神經網絡模型,并提出一種聯合推理策略,在保留復制機制從輸入文本中取詞輸出功能的同時,留存部分可能超出復制機制取詞范圍的單詞到后處理階段;第三部分是后處理階段,包含補丁還原工具、未登錄詞替換工具和補丁檢查工具的設計與實現。本發明提出的方法解決了基于模板的修復方法修復類型受限與無法利用歷史修復數據中蘊含的修復知識的問題,以及基于神經機器翻譯的修復方法沒有結合人工修復模板的專家經驗與難以生成特定于項目的低頻詞的問題。
技術領域
本發明涉及人工智能技術領域,尤其涉及一種結合修復模板與深度學習的代碼缺陷自動修復方法。
背景技術
代碼缺陷自動修復技術(AutomatedProgramRepair,APR)是自動化軟件調試(AutomatedSoftwareDebugging)的重要研究方向之一,旨在降低軟件開發過程中為修復代碼缺陷所花費的人力與時間成本。該技術能夠根據缺陷代碼片段中的語法約束和語義特征,自動生成候選補丁,并通過程序靜態檢查與測試用例動態檢查等方式完成對候選補丁的正確性驗證。
在已有的缺陷自動修復技術中,基于模板的修復方法(Template-based?ProgramRepair)與基于深度學習的修復方法(Deep?Learning-based?Program?Repair)是兩條近些年備受關注的研究路線。對于前者,研究者通過人工總結、代碼倉庫挖掘等方法定義了若干種用于解決不同類型的代碼缺陷的修復模板,例如空指針檢查、條件表達式修改、變量名替換等模板。在修復時,基于模板的修復方法會按照既定順序(往往由語句級別的缺陷定位方法給出)逐語句、逐模板地嘗試生成修復補丁,并在之后對它們的正確性進行評估。而對于后者,近些年的修復方法大多集中于神經機器翻譯(Neural?Machine?Translation,NMT)框架,它們將缺陷代碼的修復任務看作是一個序列到序列的轉換任務,即通過監督學習的方式,訓練一個編碼器-解碼器(Encoder-Decoder)模型,使其具備將含有缺陷的代碼片段轉換為正確代碼片段的能力。這個過程包含編碼和解碼兩個環節:編碼時,既可以將輸入的源代碼按照原始文本順序處理成單詞序列,也可以將代碼片段解析成抽象語法樹(AbstractSyntax?Tree,AST)等形式以保留其特殊的語法結構信息;解碼時,以編碼過程得到的上下文向量(context?vector)作為輸入,逐步計算下一個時間步的單詞生成概率并輸出最大概率值所對應的單詞,直到結束字符被輸出或輸出序列長度已經超出預定義的最大長度為止。同時,在模型推理階段,可以借助束搜索(Beam?Search)技術保留生成概率最大的N個文本序列(即候選補丁),進一步提升正確補丁命中的可能性。
現有技術基于模板的修復方法主要面臨兩個問題:首先,該方法能夠修復的缺陷類型是有限的,即,只能解決修復模板覆蓋到的缺陷類型。增加修復模板的數量有機會提升修復的上限,但是又會導致搜索空間(searchspace)增大,從而使得修復效率下降。這樣,那些本來有機會在規定時間內被修復的缺陷可能會因超時原因而修復失敗。其次,這種方法沒有從歷史數據中學習的能力。修復模板在使用時,僅需查看當前待修復語句及其上下文是否滿足模板中規定的語法約束(例如使用“條件表達式修改”模板時,需要保證待修復語句中至少含有一個條件表達式),一旦該約束滿足,模板就會按照預定義的代碼變更動作生成補丁骨架,并從項目中搜索出適配的代碼元素完成骨架的填充,以生成真實補丁。不難看出,這個修復過程沒有用到歷史修復數據中所蘊含的修復經驗,而這些經驗本可用于優化模板選擇順序、補丁填充元素選擇順序等關鍵修復步驟,因此錯失了進一步提升修復性能的機會。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京航空航天大學,未經北京航空航天大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202310177017.3/2.html,轉載請聲明來源鉆瓜專利網。





