欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

程序代碼級內(nèi)存缺陷漏報分析及解決方法與流程

文檔序號:11918015閱讀:243來源:國知局
程序代碼級內(nèi)存缺陷漏報分析及解決方法與流程

本發(fā)明涉及軟件靜態(tài)分析技術(shù),尤其涉及基于靜態(tài)分析的缺陷檢測。



背景技術(shù):

靜態(tài)分析是軟件測試方法的一種類型,其目的是通過靜態(tài)的分析軟件是否遵守預(yù)定的要求,是保證軟件質(zhì)量的重要一環(huán)。靜態(tài)分析也被稱為靜態(tài)測試,不實際運行被測的軟件,而是通過掃描源程序,從中找出可能導(dǎo)致錯誤的結(jié)構(gòu)異常、控制流異常及數(shù)據(jù)流異常等情況。

缺陷檢測是一類靜態(tài)分析技術(shù),可以靜態(tài)的檢測出程序中不符合語法或語義要求的缺陷。其中代碼級內(nèi)存缺陷是一類違背對內(nèi)存讀寫正常語義的缺陷,不符合預(yù)定的內(nèi)存讀寫要求,常見的代碼級內(nèi)存缺陷有:空指針引用、非法計算、緩沖區(qū)溢出、數(shù)組越界、變量未初始化使用、內(nèi)存泄露、資源泄露等。

代碼級內(nèi)存缺陷的檢測依賴于對程序語義分析,通過檢測每個程序點上的存儲狀態(tài)是否符合正確的內(nèi)存讀寫語義要求進(jìn)行判定。但因為程序的復(fù)雜性,靜態(tài)分析只能獲得程序點上存儲狀態(tài)近似的結(jié)果,其結(jié)果不能是既是可靠的又是完備的,其中不可靠的結(jié)果會導(dǎo)致漏報;而且代碼級內(nèi)存缺陷檢測對象識別的不全面以及判定準(zhǔn)則的不準(zhǔn)確也會導(dǎo)致漏報。



技術(shù)實現(xiàn)要素:

有鑒于此,本發(fā)明的主要目的在于首先分析導(dǎo)致代碼級內(nèi)存缺陷漏報的因素,并針對漏報的因素提出了相應(yīng)的解決方法。

基于缺陷模式進(jìn)行缺陷檢測可能導(dǎo)致代碼級內(nèi)存缺陷漏報的因素有:

1、未定義相應(yīng)的代碼級內(nèi)存缺陷模式。未全面考慮所有可能的代碼級內(nèi)存缺陷。

2、代碼級內(nèi)存缺陷檢測對象識別不全面。雖然定義了相應(yīng)的代碼級內(nèi)存缺陷模式,但是未全面考慮該類代碼級內(nèi)存缺陷出現(xiàn)的情況。

3、對變量的存儲狀態(tài)描述不全面。代碼級內(nèi)存缺陷的產(chǎn)生大多是變量的存儲狀態(tài)或者訪問違背了正常語義或安全內(nèi)存訪問的要求,而變量間存在著各種關(guān)聯(lián)關(guān)系,如果對變量的存儲狀態(tài)以及變量間的關(guān)聯(lián)描述的不全面,將必然導(dǎo)致分析得到的變量存儲狀態(tài)的既不能滿足可靠性也不能滿足完備性,不能滿足可靠性將必然導(dǎo)致某些代碼級內(nèi)存缺陷漏報。

4、數(shù)據(jù)流分析不可靠。因為程序的復(fù)雜性,大多數(shù)數(shù)據(jù)流分析難以保證可靠性。程序的復(fù)雜性主要表現(xiàn)在:變量間存在各種關(guān)聯(lián)、復(fù)雜的控制結(jié)構(gòu)、函數(shù)調(diào)用。這些復(fù)雜特性將導(dǎo)致難以可靠的分析出在每個程序點上的變量存儲狀態(tài)。

5、代碼級內(nèi)存缺陷判定規(guī)則不正確?;跀?shù)據(jù)流分析的結(jié)果對識別的代碼級內(nèi)存缺陷檢測對象進(jìn)行檢測,可能因為語句副作用等因素導(dǎo)致不能獲得程序點上檢測對向的存儲狀態(tài),導(dǎo)致不能正確的判定是否產(chǎn)生了代碼級內(nèi)存缺陷。

針對上述導(dǎo)致代碼級內(nèi)存缺陷漏報的因素,本發(fā)明提出了具有針對性的解決辦法以實現(xiàn)代碼級內(nèi)存缺陷的零漏報,具體的技術(shù)方案是這樣實現(xiàn)的:

1、一種代碼級內(nèi)存缺陷漏報分析及解決方法,其特征在于,該解決方法包括以下幾個步驟:

A、總結(jié)程序中各類代碼級內(nèi)存缺陷,并歸納出相關(guān)的缺陷模式;

B、應(yīng)用抽象內(nèi)存模型描述內(nèi)存對象的存儲,并采用抽象域表示表達(dá)式的取值;

C、可靠的數(shù)據(jù)流分析,獲得每個程序點上每個內(nèi)存對象取值的上近似;

D、基于缺陷模式規(guī)則與數(shù)據(jù)流分析的結(jié)果,充分識別代碼級內(nèi)存缺陷檢測對象;

E、基于缺陷模式規(guī)則與數(shù)據(jù)流分析的結(jié)果,準(zhǔn)確的判定代碼級內(nèi)存缺陷檢測對象是否是缺陷。

2、根據(jù)權(quán)利要求1所述的代碼級內(nèi)存缺陷漏報分析及解決方法,其特征在于,所述步驟A中的總結(jié)程序中各類代碼級內(nèi)存缺陷,并歸納出相關(guān)的缺陷模式的具體過程如下:

A1、對程序中各種違背語義的情況進(jìn)行歸納,總結(jié)為各種缺陷模式;

A2、歸納匯總出每種缺陷模式可能導(dǎo)致代碼級內(nèi)存缺陷的因素;

A3、將缺陷模式進(jìn)行標(biāo)準(zhǔn)形式的封裝,以供后續(xù)缺陷檢測使用。

3、根據(jù)權(quán)利要求1所述的代碼級內(nèi)存缺陷漏報分析及解決方法,其特征在于,所述步驟B中的應(yīng)用抽象內(nèi)存模型描述內(nèi)存對象的存儲,并采用抽象域表示表達(dá)式的取值的具體過程如下:

B1、提出一種抽象內(nèi)存模型,能夠描述程序中出現(xiàn)的各種類型內(nèi)存對象以及表達(dá)式間的各種關(guān)聯(lián);

B2、應(yīng)用抽象域描述標(biāo)量表達(dá)式的取值;

4、根據(jù)權(quán)利要求1所述的代碼級內(nèi)存缺陷漏報分析及解決方法,其特征在于,所述步驟C中的可靠的數(shù)據(jù)流分析,獲得每個程序點上每個內(nèi)存對象取值的上近似的具體過程如下:

C1、應(yīng)用流敏感、域敏感的數(shù)據(jù)流迭代的分析策略,以每個函數(shù)為數(shù)據(jù)流分析的單元進(jìn)行分析;

C2、采用符號化函數(shù)摘要實現(xiàn)上下文敏感的過程間分析;

5、根據(jù)權(quán)利要求4所述的可靠的數(shù)據(jù)流分析,獲得每個程序點上每個內(nèi)存對象取值的上近似,其特征在于,所述步驟C2中的采用符號化函數(shù)摘要實現(xiàn)上下文敏感的過程間分析的具體過程如下:

C2.1、對每個函數(shù)進(jìn)行數(shù)據(jù)流分析后,生成符號化函數(shù)摘要;

C2.2、對每個函數(shù)調(diào)用,獲得被調(diào)用函數(shù)的符號化函數(shù)摘要,并根據(jù)調(diào)用點處的上下文環(huán)境進(jìn)行符號化函數(shù)摘要的實例化;

6、根據(jù)權(quán)利要求1所述的代碼級內(nèi)存缺陷漏報分析及解決方法,其特征在于,所述步驟D中的基于缺陷模式規(guī)則與數(shù)據(jù)流分析的結(jié)果,充分識別代碼級內(nèi)存缺陷檢測對象的具體過程如下:

D1、基于各種代碼級內(nèi)存缺陷呈現(xiàn)時所具有的語法特征,根據(jù)預(yù)處理后的程序識別出初始檢測對象;

D2、根據(jù)數(shù)據(jù)流分析的結(jié)果,分析出每個初始檢測對象對應(yīng)的代碼級內(nèi)存缺陷檢測對象及檢測點;

7、根據(jù)權(quán)利要求1所述的代碼級內(nèi)存缺陷漏報分析及解決方法,其特征在于,所述步驟E中的基于缺陷模式規(guī)則與數(shù)據(jù)流分析的結(jié)果,準(zhǔn)確的判定代碼級內(nèi)存缺陷檢測對象是否是缺陷的具體過程如下:

E1、對于代碼級內(nèi)存缺陷檢測點,基于數(shù)據(jù)流分析結(jié)果獲得代碼級內(nèi)存缺陷檢測對象的存儲狀態(tài);

E2、基于代碼級內(nèi)存缺陷模式,判定該代碼級內(nèi)存缺陷檢測對象的存儲狀態(tài)是否符合該類代碼級內(nèi)存缺陷模式。

本發(fā)明所提供的代碼級內(nèi)存缺陷漏報分析及解決方法,具有以下優(yōu)點:

應(yīng)用代碼級內(nèi)存缺陷檢測方法,能夠消除代碼級內(nèi)存缺陷的漏報,本發(fā)明能夠保證代碼級內(nèi)存缺陷檢測的充分性的原理在于:

1、代碼級內(nèi)存缺陷模式總結(jié)的充分性。充分的總結(jié)代碼級內(nèi)存缺陷模式,歸納總結(jié)出程序中各種可能的代碼級內(nèi)存缺陷及它們出現(xiàn)的可能情況。

2、表達(dá)式存儲狀態(tài)描述的全面性。全面的描述表達(dá)式存儲狀態(tài),采用抽象域描述表達(dá)式的取值,采用內(nèi)存模型表示表達(dá)式間的各種關(guān)聯(lián)。

3、數(shù)據(jù)流分析的可靠性。分析獲得每個程序點上每個內(nèi)存對象取值的上近似,以及表達(dá)式間的各種可能關(guān)聯(lián)。

4、代碼級內(nèi)存缺陷檢測對象識別的完全性。基于對被測程序的預(yù)處理以及數(shù)據(jù)流分析的結(jié)果,根據(jù)總結(jié)的代碼級內(nèi)存缺陷模式規(guī)則,識別出全部的代碼級內(nèi)存缺陷檢測對象。

5、代碼級內(nèi)存缺陷檢測標(biāo)準(zhǔn)的準(zhǔn)確性。根據(jù)總結(jié)的代碼級內(nèi)存缺陷模式規(guī)則以及數(shù)據(jù)流分析的結(jié)果,準(zhǔn)確的檢測每一個代碼級內(nèi)存缺陷檢測對象是否違背了對內(nèi)存讀寫的正確語義規(guī)則。

附圖說明

圖1、代碼級內(nèi)存缺陷檢測流程示意圖

圖2、可靠的數(shù)據(jù)流分析示意圖

圖3、對每個函數(shù)進(jìn)行流敏感、域敏感的數(shù)據(jù)流分析的過程示意圖

圖4、代碼級內(nèi)存缺陷檢測對象識別示意圖

圖5、代碼級內(nèi)存缺陷檢測對象判定示意圖

具體實施方式

本專利的方法進(jìn)行代碼級內(nèi)存缺陷檢測時首先對被測程序進(jìn)行預(yù)處理,得到抽象語法樹、符號表、定義使用鏈、控制流圖等程序的中間表示;然后基于控制流圖進(jìn)行可靠的數(shù)據(jù)流分析,得到每個程序點上用抽象內(nèi)存模性描述的內(nèi)存對象的存儲狀態(tài);再基于數(shù)據(jù)流分析的結(jié)果與代碼級內(nèi)存缺陷模式的規(guī)則,充分識別出代碼級內(nèi)存缺陷檢測對象;最后,基于數(shù)據(jù)流分析的結(jié)果與代碼級內(nèi)存缺陷模式的規(guī)則,準(zhǔn)確的判定識別出的代碼級內(nèi)存缺陷檢測對象是否是缺陷。

以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護(hù)范圍。

圖1為本發(fā)明的代碼級內(nèi)存缺陷檢測流程示意圖,該方法包括如下步驟:

步驟A、對被測程序進(jìn)行預(yù)處理,得到抽象語法樹、符號表、定義使用鏈、控制流圖等中間表示;

步驟B、可靠的數(shù)據(jù)流分析,獲得每個程序點上每個內(nèi)存對象取值的上近似;

步驟C、基于缺陷模式規(guī)則與數(shù)據(jù)流分析的結(jié)果,充分識別代碼級內(nèi)存缺陷檢測對象;

步驟D、基于缺陷模式規(guī)則與數(shù)據(jù)流分析的結(jié)果,準(zhǔn)確的判定代碼級內(nèi)存缺陷檢測對象是否是缺陷。

其中所屬步驟B可靠的數(shù)據(jù)流分析的過程如圖2所示,具體分以下步驟:

步驟B.1、對每個函數(shù)進(jìn)行流敏感、域敏感的數(shù)據(jù)流分析,獲得該函數(shù)每個程序點上每個內(nèi)存對象由抽象內(nèi)存模性描述的存儲上近似;

步驟B.2、基于該函數(shù)數(shù)據(jù)流分析的結(jié)果,生成該函書的符號化函數(shù)摘要;

其中所屬步驟B.1對每個函數(shù)進(jìn)行流敏感、域敏感的數(shù)據(jù)流分析的過程如圖3所示,具體分以下步驟:

步驟B.1.1、取一個控制流圖節(jié)點作為待處理節(jié)點,

步驟B.1.2、如果該控制流圖節(jié)點有函數(shù)調(diào)用,轉(zhuǎn)步驟B.1.3,否則,轉(zhuǎn)步驟B.1.5;

步驟B.1.3、獲得被調(diào)用函數(shù)的符號化函數(shù)摘要,基于調(diào)用點的上下文環(huán)境對符號化函數(shù)摘要進(jìn)行實例化;

步驟B.1.4、基于實例化后的函數(shù)摘要對調(diào)用點處進(jìn)行數(shù)據(jù)流更新;

步驟B.1.5、對該節(jié)點的遷移操作進(jìn)行處理。

其中所屬步驟C充分識別代碼級內(nèi)存缺陷檢測對象的過程如圖4所示,具體分以下步驟:

步驟C.1、基于各種代碼級內(nèi)存缺陷呈現(xiàn)時所具有的語法特征,根據(jù)預(yù)處理后的程序識別出初始的代碼級內(nèi)存缺陷檢測對象;

步驟C.2、根據(jù)數(shù)據(jù)流分析的結(jié)果,分析出每個初始檢測對象對應(yīng)的代碼級內(nèi)存缺陷檢測對象及檢測點;

其中所屬步驟D準(zhǔn)確的判定代碼級內(nèi)存缺陷檢測對象是否是缺陷的過程如圖5所示,具體分以下步驟:

步驟D.1、對于代碼級內(nèi)存缺陷檢測點,基于數(shù)據(jù)流分析結(jié)果獲得代碼級內(nèi)存缺陷檢測對象的存儲狀態(tài);

步驟D.2、基于代碼級內(nèi)存缺陷模式,判定該代碼級內(nèi)存缺陷檢測對象的存儲狀態(tài)是否符合該類代碼級內(nèi)存缺陷模式。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
宝应县| 即墨市| 南乐县| 丹阳市| 肇东市| 南皮县| 屏东市| 保康县| 眉山市| 确山县| 定结县| 海伦市| 柘城县| 清新县| 锦州市| 集贤县| 永和县| 尼勒克县| 榆社县| 诏安县| 江陵县| 景谷| 宁德市| 株洲县| 沂源县| 临夏县| 永年县| 双牌县| 河北省| 顺平县| 新津县| 淅川县| 聊城市| 南安市| 古田县| 永济市| 石屏县| 正宁县| 沽源县| 威宁| 固原市|