[發明專利]一種資源流圖的構建方法有效
| 申請號: | 202010741701.6 | 申請日: | 2020-07-29 |
| 公開(公告)號: | CN111857811B | 公開(公告)日: | 2023-09-22 |
| 發明(設計)人: | 歐鵬程 | 申請(專利權)人: | 湖南泛聯新安信息科技有限公司 |
| 主分類號: | G06F8/74 | 分類號: | G06F8/74 |
| 代理公司: | 長沙市護航專利代理事務所(特殊普通合伙) 43220 | 代理人: | 莫曉齊 |
| 地址: | 410000 湖南省長沙市開福區伍家*** | 國省代碼: | 湖南;43 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 資源 構建 方法 | ||
本發明公開了一種資源流圖的構建方法,包括以下步驟:S100、將源代碼文件通過轉換器生成相應的抽象語法樹;S200、對每個方法中需要分析的變量和語句分別定義,其中,變量定義為未賦值變量、賦值變量和參數變量;S300、遍歷所有的抽象語法樹,并找到抽象語法樹中的每一個方法,建立一個以它的名稱和參數類型為主鍵值的索引;S400、對于方法內的每一個參數變量進行處理;S500、對于方法內的所有賦值變量進行處理;S600、對于方法內的所有未賦值變量進行處理。本發明的資源流圖構建不需要通過生成大量中間的結果,可通過語法樹直接生成,并且能夠通過該資源流圖分析數據的流向,節省了大量的時間和空間。
技術領域
本發明屬于計算機技術領域,具體涉及一種資源流圖的構建方法。
背景技術
在靜態分析領域,通常我們對程序分析的步驟都是先對代碼進行解析生成相應的語法樹,然后將語法樹再生成中間代碼表示,通過中間代碼來生成基本塊,再在基本塊的基礎上構建控制流圖。通過控制流圖構造出數據流圖。大部分構建的控制流圖主要是為之后生成數據流圖做準備。這種構建方式生成了很多中間的結果,而這些中間結果在后續的分析中并不重要,這浪費了大量的儲存空間和計算資源。
發明內容
本發明的目的在于避免現有技術中的不足而提供一種資源流圖的構建方法,其構建不需要通過生成大量中間的結果,可通過語法樹直接生成,并且能夠通過該資源流圖分析數據的流向,節省了大量的時間和空間。
本發明的目的通過以下技術方案實現:提供一種資源流圖的構建方法,包括以下步驟:
S100、將源代碼文件通過轉換器生成相應的抽象語法樹;
S200、對每個方法中需要分析的變量和語句分別定義,其中,變量定義為未賦值變量、賦值變量和參數變量;
S300、遍歷所有的抽象語法樹,并找到抽象語法樹中的每一個方法,建立一個以它的名稱和參數類型為主鍵值的索引;
S400、對于方法內的每一個參數變量進行處理;
S500、對于方法內的所有賦值變量進行處理;
S600、對于方法內的所有未賦值變量進行處理。
作為進一步的改進,所述步驟S200中未賦值變量為只初始化了但是未賦值的變量,參數變量為方法的入參且不包括基本類型的變量,賦值變量為在方法內聲明了并初始化的變量。
作為進一步的改進,每個方法中需要分析的語句定義為跳轉、返回值、If分支、try塊、結束和其他普通語句六種類型,其中,跳轉類型為在try語句中會拋出異常的語句,返回值類型為含有return的語句,If分支類型為語句if塊的入口點,try塊類型為try塊的入口點,結束類型為方法結束的位置。
作為進一步的改進,所述步驟S400具體包括以下過程:
S401、判斷方法內的參數變量的類型是否為基本類型,若是,則返回步驟S200,反之,則進入步驟S402;
S402、對方法中的參數變量相關所有語句進行遍歷。
作為進一步的改進,所述步驟S402中參數變量相關所有語句進行遍歷時,語句類型判斷的具體表現為:
A)判斷是否為返回值類型,如果為返回值類型,則把該語句的類型設置為返回值后返回步驟S402;
B)判斷是否為try塊類型,如果為try塊,則對于try塊中的語句逐一分析后返回步驟S402;
C)判斷是否為If分支類型,如果為if分支類型,首先,判斷if分支的表達式,是否與分析的參數有關;其次,對于if里的then塊語句分析后返回步驟S402;再次,對于if里的else塊語句分析后返回步驟S402;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于湖南泛聯新安信息科技有限公司,未經湖南泛聯新安信息科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010741701.6/2.html,轉載請聲明來源鉆瓜專利網。





