×

一种新的指针分析空间及其在错误查找中的应用。 (英语) Zbl 1209.68313号

概要:当今程序的规模在不断增长,其中包含的错误数量也在不断增加。单独的测试很少能够清除所有的错误,许多错误潜伏在难以测试的角落案例中。另一个重要的选择是静态分析,在静态分析中,不需要运行程序就可以检查程序的正确性属性。虽然静态分析无法捕获所有错误,但它可以捕获许多测试会忽略的微妙问题。
我们提出了一个新的指针分析抽象空间,这是C语言和类似语言静态分析的重要组成部分。我们确定了任何抽象的两个主要组件,即对语句顺序建模和如何对条件建模,然后提出了一个新的程序模型,使我们能够在此空间中探索不同的抽象。我们的赋值取图表示对内存的读取和写入,而不是传统的指向关系的点,并导致可以在任何上下文中使用的简明函数摘要。它的灵活性支持许多新的分析技术,并在精度和速度之间进行了不同的权衡。
我们给出了抽象空间的细节,解释了现有算法的适用范围,描述了基于赋值取图的各种新分析算法,最后给出的实验结果表明,与传统的流敏感分析相比,我们的语句排序流软件抽象运行速度更快,结果更精确。

MSC公司:

60年第68季度 规范和验证(程序逻辑、模型检查等)
68N99型 软件理论
PDF格式BibTeX公司 XML格式引用
全文: 内政部 内政部

参考文献:

[1] Linux内核项目,网址:http://www.kernel.org
[2] M.Hicks,GM致软件供应商:降低复杂性,http://www.eweek.com/c/a/Enterprise-Applications/GM-to-Software-Vendors-Cut-the-Complexity公司/(2004年10月)
[3] R.Lockridge,错误会吓跑新Windows 2000的用户吗?,http://archives.cn.com/2000/TECH/computing/02/17/windows.2000(2000年2月)
[4] Misra,S.C。;Bhavsar,V.C.:选定软件度量和潜在错误敏感性之间的关系:提高质量的指南,计算机科学讲稿266724-732(2003)
[5] Myers,G.:软件测试的艺术(2004)·Zbl 0782.68002号
[6] 克拉克,E.M。;格伦伯格,O。;Peled,D.A.:模型检验(1999)·Zbl 0847.68063号
[7] P.Godefroid,《使用Verisoft对编程语言进行模型检查》,载于:《编程语言原理学报》,POPL,巴黎,法国,1997年,第174-186页。http://citeseer.ist.psu.edu/godefroid97model.html
[8] 布兰切特,B。;库索特,P。;库索特,R。;Feret,J。;Mauborgne,L。;米内,A。;Monniaux博士。;Rival,X.:大型安全关键软件的静态分析器,196-207(2003)
[9] T.Jim,G.Morrisett,D.Grossman,M.Hicks,J.Cheney,Y.Wang,《旋风:C的一种安全方言》,收录于:《USENIX年度技术会议论文集》,加利福尼亚州蒙特雷,2002年,第275-288页
[10] R.DeLine,M.Fähndrich,《在低级软件中实施高级协议》,收录于:《程序语言设计与实现学报》,PLDI,Snowbird,犹他州,2001年,第59–69页
[11] C.Flanagan、K.R.M.Leino、M.Lillibridge、G.Nelson、J.B.Saxe、R.Stata,《Java的扩展静态检查》,摘自:《程序语言设计与实现学报》,PLDI,德国柏林,2002年,第234–245页
[12] 恩格尔,D。;Musuvathi,M.:静态分析与模型检查以发现错误,计算机科学课堂讲稿2937(2004)
[13] D.Wagner,J.S.Foster,E.A.Brewer,A.Aiken,自动检测缓冲区溢出漏洞的第一步,载于:网络和分布式系统安全研讨会论文集,NDSS,加利福尼亚州圣地亚哥,2000年,第3-17页
[14] M.Buss,《模块化错误发现的基于摘要的指针分析框架》,博士论文,哥伦比亚大学,美国纽约,cUCS–013–08(2008年2月)
[15] M.Buss,D.Brand,V.Sreedhar,S.A.Edwards,《使用赋值蚀刻图的灵活指针分析》,载于:《应用计算研讨会论文集》,SAC,Fortaleza,Ceará,巴西,2008年,第234–239页。http://doi.acm.org/10.1145/1363686.1363746
[16] M.Emami,R.Ghiya,L.J.Hendren,在存在函数指针的情况下分析上下文敏感的过程间点,摘自:《程序语言设计与实现学报》,PLDI,佛罗里达州奥兰多,1994年,第242-256页
[17] W.Landi,B.Ryder,《过程间指针混淆的安全近似算法》,摘自:《程序语言设计与实现学报》,PLDI,加利福尼亚州旧金山,1992年,第235-248页
[18] B.Blanchet,面向对象语言的逃逸分析:Java应用,摘自:面向对象编程、系统、语言和应用会议论文集,OOPSLA,丹佛,科罗拉多州,1999年,第20–34页
[19] Cherem,S。;Rugina,R.:建筑轻量级方法总结的实用逃逸和效果分析,计算机科学课堂讲稿4420,172-186(2007)·兹比尔1132.68467
[20] J.-D.Choi、M.Gupta、M.Serrano、V.Sreedhar、S.Midkiff,Java逃逸分析,摘自:面向对象编程、系统、语言和应用会议论文集,OOPSLA,科罗拉多州丹佛,1999年,第1-19页
[21] M.Sagiv,T.Reps,R.Wilhelm,用破坏性更新解决语言中的形状分析问题,摘自:《程序设计语言原理学报》,POPL,佛罗里达州圣彼得堡海滩,1996年,第16-31页
[22] 威廉·R。;萨吉夫,S。;Reps,T.W.:形状分析,2027年计算机科学讲稿,1-17(2000)
[23] Burke,M.:基于间隔的详尽和增量过程间数据流分析方法,ACM编程语言和系统事务12,第3期,341-395(1990)
[24] D.Chase,M.Wegman,F.Zadek,指针和结构分析,摘自:《程序语言设计与实现学报》,PLDI,White Plains,纽约,1990年,第296–310页
[25] J.Choi,M.Burke,P.Carini,《指针诱导别名和副作用的高效流敏感过程间计算》,收录于:《程序设计语言原理学报》,波普尔出版社,查尔斯顿,南卡罗来纳州,1993年,第232–245页
[26] Aho,A.V。;Lam,M。;Sethi,R。;Ullman,J.D.:编译器、原理、技术和工具(2006)·Zbl 1155.68020号
[27] L.O.Andersen,C编程语言的程序分析和专业化,博士论文,哥本哈根大学DIKU(1994)
[28] J.Banning,《发现过程调用副作用和变量别名的有效方法》,收录于:《程序设计语言原理学报》,POPL,1979年,第29-41页
[29] M.伯克。;Carini,P。;Choi,J。;Hind,M.:指针存在下的流敏感过程间别名分析,计算机科学讲义1473,234-250(1995)
[30] K.Cooper,K.Kennedy,线性时间内的过程间副作用分析,收录于《程序语言设计与实现学报》,PLDI,佐治亚州亚特兰大,1988年,第487-506页
[31] M.Das,《基于统一的指针分析与定向赋值》,载于:《程序语言设计与实现学报》,PLDI,加拿大不列颠哥伦比亚省温哥华,2000年,第35-46页。http://research.microsoft.com/manuvir/homepage.html
[32] B.Steensgaard,《指向几乎线性时间的分析》,载于:《程序设计语言原理学报》,佛罗里达州圣彼得堡海滩,1996年,第32-41页。http://research.microsoft.com/rusa/papers.html
[33] M.Shapiro,S.Horwitz,《快速准确的流敏感点分析》,摘自:《程序设计语言原理学报》,POPL,法国巴黎,1997年,第1-14页
[34] S.Zhang,B.Ryder,W.Landi,《指针混叠的程序分解:走向实用分析的一步》,摘自:《软件工程基础学报》,FSE,加利福尼亚州旧金山,1996年,第81–92页
[35] Hind,M。;M.伯克。;Carini,P。;Choi,J.-D.:跨过程指针别名分析,编程语言和系统上的ACM事务21,第4期,848-894(1999)
[36] Hind,M。;Pioli,A.:《评估流敏感性对指针别名分析的影响》,计算机科学讲义1503,57-81(1998)
[37] P.Stocks,B.Ryder,W.Landi,S.Zhang,《修改侧效应问题的流量和上下文敏感性比较》,摘自:《软件测试与分析国际研讨会论文集》,佛罗里达州清水海滩ISSTA,1998年,第21–31页
[38] S.Zhang,B.Ryder,W.Landi,《指针混叠的组合分析实验》,摘自:《软件工具与工程程序分析研讨会论文集》,PASTE,加拿大魁北克省蒙特利尔,1998年,第11-18页
[39] 尼尔森,F。;尼尔森,H.R。;Hankin,C.:《程序分析原理》(1999)·兹比尔0932.68013
[40] R.P.Wilson,M.S.Lam,C程序的高效上下文敏感指针分析,收录于:《程序语言设计与实现学报》,PLDI,加州拉荷拉,1995年,第1-12页。http://suif.stanford.edu
[41] D.Brand,M.Buss,V.Sreedhar,《基于证据的分析和推断缺陷检测的前提条件》,载于《国际软件维护会议论文集》,ICSM,法国巴黎,2007年,第44-53页
[42] R.Chatterjee,B.Ryder,W.Landi,相关上下文推断,摘自:《程序设计语言原则会议录》,德克萨斯州圣安东尼奥,1999年,第133-146页
[43] E.M.Nystrom、H.-S.Kim、W.mei、W.Hwu,基于自下而上和自上而下上下文敏感摘要的指针分析,摘自:《静态分析研讨会论文集》,SAS,意大利维罗纳,2004年,第165-180页·Zbl 1104.68421号 ·数字对象标识代码:10.1007/b99688
[44] P.Cousot,R.Cousot:《抽象解释:通过构造或近似不动点对程序进行静态分析的统一格模型》,载于:《程序设计语言原理学报》(POPL),加利福尼亚州洛杉矶,1977年,第238–252页。网址:http://www.dmi.ens.fr/库索特
[45] D.Brand,F.Krohm,《软件静态分析的算术推理》,技术代表RC-22905,IBM研究部,T.J.Watson研究中心,纽约州约克敦高地,10598(2003年10月)
[46] D.Brand,软件伪造者,摘自:《软件可靠性工程学报》(ISSRE),加利福尼亚州圣何塞,2000年,第174-185页
[47] B.Hardekopf,C.Lin,《蚂蚁和蚱蜢:数百万行代码的快速准确指针分析》,摘自:《程序语言设计与实现学报》,PLDI,加利福尼亚州圣地亚哥,美国,2007年,第290-299页
[48] C.Lattner,A.Lenharth,V.Adve,《使上下文敏感点——堆克隆分析在现实世界中切实可行》,摘自:《程序语言设计与实现学报》,PLDI,加州圣地亚哥,美国,2007年,第278–289页
[49] M.Sridharan,R.Bodik,《基于精炼的上下文敏感点对Java的分析》,摘自:《程序语言设计与实现学报》,PLDI,加拿大渥太华,2006年,第387-400页
[50] 布伦斯,G。;Chandra,S.:《寻找分析点》,IEEE软件工程事务29,第10期,883-897(2003)
[51] M.Sridharan、D.Gopan、L.Shan、R.Bodik,《Java需求驱动点分析》,摘自:面向对象编程、系统、语言和应用会议论文集,OOPSLA,加利福尼亚州圣地亚哥,2005年,第59-76页
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。