计算机研究与发展
計算機研究與髮展
계산궤연구여발전
JOURNAL OF COMPUTER RESEARCH AND DEVELOPMENT
2012年
9期
1852-1862
,共11页
静态分析%缺陷检测%域敏感%指向分析%区间运算
靜態分析%缺陷檢測%域敏感%指嚮分析%區間運算
정태분석%결함검측%역민감%지향분석%구간운산
静态分析由于并不执行源代码,导致无法获取变量在实际运行中的取值,进而对一些和变量取值相关的缺陷检测带来了一定困难.利用符号执行和区间运算技术,虽然可以模拟程序实际执行时变量的可能取值范围,但对于结构体、数组等,由于不能对其成员进行独立描述,导致数据流无法支持域敏感分析,对和其成员变量相关的缺陷的检测难以实现,产生很多漏报.基于域敏感指向分析的区间运算模型,在域敏感指向分析模型的基础上对其进行了改进,将复杂数据类型拆分成独立的成员变量进行分析,并提出一种关联抽象取值集的类型系统,该系统可以保守的描述程序在动态执行时变量的可能取值.结合赋值语句的抽象语法定义,给出了该类型系统在数据流计算时的具体推导算法,并将其应用在缺陷检测系统(DTSGCC和DTSCPP)中.选用DTSCPP作为实验平台,对6个C++开源工程进行了测试,并对其数据进行了统计分析,结果表明该方法可以减少漏报,且测试效率与非域敏感版本相当.
靜態分析由于併不執行源代碼,導緻無法穫取變量在實際運行中的取值,進而對一些和變量取值相關的缺陷檢測帶來瞭一定睏難.利用符號執行和區間運算技術,雖然可以模擬程序實際執行時變量的可能取值範圍,但對于結構體、數組等,由于不能對其成員進行獨立描述,導緻數據流無法支持域敏感分析,對和其成員變量相關的缺陷的檢測難以實現,產生很多漏報.基于域敏感指嚮分析的區間運算模型,在域敏感指嚮分析模型的基礎上對其進行瞭改進,將複雜數據類型拆分成獨立的成員變量進行分析,併提齣一種關聯抽象取值集的類型繫統,該繫統可以保守的描述程序在動態執行時變量的可能取值.結閤賦值語句的抽象語法定義,給齣瞭該類型繫統在數據流計算時的具體推導算法,併將其應用在缺陷檢測繫統(DTSGCC和DTSCPP)中.選用DTSCPP作為實驗平檯,對6箇C++開源工程進行瞭測試,併對其數據進行瞭統計分析,結果錶明該方法可以減少漏報,且測試效率與非域敏感版本相噹.
정태분석유우병불집행원대마,도치무법획취변량재실제운행중적취치,진이대일사화변량취치상관적결함검측대래료일정곤난.이용부호집행화구간운산기술,수연가이모의정서실제집행시변량적가능취치범위,단대우결구체、수조등,유우불능대기성원진행독립묘술,도치수거류무법지지역민감분석,대화기성원변량상관적결함적검측난이실현,산생흔다루보.기우역민감지향분석적구간운산모형,재역민감지향분석모형적기출상대기진행료개진,장복잡수거류형탁분성독립적성원변량진행분석,병제출일충관련추상취치집적류형계통,해계통가이보수적묘술정서재동태집행시변량적가능취치.결합부치어구적추상어법정의,급출료해류형계통재수거류계산시적구체추도산법,병장기응용재결함검측계통(DTSGCC화DTSCPP)중.선용DTSCPP작위실험평태,대6개C++개원공정진행료측시,병대기수거진행료통계분석,결과표명해방법가이감소루보,차측시효솔여비역민감판본상당.