[發明專利]一種指針修改影響的分析方法和系統有效
| 申請號: | 201710189131.2 | 申請日: | 2017-03-27 |
| 公開(公告)號: | CN107085533B | 公開(公告)日: | 2019-09-06 |
| 發明(設計)人: | 馬森;岳貫集;張世琨;高慶 | 申請(專利權)人: | 北京北大軟件工程股份有限公司 |
| 主分類號: | G06F8/41 | 分類號: | G06F8/41 |
| 代理公司: | 北京路浩知識產權代理有限公司 11002 | 代理人: | 湯財寶 |
| 地址: | 100081 北京市海淀區北四環西路67號大*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 指針 修改 影響 分析 方法 系統 | ||
本發明提供一種指針修改影響的分析方法和系統,所述方法包括:在程序代碼中查找該語句中變量的等價變量,并查找該等價變量所有的定義點,構成分析結果集合;基于定義點、語句以及程序入口的關系,獲得對應該定義點的多個路徑條件;以及判斷所有所述路徑條件是否可同時滿足,若不可同時滿足,則將該定義點從所述分析結果集合中剔除。本發明提高結果的精度,做到了部分路徑敏感以及流敏感,使采用該分析算法的靜態代碼缺陷檢測結果更加精確。
技術領域
本發明涉及軟件測試領域,更具體地,涉及指針修改影響的分析方法和系統。
背景技術
在計算機科學領域,指向分析是一種用于分析指針和內存引用所指向的變量或內存地址的靜態代碼分析技術。指向分析技術是很多更為復雜的代碼分析技術的基礎,例如編譯優化、代碼缺陷檢測以及本文提到的指針修改影響分析。
Steensgaard算法和Andersen算法為兩種公認的經典指向分析算法。Steensgaard算法效率較高,其時間復雜度幾乎是線性的,但精度低;Andersen算法有較高的精度,但時間復雜度接近O(n3)。
指針修改影響分析技術能夠反映程序中的由指針引起的跨函數定義使用關系,在編譯優化、基于數據流的檢測、增量靜態語義分析等諸多領域被廣泛使用。高效的指針修改分析技術在程序分析和編譯領域都是十分必要的。
發明內容
本發明提供一種克服上述問題或者至少部分地解決上述問題的指針修改影響的分析方法和系統。
根據本發明的一個方面,提供一種指針修改影響的分析方法,包括:
S1、在程序代碼中查找該語句中變量的等價變量,并查找該等價變量所有的定義點,構成分析結果集合;
S2、基于定義點、語句以及程序入口的關系,獲得對應該定義點的多個路徑條件;以及
S3、判斷所有所述路徑條件是否可同時滿足,若不可同時滿足,則將該定義點從所述分析結果集合中剔除。
根據本發明的一個方面,還提供一種判斷修改程序的指針是否造成影響的系統,包括:
初步判斷模塊,用于在程序代碼中查找該語句中變量的等價變量,并查找該等價變量所有的定義點,構成分析結果集合;
結果集合模塊,基于定義點、語句以及程序入口的關系,獲得對應該定義點的多個路徑條件;以及
再判斷模塊,判斷所有所述路徑條件是否可同時滿足,若不可同時滿足,則將該定義點從所述分析結果集合中剔除。
本申請提出一種指針修改影響的分析方法和系統。在傳統指針修改影響分析算法的基礎上,利用跨函數的多個條件計算,精化獲得的結果,從而提高結果的精度,做到了部分路徑敏感以及流敏感,使采用該分析算法的靜態代碼缺陷檢測結果更加精確。
附圖說明
圖1為現有技術中示意圖;
圖2為根據本發明實施例中采用本發明所述方法的示例程序一的代碼示意圖;
圖3為根據本發明實施例中采用本發明所述方法的示例程序一的控制流圖;
圖4為根據本發明實施例中采用本發明所述方法的示例程序一的超圖;
圖5為根據本發明實施例中采用本發明所述方法的示例程序一的指向圖;
圖6為根據本發明實施例中采用本發明所述方法的示例程序二的代碼示意圖;
圖7為根據本發明實施例中采用本發明所述方法的示例程序二的控制流圖;
圖8為根據本發明實施例中采用本發明所述方法的示例程序二的超圖;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京北大軟件工程股份有限公司,未經北京北大軟件工程股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710189131.2/2.html,轉載請聲明來源鉆瓜專利網。





