生成時(shí)序安全屬性類缺陷模式相關(guān)的函數(shù)摘要信息的方法
【專利摘要】本發(fā)明涉及一種生成時(shí)序安全屬性類缺陷模式相關(guān)的函數(shù)摘要信息的方法,包括:判定被測(cè)程序中時(shí)序安全屬性類的缺陷模式,并生成時(shí)序安全屬性類缺陷模式的描述文件;根據(jù)所述描述文件獲取所述時(shí)序安全屬性類缺陷模式的有限自動(dòng)狀態(tài)機(jī);根據(jù)所述有限自動(dòng)狀態(tài)機(jī)為所述被測(cè)程序中的函數(shù)生成函數(shù)摘要信息。本發(fā)明根據(jù)描述時(shí)序安全屬性類缺陷模式的有限自動(dòng)狀態(tài)機(jī)為被測(cè)程序中的函數(shù)生成函數(shù)摘要信息,通過所述函數(shù)摘要信息進(jìn)行軟件靜態(tài)測(cè)試,從而提高軟件靜態(tài)缺陷的檢測(cè)效率。
【專利說明】生成時(shí)序安全屬性類缺陷模式相關(guān)的函數(shù)摘要信息的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及軟件靜態(tài)測(cè)試【技術(shù)領(lǐng)域】,尤其涉及一種生成時(shí)序安全屬性類缺陷模式相關(guān)的函數(shù)摘要信息的方法。
【背景技術(shù)】
[0002]靜態(tài)代碼缺陷分析技術(shù)通過對(duì)代碼進(jìn)行靜態(tài)分析來推測(cè)程序運(yùn)行時(shí)的表現(xiàn)行為,從而發(fā)現(xiàn)代碼中可能存在的缺陷。這類技術(shù)主要包括抽象解釋、定理證明、模型檢測(cè)、符號(hào)執(zhí)行和基于缺陷模式的代碼檢查等。
[0003]基于模式匹配的代碼缺陷查找方法主要包括如下兩大步驟:首先,對(duì)已有代碼中出現(xiàn)過的缺陷進(jìn)行總結(jié)并提煉出“缺陷模式知識(shí)”;然后,采用靜態(tài)分析的方法對(duì)受檢代碼進(jìn)行“缺陷模式匹配”以確定受檢代碼是否包含相應(yīng)缺陷,并把匹配結(jié)果以缺陷檢測(cè)報(bào)告的形式呈現(xiàn)給用戶。
[0004]在對(duì)現(xiàn)有的若干基于模式匹配的代碼缺陷靜態(tài)分析工具研究之后,我們發(fā)現(xiàn):在對(duì)C程序代碼進(jìn)行靜態(tài)代碼缺陷分析的過程中,特別是檢測(cè)時(shí)序安全屬性類缺陷模式時(shí),往往要處理復(fù)雜的函數(shù)調(diào)用關(guān)系。傳統(tǒng)的做法類似函數(shù)內(nèi)聯(lián),在函數(shù)調(diào)用點(diǎn)處將被調(diào)用函數(shù)一層一層地展開進(jìn)行分析,但是這會(huì)嚴(yán)重地影響分析效率。
【發(fā)明內(nèi)容】
[0005](一)要解決的技術(shù)問題
[0006]本發(fā)明所要解決的技術(shù)問題是:如何生成時(shí)序安全屬性類缺陷模式相關(guān)的函數(shù)摘要信息,提高靜態(tài)缺陷檢測(cè)的分析效率。
[0007](二)技術(shù)方案
[0008]本發(fā)明提出了一種生成時(shí)序安全屬性類缺陷模式相關(guān)的函數(shù)摘要信息的方法,包括以下步驟:
[0009]判定被測(cè)程序中時(shí)序安全屬性類的缺陷模式,并生成時(shí)序安全屬性類缺陷模式的描述文件;
[0010]根據(jù)所述描述文件獲取所述時(shí)序安全屬性類缺陷模式的有限自動(dòng)狀態(tài)機(jī);
[0011]根據(jù)所述有限自動(dòng)狀態(tài)機(jī)為所述被測(cè)程序中的函數(shù)生成函數(shù)摘要信息。
[0012]優(yōu)選地,所述根據(jù)所述有限自動(dòng)狀態(tài)機(jī)為所述被測(cè)程序中的函數(shù)生成函數(shù)摘要信息之后,還包括:
[0013]在所述被測(cè)程序的函數(shù)調(diào)用點(diǎn)實(shí)例化與所述函數(shù)對(duì)應(yīng)的函數(shù)摘要信息。
[0014]優(yōu)選地,所述根據(jù)所述有限自動(dòng)狀態(tài)機(jī)為所述被測(cè)程序中的函數(shù)生成函數(shù)摘要信息具體為:
[0015]根據(jù)所述有限自動(dòng)狀態(tài)機(jī),采用后向數(shù)據(jù)流分析法為所述被測(cè)程序中的函數(shù)生成對(duì)應(yīng)的函數(shù)摘要信息。
[0016]優(yōu)選地,所述采用后向數(shù)據(jù)流分析法為所述被測(cè)程序中的函數(shù)生成對(duì)應(yīng)的函數(shù)摘要信息具體包括:
[0017]生成所述被測(cè)程序的函數(shù)控制流圖;
[0018]逆向遍歷所述函數(shù)控制流圖中的節(jié)點(diǎn);
[0019]合并當(dāng)前節(jié)點(diǎn)的后繼節(jié)點(diǎn)傳遞來的數(shù)據(jù)流值;
[0020]更新合并后的數(shù)據(jù)流值;
[0021]對(duì)更新后的數(shù)據(jù)流值進(jìn)行邏輯表達(dá)式化簡(jiǎn),并根據(jù)預(yù)設(shè)規(guī)則刪除無效的數(shù)據(jù)流值。
[0022]優(yōu)選地,所述在所述被測(cè)程序的函數(shù)調(diào)用點(diǎn)實(shí)例化與所述函數(shù)對(duì)應(yīng)的函數(shù)摘要信息具體包括:
[0023]將所述函數(shù)摘要信息中的型參變量替換為函數(shù)調(diào)用點(diǎn)處的實(shí)參變量;
[0024]判斷所述實(shí)參變量是否滿足所述函數(shù)摘要信息中的約束條件;
[0025]如果滿足所述約束條件,則獲取所述函數(shù)摘要信息所關(guān)注的內(nèi)存對(duì)象;并根據(jù)所述約束條件實(shí)現(xiàn)所述內(nèi)存對(duì)象的狀態(tài)遷移;如果不滿足所述約束條件,則判定所述函數(shù)摘要信息在所述函數(shù)調(diào)用點(diǎn)不合法,結(jié)束本次操作。
[0026]優(yōu)選地,所述獲取所述函數(shù)摘要信息所關(guān)注的內(nèi)存對(duì)象具體包括:
[0027]獲取所述實(shí)參變量對(duì)應(yīng)的指向信息;
[0028]根據(jù)所述指向信息獲取所述實(shí)參變量指向的內(nèi)存對(duì)象;
[0029]根據(jù)函數(shù)摘要信息內(nèi)所有實(shí)參變量指向的內(nèi)存對(duì)象,獲取所述函數(shù)摘要信息所關(guān)注的內(nèi)存對(duì)象。
[0030](三)有益效果
[0031]本發(fā)明公開生成時(shí)序安全屬性類缺陷模式相關(guān)的函數(shù)摘要信息的方法,根據(jù)描述時(shí)序安全屬性類缺陷模式的有限自動(dòng)狀態(tài)機(jī)為被測(cè)程序中的函數(shù)生成函數(shù)摘要信息,通過所述函數(shù)摘要信息進(jìn)行軟件靜態(tài)測(cè)試,從而提高軟件靜態(tài)缺陷的檢測(cè)效率。
【專利附圖】
【附圖說明】
[0032]通過參考附圖會(huì)更加清楚的理解本發(fā)明的特征和優(yōu)點(diǎn),附圖是示意性的而不應(yīng)理解為對(duì)本發(fā)明進(jìn)行任何限制,在附圖中:
[0033]圖1是本發(fā)明生成時(shí)序安全屬性類缺陷模式相關(guān)的函數(shù)摘要信息的方法流程圖;
[0034]圖2是本發(fā)明中采用后向數(shù)據(jù)流分析法為被測(cè)程序中的函數(shù)生成對(duì)應(yīng)的函數(shù)摘要信息的流程圖;
[0035]圖3是本發(fā)明中在被測(cè)程序的函數(shù)調(diào)用點(diǎn)實(shí)例化與函數(shù)對(duì)應(yīng)的函數(shù)摘要信息的流程圖;
[0036]圖4是本發(fā)明中獲取函數(shù)摘要信息所關(guān)注的內(nèi)存對(duì)象的流程圖。
【具體實(shí)施方式】
[0037]下面將結(jié)合附圖對(duì)本發(fā)明的實(shí)施例進(jìn)行詳細(xì)描述。
[0038]本發(fā)明提出了一種生成時(shí)序安全屬性類缺陷模式相關(guān)的函數(shù)摘要信息的方法,如圖1所示,包括以下步驟:
[0039]SlOl判定被測(cè)程序中時(shí)序安全屬性類的缺陷模式,并生成時(shí)序安全屬性類缺陷模式的描述文件;
[0040]S102根據(jù)所述描述文件獲取所述時(shí)序安全屬性類缺陷模式的有限自動(dòng)狀態(tài)機(jī);
[0041]S103根據(jù)所述有限自動(dòng)狀態(tài)機(jī)為所述被測(cè)程序中的函數(shù)生成函數(shù)摘要信息。
[0042]優(yōu)選地,所述根據(jù)所述有限自動(dòng)狀態(tài)機(jī)為所述被測(cè)程序中的函數(shù)生成函數(shù)摘要信息之后,還包括:
[0043]在所述被測(cè)程序的函數(shù)調(diào)用點(diǎn)實(shí)例化與所述函數(shù)對(duì)應(yīng)的函數(shù)摘要信息。
[0044]本發(fā)明使用一種描述時(shí)序安全類缺陷模式的語(yǔ)言-SDDL-Typestate (Static
Defect Description Language for Typestate)定義時(shí)序安全屬性類的缺陷模式;依據(jù)SDDL-Typestate給出的描述時(shí)序安全屬性類缺陷模式的有限自動(dòng)狀態(tài)機(jī),使用后向的數(shù)據(jù)流分析方法,為被測(cè)代碼中的每一個(gè)函數(shù)生成摘要信息;靜態(tài)檢測(cè)時(shí)序安全屬性類缺陷時(shí),在函數(shù)調(diào)用點(diǎn)實(shí)例化函數(shù)摘要信息,從而完成對(duì)摘要信息關(guān)注的內(nèi)存對(duì)象的狀態(tài)遷移。
[0045]SDDL-Typestate是基于XML進(jìn)行設(shè)計(jì)的,具有比較好的結(jié)構(gòu)化特征,其通過關(guān)鍵字和標(biāo)簽對(duì)XML文檔賦予特定的語(yǔ)義信息來描述時(shí)序安全屬性類的缺陷模式,即定義描述時(shí)序安全屬性類缺陷模式的有限自動(dòng)狀態(tài)機(jī)FSM (Finite State Machine)。
[0046]XML Schema文件用于約束SDDL-Typestate的結(jié)構(gòu)及內(nèi)容,具體如下面的Schema
文件所示:
[0047]
【權(quán)利要求】
1.生成時(shí)序安全屬性類缺陷模式相關(guān)的函數(shù)摘要信息的方法,其特征在于,包括以下步驟: 判定被測(cè)程序中時(shí)序安全屬性類的缺陷模式,并生成時(shí)序安全屬性類缺陷模式的描述文件; 根據(jù)所述描述文件獲取所述時(shí)序安全屬性類缺陷模式的有限自動(dòng)狀態(tài)機(jī); 根據(jù)所述有限自動(dòng)狀態(tài)機(jī)為所述被測(cè)程序中的函數(shù)生成函數(shù)摘要信息。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述有限自動(dòng)狀態(tài)機(jī)為所述被測(cè)程序中的函數(shù)生成函數(shù)摘要信息之后,還包括: 在所述被測(cè)程序的函數(shù)調(diào)用點(diǎn)實(shí)例化與所述函數(shù)對(duì)應(yīng)的函數(shù)摘要信息。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述根據(jù)所述有限自動(dòng)狀態(tài)機(jī)為所述被測(cè)程序中的函數(shù)生成函數(shù)摘要信息具體為: 根據(jù)所述有限自動(dòng)狀態(tài)機(jī),采用后向數(shù)據(jù)流分析法為所述被測(cè)程序中的函數(shù)生成對(duì)應(yīng)的函數(shù)摘要信息。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述采用后向數(shù)據(jù)流分析法為所述被測(cè)程序中的函數(shù)生成對(duì)應(yīng)的函數(shù)摘要信息具體包括: 生成所述被測(cè)程序的函數(shù)控制流圖; 逆向遍歷所述函數(shù)控制流圖中的節(jié)點(diǎn); 合并當(dāng)前節(jié)點(diǎn)的后繼節(jié)點(diǎn)傳遞來的數(shù)據(jù)流值; 更新合并后的數(shù)據(jù)流值; 對(duì)更新后的數(shù)據(jù)流值進(jìn)行邏輯表達(dá)式化簡(jiǎn),并根據(jù)預(yù)設(shè)規(guī)則刪除無效的數(shù)據(jù)流值。
5.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述在所述被測(cè)程序的函數(shù)調(diào)用點(diǎn)實(shí)例化與所述函數(shù)對(duì)應(yīng)的函數(shù)摘要信息具體包括: 將所述函數(shù)摘要信息中的型參變量替換為函數(shù)調(diào)用點(diǎn)處的實(shí)參變量; 判斷所述實(shí)參變量是否滿足所述函數(shù)摘要信息中的約束條件; 如果滿足所述約束條件,則獲取所述函數(shù)摘要信息所關(guān)注的內(nèi)存對(duì)象;并根據(jù)所述約束條件實(shí)現(xiàn)所述內(nèi)存對(duì)象的狀態(tài)遷移;如果不滿足所述約束條件,則判定所述函數(shù)摘要信息在所述函數(shù)調(diào)用點(diǎn)不合法,結(jié)束本次操作。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述獲取所述函數(shù)摘要信息所關(guān)注的內(nèi)存對(duì)象具體包括: 獲取所述實(shí)參變量對(duì)應(yīng)的指向信息; 根據(jù)所述指向信息獲取所述實(shí)參變量指向的內(nèi)存對(duì)象; 根據(jù)函數(shù)摘要信息內(nèi)所有實(shí)參變量指向的內(nèi)存對(duì)象,獲取所述函數(shù)摘要信息所關(guān)注的內(nèi)存對(duì)象。
【文檔編號(hào)】G06F11/36GK103914381SQ201410115283
【公開日】2014年7月9日 申請(qǐng)日期:2014年3月25日 優(yōu)先權(quán)日:2014年3月25日
【發(fā)明者】金大海, 王前, 宮云戰(zhàn), 黃俊飛, 王雅文 申請(qǐng)人:北京郵電大學(xué)