[發明專利]一種基于程序切片的缺陷自動修復的修復位置確定方法在審
| 申請號: | 201911418815.0 | 申請日: | 2019-12-31 |
| 公開(公告)號: | CN111506493A | 公開(公告)日: | 2020-08-07 |
| 發明(設計)人: | 龐善臣;張莉;董玉坤;尹文靜;王淑玉 | 申請(專利權)人: | 中國石油大學(華東) |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36;G06F11/07 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 266580 山*** | 國省代碼: | 山東;37 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 程序 切片 缺陷 自動 修復 位置 確定 方法 | ||
1.一種基于程序切片的缺陷自動修復的修復位置確定方法,包括以下部分:
A、確定缺陷點的位置,即缺陷定位,將該缺陷點的位置初始化為缺陷的修復開始位置,并把該缺陷點作為程序切片的興趣點N。
B、重建缺陷程序的抽象語法樹,收集缺陷點的缺陷相關變量v1和被賦值變量v2,初始化為變量集V。廣度優先遍歷抽象語法樹,搜索使用v1和v2的程序語句,放入集合V中。
C、按照切片準則C=(N,V)進行程序方法級切片。
D、記錄切片程序結束點的位置,作為修復結束位置。
2.根據權利要求1所述的一種基于程序切片的缺陷自動修復的修復位置確定方法,其特征在于,所述的部分A中,所述的缺陷定位是借助靜態分析檢測工具DTSJava對Java工程進行缺陷檢測,獲得的缺陷報告中顯示具體的缺陷所在位置。靜態分析,是指在不執行程序的情況下對程序進行分析。實質上是模擬執行程序,收集程序的狀態信息和變量信息。
通過靜態分析進行缺陷定位,缺陷位置準確且消耗時間少。
3.根據權利要求1所述的一種基于程序切片的缺陷自動修復的修復位置確定方法,其特征在于,所述的部分B中,所述的更新抽象語法樹結點上的缺陷相關信息是指根據讀到的缺陷信息對缺陷文件對應的抽象語法樹節點上的信息,用于之后的補丁修復結束位置的確定。重建語法樹之后,讀取缺陷報告中的信息,將是否為缺陷、缺陷類型、缺陷相關變量三種信息在AST上標記更新結點(ASTNode)上的信息,結點初始化默認為非缺陷、缺陷類型和缺陷相關變量為空。廣度優先遍歷AST,根據缺陷報告中的缺陷信息對AST進行更新。
4.根據權利要求1所述的一種基于程序切片的缺陷自動修復的修復位置確定方法,其特征在于,所述的部分C中,所述的程序方法級切片是指針對報告出缺陷的程序中的方法進行切片。本發明進行的修復方法中,補丁語句是指條件語句,在缺陷點添加語句判斷,進行限制。不合法的輸入則不會執行缺陷點的語句,避免觸發程序語義缺陷。修復開始位置確定為缺陷點的位置,只需對其所在方法進行分析,即可得出該缺陷的更合理的修復結束位置。
5.根據權利要求1所述的基于程序切片的缺陷自動修復的修復位置確定方法,其特征在于,所述的部分D中,所述的修復結束位置是指添加的補丁語句即條件語句的結束位置。因為添加條件語句后,可能會改變程序方法中某些變量的作用域。嚴重的會導致接下來的程序語句中出現程序未定義使用缺陷,帶來潛在的安全隱患。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國石油大學(華東),未經中國石油大學(華東)許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201911418815.0/1.html,轉載請聲明來源鉆瓜專利網。





