[發明專利]一種結合詞法和語法信息的自動程序修復方法在審
| 申請號: | 202310546565.9 | 申請日: | 2023-05-15 |
| 公開(公告)號: | CN116560890A | 公開(公告)日: | 2023-08-08 |
| 發明(設計)人: | 郭俊霞;余文浩 | 申請(專利權)人: | 北京化工大學 |
| 主分類號: | G06F11/07 | 分類號: | G06F11/07;G06F8/41 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 100029 *** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 結合 詞法 語法 信息 自動 程序 修復 方法 | ||
發明公開了一種結合詞法和語法信息的自動程序修復方法,屬于自動程序修復領域。首先該發明根據缺陷程序的代碼文本和抽象語法樹作為源代碼信息表征,同時使用缺陷語句和缺陷上下文對缺陷程序做進一步劃分,并通過語義分析技術優化缺陷上下文表示方法;然后使用神經網絡技術訓練程序修復模型;最后采用訓練好的程序修復模型生成修復補丁,并驗證補丁的有效性。該方法緩解了現有方法中缺乏語法結構信息的問題,并且進一步優化了缺陷上下文表示方法,使程序修復模型能夠更加準確、高效地生成修復補丁。
技術領域
本發明涉及自動程序修復領域,是一種結合詞法和語法信息為開發人員推薦修復補丁的方法。
背景技術
軟件缺陷是軟件開發過程中不可避免的問題。隨著軟件系統變得越來越復雜,缺陷的檢測和修復變得更加困難。傳統的程序修復方法主要依賴于人工進行,軟件開發人員需要投入大量時間和精力來分析、定位和修復程序中的缺陷。為了降低程序修復的成本、提高修復效率,研究者們開始關注程序修復技術。該技術根據缺陷程序生成修復補丁,能夠有效幫助開發人員修復缺陷。修復中產生的程序補丁既可以自動添加到程序中,也可以用于指導開發者繼續改進代碼。
近年來,隨著深度學習技術的快速發展,研究者們開始探索將深度學習技術應用于程序修復領域。程序語言與自然語言有許多相似之處,例如兩者都由詞素(token)組成,都可以解析為語法樹的形式,并且都具有較高的自然性(重復性)等。因此,一些適合于自然語言處理任務的模型被用來解決程序修復問題,如神經機器翻譯(Neural?MachineTranslation,NMT)模型。這類修復方法將程序修復問題視為一種“翻譯”任務,即將有缺陷的代碼“翻譯”成修復后的代碼。NMT模型通常采用編碼器-解碼器(Encoder-Decoder)架構,其中編碼器將源代碼映射到一個潛在空間表示,解碼器則將該表示轉換為修復后的代碼。雖然程序語言與自然語言具有一定的相似性,但相較于自然語言,程序語言具有其獨特的性質,例如結構性、可執行性等。因此,如何設計源代碼表征方式,使其能夠準確提取代碼特征是提升修復能力的關鍵因素之一。此外,在該類方法中,需要考慮如何設計缺陷上下文表示方式。較大的缺陷上下文空間將對程序修復模型產生冗余信息,較小的缺陷上下文空間可能損失語法信息。本文針對上述問題,提出一種結合詞法和語法信息的自動程序修復方法,使用代碼文本和抽象語法樹結合作為源代碼表征信息。同時,為了緩解缺陷上下文中的冗余信息,借助缺陷語句與缺陷上下文之間的依賴關系進行冗余信息排除。
發明內容
針對上述問題,本發明設計了一種結合詞法和語法信息的自動程序修復方法。該方法首先將缺陷程序通過javalang工具解析為抽象語法樹形式,并且使用代碼文本和抽象語法樹結合作為源代碼信息表征。接著為了使模型學習到缺陷語句和缺陷上下文之間的差異,本發明使用特殊標記符對缺陷語句和上下文進行了區分,為了使模型更加關注與缺陷語句存在程序依賴關系的語句,采用程序切片技術保留與缺陷語句存在程序依賴關系的語句作為缺陷上下文信息。然后使用Transformer網絡訓練程序修復模型,該模型輸入為缺陷程序的源代碼信息表征,輸出為缺陷修復補丁。最后將輸出的缺陷修復補丁還原至缺陷語句處,通過執行測試用例驗證修復程序的有效性。該發明的優點在于:
(1)現有技術僅使用缺陷程序的代碼文本作為源代碼信息表征,本發明在源代碼信息表征過程中使用代碼文本和抽象語法樹信息,使得模型能夠更加準確地理解缺陷程序,進而使程序修復模型生成更加準確的修復補丁。
(2)現有技術常采用缺陷程序所在方法或者類作為缺陷上下文表示,本發明使用程序切片技術保留缺陷程序所在方法中與缺陷語句存在程序依賴關系的語句作為缺陷上下文信息,這種表示方法能夠使模型更加關注與缺陷語句存在依賴關系的語句,提升了程序修復模型的計算效率。
附圖說明
圖1為一種結合詞法和語法信息的自動程序修復方法架構圖。
具體實施方式
本發明提出一種結合詞法和語法信息的自動程序修復方法,具體實施流程可分為以下三個階段:
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京化工大學,未經北京化工大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202310546565.9/2.html,轉載請聲明來源鉆瓜專利網。
- 信息記錄介質、信息記錄方法、信息記錄設備、信息再現方法和信息再現設備
- 信息記錄裝置、信息記錄方法、信息記錄介質、信息復制裝置和信息復制方法
- 信息記錄裝置、信息再現裝置、信息記錄方法、信息再現方法、信息記錄程序、信息再現程序、以及信息記錄介質
- 信息記錄裝置、信息再現裝置、信息記錄方法、信息再現方法、信息記錄程序、信息再現程序、以及信息記錄介質
- 信息記錄設備、信息重放設備、信息記錄方法、信息重放方法、以及信息記錄介質
- 信息存儲介質、信息記錄方法、信息重放方法、信息記錄設備、以及信息重放設備
- 信息存儲介質、信息記錄方法、信息回放方法、信息記錄設備和信息回放設備
- 信息記錄介質、信息記錄方法、信息記錄裝置、信息再現方法和信息再現裝置
- 信息終端,信息終端的信息呈現方法和信息呈現程序
- 信息創建、信息發送方法及信息創建、信息發送裝置





