[發明專利]一種程序隱性約束提取方法及系統有效
| 申請號: | 201810215371.X | 申請日: | 2018-03-15 |
| 公開(公告)號: | CN108563561B | 公開(公告)日: | 2020-06-23 |
| 發明(設計)人: | 宮云戰;張明哲;王雅文;金大海 | 申請(專利權)人: | 北京郵電大學 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 北京路浩知識產權代理有限公司 11002 | 代理人: | 王瑩;吳歡燕 |
| 地址: | 100876 北京市*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 程序 隱性 約束 提取 方法 系統 | ||
1.一種程序隱性約束提取方法,其特征在于,包括:
S1,對于待測程序中的任一函數,獲取所述任一函數的控制流圖的入口節點到出口節點的任一路徑,將所述任一路徑上的入口節點作為當前節點;
S2,獲取所述當前節點與所述任一函數對應的抽象語法樹上對應的當前語法節點;
根據所述當前語法節點的類型,判斷是否進行進一步遍歷,若所述當前語法節點對應賦值語句或分支語句,則對當前語法節點進行遍歷訪問;
根據所述當前語法節點的類型,遍歷訪問當前語法節點并判斷所述當前語法節點是否包含目標變量;
若所述當前語法節點包含所述目標變量,獲取所述目標變量和作用于所述目標變量的運算符,根據所述目標變量類型和作用于所述目標變量的運算符類型,匹配對應的預設隱性約束規則,根據確定的預設隱性約束規則提取所述目標變量的隱性約束,所述目標變量為所述待測程序的輸入變量或所述待測程序的全局變量;
否則,將所述當前節點的下一個節點重新作為所述當前節點,重復上述步驟S2,直到所述任一路徑的出口節點為當前節點。
2.根據權利要求1所述方法,其特征在于,步驟S2中,所述根據所述當前語法節點的類型,判斷是否進行進一步遍歷,包括:
若所述當前語法節點為分支節點,遍歷所述當前語法節點的每一子節點,判斷所述當前語法節點是否包含所述目標變量。
3.根據權利要求1所述方法,其特征在于,步驟S2中,所述根據所述當前語法節點的類型,遍歷訪問當前語法節點并判斷所述當前語法節點是否包含目標變量,包括:
若所述當前語法節點為賦值節點,遍歷所述當前語法節點的每一左孩子節點和每一右孩子節點,判斷所述當前語法節點是否包含所述目標變量。
4.根據權利要求1所述方法,其特征在于,步驟S2中,所述根據所述目標變量類型和作用于所述目標變量的運算符類型,匹配對應的預設隱性約束規則,根據確定的預設隱性約束規則提取所述目標變量的隱性約束,包括:
若所述目標變量為指針類型變量,獲取所述指針類型變量對應的所有預設隱性約束規則,所述指針類型變量對應的所有預設隱性約束規則包括指針類、函數調用類隱性約束規則;
獲取所述目標變量的運算符類型,根據運算符類型確定所述目標變量隱性約束規則;
通過指針類型目標變量對應的預設隱性約束規則提取所述目標變量的隱性約束。
5.根據權利要求1所述方法,其特征在于,步驟S2中,所述根據所述目標變量類型和作用于所述目標變量的運算符類型,匹配對應的預設隱性約束規則,包括:
若所述目標變量為普通變量,獲取所述普通變量對應的所有隱性約束規則,所述普通變量對應的所有隱性約束規則包括算術運算類、數組類、函數調用類隱性約束規則;
獲取所述目標變量的運算符類型,根據運算符類型確定所述目標變量隱性約束規則;
通過普通目標變量對應的預設隱性約束規則提取所述目標變量的隱性約束。
6.根據權利要求1所述方法,其特征在于,步驟S1之前還包括:獲取所述待測程序中每一函數的抽象語法樹和控制流圖。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京郵電大學,未經北京郵電大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201810215371.X/1.html,轉載請聲明來源鉆瓜專利網。





