[發明專利]一種針對程序中循環問題的自動修復方法有效
| 申請號: | 201810047683.4 | 申請日: | 2018-01-12 |
| 公開(公告)號: | CN108228232B | 公開(公告)日: | 2021-04-30 |
| 發明(設計)人: | 孫小兵;鄭軒昂 | 申請(專利權)人: | 揚州大學 |
| 主分類號: | G06F8/75 | 分類號: | G06F8/75;G06F8/72;G06F11/36 |
| 代理公司: | 南京中新達專利代理有限公司 32226 | 代理人: | 孫鷗;朱杰 |
| 地址: | 225009 *** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 針對 程序 循環 問題 自動 修復 方法 | ||
本發明涉及一種針對程序中循環問題的自動修復方法。本發明將循環分為計次循環和目的循環,對于計次循環通過分析開發者的習慣,逐個嘗試特定謂詞,尋找特殊常量或變量來糾正循環的次數,對于目的循環則是通過提取程序中循環語句共有的部分作為模板,并按照模板修改要修復的循環語句。本發明克服了過去沒有專門針對程序中循環問題進行修復的并實用的自動修復技術或手段。本發明在只需要提供測試用例和錯誤程序的情況下就可以輸出相應的補丁,大大節省了開發者的工作量和工作時間,填補了這一本技術領域內的空白,可以提供更精準的修復需求,將循環語句分為計次循環和目的循環兩大類,針對不同類型可以有不同的對應方法,不會出現與循環語句完全不相關的補丁,可以提高對循環語句錯誤修復的精確度。
技術領域
本發明提出一種用于修復程序中循環語句導致的bug問題,特別涉及一種針對程序中循環問題的自動修復方法,屬于軟件缺陷修復領域。
背景技術
隨著軟件規模的日益增長,程序bug是軟件開發中不可避免的產物,其產生原因可以追溯到軟件開發的各個階段。為了盡快地修復軟件bug,程序員必須花費大量的時間和精力查找導致軟件失效的原因,并發布補丁。歷史數據表明,超過45%的軟件開發成本用于定位和修復bug的過程中。無論工業生產還是學術研究領域,定位和修復程序bug都是軟件工程的核心問題。
為了降低修復過程中的時間和人力成本,自動程序修復方法應運而生。該方法依據給定的程序問題,自動生成程序補丁,進而修復程序中的錯誤,修復中產生的程序補丁既可以自動添加到程序中,也可以用于指導開發者繼續改進代碼。
目前所有的相關補丁生成方法都是從程序整體著手,以一種通用的方式對程序當中的bug進行修復的。
從整體程序入手就難免存在修復不細致的問題,于是一種專門針對條件語句的修復方式被提了出來,且結果表明,對于因條件語句的缺少或錯誤而導致的bug,這種針對條件語句的修復方式的精確度比之前其他方法要好的多。
一個程序一般是由三種關鍵語句構成的,即順序語句,條件語句和循環語句,循環語句在程序中占的比例還是相當大的,開發者經常會因為疏忽、遺忘等原因,導致循環語句出現不必要的錯誤。
在本發明之前,目前尚沒有出現專門針對程序中循環問題進行修復的自動修復技術,而如果用針對程序整體的通用修復方式,勢必會因為兼顧修復其他語句而無法進行針對循環語句更加細致的考慮,也就是說對于循環語句導致的bug還需要更高的修復精確度,因此需要一種針對程序中循環問題的自動修復技術。
發明內容
本發明的目的就在于克服上述缺陷,提供一種針對程序中循環問題的自動修復方法。
本發明的技術方案是:
一種針對程序中循環問題的自動修復方法,其主要技術特征在于如下步驟:(1)將循環語句分為兩類,一類為計次循環,即程序員知道該語句要循環的次數,一類為目的循環,即該循環語句是為了達到某種結果,程序員并不知道要循環的準確次數;
(2)對于計次循環,分析上下文識別程序員的計次習慣:根據末尾循環體是‘++’或者‘--’判定循環格式,若是‘++’,則識別單次表達式通常是賦值為0還是1,若是‘--,則識別條件表達式謂詞中的值通常是0還是1,然后根據習慣將對應的0改為1或1改為0;
(3)若步驟二沒有修復成功,則將條件表達式中的謂詞替換為以下五種謂詞之一,這里的謂詞包括‘>’、‘>=、‘<’、‘<=、‘!=,且若末尾循環體是‘++’,則不考慮‘>’、‘>=,若末尾循環體是‘--’,則不考慮‘<’、‘<=,通過逐個替換測試的方法,依次將原來的謂詞修改為上述五種謂詞之一,直到獲得正確的測試結果,來確定謂詞到底要替換為哪一個;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于揚州大學,未經揚州大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201810047683.4/2.html,轉載請聲明來源鉆瓜專利網。





