[發(fā)明專利]源代碼靜態(tài)分析裝置在審
| 申請?zhí)枺?/td> | 202010022602.2 | 申請日: | 2020-01-09 |
| 公開(公告)號: | CN111240687A | 公開(公告)日: | 2020-06-05 |
| 發(fā)明(設(shè)計(jì))人: | 黃滟鴻;郭旺;史建琦;蔡方達(dá);郭欣;石奇 | 申請(專利權(quán))人: | 華東師范大學(xué);上海豐蕾信息科技有限公司 |
| 主分類號: | G06F8/41 | 分類號: | G06F8/41 |
| 代理公司: | 北京辰權(quán)知識產(chǎn)權(quán)代理有限公司 11619 | 代理人: | 付婧 |
| 地址: | 200062 上*** | 國省代碼: | 上海;31 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 源代碼 靜態(tài) 分析 裝置 | ||
1.一種源代碼靜態(tài)分析裝置,其特征在于,包括:
第一分析模塊,用于對源代碼進(jìn)行詞法分析和語法分析,生成抽象語法樹;
第二分析模塊,用于對所述抽象語法樹進(jìn)行語義分析,得到有向控制流圖和數(shù)據(jù)流圖;
遍歷模塊,用于對所述有向控制流圖進(jìn)行遍歷,獲取切片數(shù)據(jù);
查找模塊,用于根據(jù)所述數(shù)據(jù)流圖和所述切片數(shù)據(jù),查找并輸出所述源代碼中可能存在缺陷的變量。
2.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述第一分析模塊包括用于對源代碼進(jìn)行詞法分析的詞法分析模塊;所述詞法分析模塊包括:
掃描識別模塊,用于對所述源代碼進(jìn)行掃描,根據(jù)構(gòu)詞規(guī)則,采用正則表達(dá)式來識別所述源代碼中的有用部分作為詞法單元,產(chǎn)生由詞法單元構(gòu)成的序列;
匹配模塊,用于將所述由詞法單元構(gòu)成的序列與預(yù)定義的缺陷序列進(jìn)行匹配,將所述源代碼中匹配成功的缺陷部分找出來并刪除所述缺陷部分。
3.根據(jù)權(quán)利要求2所述的裝置,其特征在于,所述第一分析模塊包括用于對源代碼進(jìn)行語法分析的語法分析模塊;所述語法分析模塊具體用于:將經(jīng)過所述詞法分析的源代碼按照語法規(guī)則轉(zhuǎn)化成語句單元,構(gòu)建抽象語法樹。
4.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述第二分析模塊包括:
推導(dǎo)模塊,用于定義所述抽象語法樹的不同類型的節(jié)點(diǎn),基于所述節(jié)點(diǎn)利用文法結(jié)構(gòu)推導(dǎo)出所述抽象語法樹中的語句;
第三分析模塊,用于對所述語句進(jìn)行控制流分析和數(shù)據(jù)流分析,生成有向控制流圖和數(shù)據(jù)流圖。
5.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述遍歷模塊具體用于:
對所述有向控制流圖的控制流指針進(jìn)行分析,以指針作為參數(shù)和返回值,通過指針分析確定調(diào)用對象,通過所述調(diào)用對象確定新的指向關(guān)系,將傳參和返回值賦值都作為指針賦值操作進(jìn)行分析;采用路徑敏感方法收集路徑約束條件和變量約束條件的信息,得到所述切片數(shù)據(jù)。
6.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述查找模塊具體用于:根據(jù)分類安全規(guī)則集,結(jié)合抽象解釋方法對所述數(shù)據(jù)流圖和所述切片數(shù)據(jù)進(jìn)行靜態(tài)分析,查找出所述源代碼中可能存在缺陷的變量并將其輸出。
7.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述遍歷模塊包括替換模塊,所述替換模塊用于:采用深度優(yōu)先的遍歷算法遍歷所述控制流程圖的各條分支路徑,在每一條所述分支路徑上,針對外部輸入數(shù)據(jù)或者變量的值無法確定的情況,采用符號值替換的方式,將所述分支路徑上對應(yīng)的變量、參數(shù)和返回值進(jìn)行符號替換。
8.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述裝置還包括預(yù)處理模塊。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述預(yù)處理模塊用于:在所述第一分析模塊對源代碼進(jìn)行詞法分析和語法分析,生成抽象語法樹之前,濾掉源程序中的注釋和空白,得到預(yù)處理后的源代碼。
10.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述有向控制流圖包括節(jié)點(diǎn)以及節(jié)點(diǎn)間的有向邊,其中,所述節(jié)點(diǎn)表示基本代碼塊,所述節(jié)點(diǎn)間的有向邊代表控制流路徑,所述有向邊中的反向邊代表可能存在的循環(huán)。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于華東師范大學(xué);上海豐蕾信息科技有限公司,未經(jīng)華東師范大學(xué);上海豐蕾信息科技有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010022602.2/1.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 復(fù)雜背景中實(shí)現(xiàn)靜態(tài)目標(biāo)檢測和識別的方法
- 一種設(shè)置靜態(tài)認(rèn)證信息的方法及裝置
- 一種基于物聯(lián)網(wǎng)技術(shù)的機(jī)房靜態(tài)資源快速定位的方法
- 一種動態(tài)網(wǎng)頁靜態(tài)化的方法和裝置
- 瀏覽器靜態(tài)資源加載方法、瀏覽器程序及可讀存儲介質(zhì)
- 靜態(tài)資源更新方法、裝置、存儲介質(zhì)和計(jì)算機(jī)設(shè)備
- 一種圖像顯示方法及裝置
- 一種靜態(tài)方法修改非靜態(tài)對象的方法
- 一種靜態(tài)資源加載方法、裝置、設(shè)備及可讀存儲介質(zhì)
- 一種靜態(tài)資源獲取方法、裝置及其相關(guān)設(shè)備





