×

增量和模块化上下文敏感分析。 (英语) Zbl 1472.68035号

摘要:对大型代码库进行上下文敏感的全局分析可能代价高昂,这可能会使其在软件开发过程中不切实际。然而,在许多情况下,修改很小,并且在几个组件中相互隔离,因此希望尽可能重用以前的分析结果。迄今为止,这是通过增量全局分析固定点算法实现的,这些算法在精细的粒度级别上实现了成本降低,例如程序行的更改。然而,这些细粒度技术既不直接适用于模块化程序,也不是为了利用模块化结构而设计的。本文描述、实现并评估了一种算法,该算法在程序的模块划分上增量地执行高效的上下文敏感分析。实验结果表明,与现有的非模块化细粒度增量分析技术相比,所提出的模块化算法在时间和内存消耗方面都有显著改进。此外,由于所提出的分析信息的模间传播,即使在从头开始分析时,我们的算法也优于传统的模块分析。

MSC公司:

68号30 软件工程的数学方面(规范、验证、度量、需求等)
68N17号 逻辑编程
PDF格式BibTeX公司 XML格式引用

参考文献:

[1] 阿卡尔,U.A.2009。自调整计算:(概述)。《2009年ACM SIGPLAN部分评估和基于语义的程序操作研讨会论文集》,PEPM 2009,佐治亚州萨凡纳,美国,2009年1月19日至20日,Puebla,G.和Vidal,G.编辑,ACM,1-6。
[2] Albert,E.、Arenas,P.、Genaim,S.、Puebla,G.和Zanardini,D.2012。面向对象字节码程序的成本分析。理论计算机科学(编程语言定量方面专刊)413142-159·兹比尔1236.68042
[3] Albert,E.、Correas,J.、Puebla,G.和Román-Díez,G.2012。增量资源使用分析。2012年ACM SIGPLAN部分评估和程序操作研讨会论文集,2012年政治公众人物大会,美国宾夕法尼亚州费城,2012年1月23日至24日。ACM出版社,25-34。
[4] Albert,E.、Gómez-Zamalloa,M.、Hubert,L.和Puebla,G.2007。使用逻辑程序的分析和转换验证Java字节码。在第九届声明性语言实际方面国际研讨会(PADL 2007)上,LNCS,第4354卷。斯普林格·弗拉格,124-139。
[5] Apt,K.R.1990年。逻辑编程入门。《理论计算机科学手册》,J.van Leeuwen,Ed.Elsevier,493-576·Zbl 0900.68136号
[6] Arzt,S.和Bodden,E.2014。修订者:有效更新基于IDE/IFDS的数据流分析,以响应增量程序更改。2014年5月31日至6月7日在印度海得拉巴举行的第36届国际软件工程会议上,Jalote,P.、Briand,L.C.和Van Der Hoek,A.编辑,ACM,288-298。
[7] Banda,G.和Gallagher,J.P.,2009年。CLP中线性混合系统的分析。《基于逻辑的程序合成与转换》,第18届国际研讨会,2008年7月17日至18日,西班牙巴伦西亚,LOPSTR,M.Hanus,Ed.计算机科学讲稿,第5438卷。施普林格,55-70·Zbl 1185.68406号
[8] Björner,N.、Gurfinkel,A.、Mcmillan,K.L.和Rybalchenko,A.2015。用于程序验证的Horn子句求解器。在逻辑和计算领域II——尤里·古雷维奇75岁生日之际的论文,Beklemishev,L.D.,Blass,A.,Dershowitz,N.,Finkbeiner,B.和Schulte,W.编辑,计算机科学讲稿,第9300卷。施普林格,24-51·Zbl 1465.68044号
[9] Björner,N.、Mcmillan,K.L.和Rybalchenko,A.2013。关于解决普遍量化的Horn子句。在SAS,Logozzo,F.和Fähndrich,M.中,LNCS编辑,第7935卷。斯普林格,105-125。
[10] Bossi,A.,Gabbrieli,M.,Levi,G.和Meo,M.1994。逻辑程序的组合语义。理论计算机科学122,1,2,3-47·Zbl 0801.68110号
[11] Braem,C.、Charlier,B.L.、Modart,S.和Hentenryck,P.V.1994。Prolog的基数分析。在逻辑编程国际研讨会论文集上。麻省理工学院出版社,纽约州伊萨卡,457-471。
[12] Bruynooghe,医学博士,1991年。逻辑程序抽象解释的实用框架。逻辑编程杂志10,91-124·兹比尔0717.68010
[13] Bueno,F.、De La Banda,M.G.、Hermenegildo,M.V.、Marriott,K.、Puebla,G.和Stuckey,P.2001。模块间分析和优化编译的模型。在基于逻辑的程序合成和转换中。LNCS,第2042卷。施普林格·弗拉格,86-102·Zbl 1018.68501号
[14] Burke,M.1990年。一种基于间隔的方法,用于彻底和增量的过程间数据流分析。美国计算机学会程序设计语言与系统汇刊12,3,341-395。
[15] Calcagno,C.和Distefano,D.2011年。推断:一种自动程序验证器,用于C程序的内存安全。2011年4月18日至20日在美国加利福尼亚州帕萨迪纳举行的2011年美国国家航空航天局正式方法第三届国际研讨会。Proceedings,Bobaru,M.G.,Havelund,K.,Holzmann,G.J.和Joshi,R.,Eds.计算机科学讲义,第6617卷。斯普林格,459-465。
[16] Carroll,M.和Ryder,B.1988。通过支配者和属性更新进行增量数据流分析。在第15届ACM程序设计语言原理研讨会上。ACM出版社,274-284。
[17] Codish,M.、Debray,S.和Giacobazzi,R.1993。模块化逻辑程序的组成分析。在1993年美国计算机学会SIGPLAN-SIGACT编程语言原理研讨会上。南卡罗来纳州查尔斯顿市ACM,邮编:451-464。
[18] Conway,C.L.、Namjoshi,K.S.、Dams,D.和Edwards,S.A.2005。安全特性过程间分析的增量算法。《计算机辅助验证》,第17届国际会议,CAV 2005,英国苏格兰爱丁堡,2005年7月6日至10日,Etessami,K.和Rajamani,S.K.编辑,《计算机科学讲稿》,第3576卷。施普林格,449-461·Zbl 1081.68615号
[19] 库珀,K.和肯尼迪,K.1984。高效计算对流不敏感的过程间摘要信息。在ACM SIGPLAN编译器构造研讨会上(SIGPLAN通知,第19卷(6))。ACM出版社,247-258。
[20] Correas,J.、Puebla,G.、Hermenegildo,M.V.和Bueno,F.2006。模块化程序上下文敏感分析实验。第15届基于逻辑的程序合成与转换国际研讨会(LOPSTR'05)。LNCS,第3901卷。斯普林格·弗拉格,163-178年。
[21] 库索特P.和库索特R.1977。抽象解释:通过构造或近似不动点对程序进行静态分析的统一格模型。在ACM编程语言原理研讨会(POPL'77)上。ACM出版社,238-252。
[22] 库索特P.和库索特R.2002。模块化静态程序分析,特邀论文。在第十一届国际编译器建设大会上,CC 2002。LNCS,第2304卷。斯普林格,159-178·Zbl 1051.68624号
[23] Cousot,P.、Cousot、R.、Feret,J.、Miné,A.、Mauborgne,L.和Rival,X.2009。为什么阿斯特雷要扩大规模?系统设计中的形式化方法(FMSD)35,3,229-264·Zbl 1185.68241号
[24] De Angelis,E.、Fioravanti,F.、Pettorossi,A.和Proietti,M.2014。VeriMAP:通过转换验证程序的工具。2014年4月5日至13日,在法国格勒诺布尔举行的欧洲软件理论与实践联合会议上,于2014年第20届国际会议《系统构建与分析的工具和算法》(Tools and Algorithms for the Construction and Analysis of Systems)中发表。《程序集》,《计算机科学讲义》,第8413卷。施普林格,568-574。
[25] De Moura,L.M.和Björner,N.2008。Z3:高效的SMT求解器。《系统构建和分析的工具和算法》,第14届国际会议,TACAS 2008,Ramakrishnan,C.R.和Rehof,J.,Eds.计算机科学讲稿,第4963卷。施普林格,337-340。
[26] Debray,S.、Lopez-Garcia,P.和Hermenegildo,M.V.1997。逻辑程序的非故障分析。1997年逻辑程序设计国际会议。麻省理工学院出版社,马萨诸塞州剑桥,马萨诸塞诸塞州坎布里奇,48-62。
[27] Dumortier,V.、Janssens,G.、Simoens,W.和Garca De La Banda,M.1993。为CLP语言组合了确定性和自由抽象。在逻辑程序合成和转换研讨会上。
[28] Eichberg,M.,Kahl,M..,Saha,D.,Mezini,M.和Ostermann,K.2007。基于Prolog的静态分析的自动增量。柏林施普林格,海德堡,109-123。
[29] Fähndrich,M.和Logozzo,F.2011。具有抽象解释的静态合同检查。2010年面向对象软件形式验证国际会议论文集,FoVeOOS’10。《计算机科学讲义》,第6528卷。斯普林格·弗拉格,柏林,海德堡,10-30·Zbl 1308.68033号
[30] Fedyukovich,G.、Gurfinkel,A.和Sharygina,N.2016。通过抽象模拟实现属性定向等价。在计算机辅助验证国际会议上。施普林格,433-453·Zbl 1411.68065号
[31] Gallagher,J.、Hermenegildo,M.V.、Kafle,B.、Klemen,M.、Lopez-Garcia,P.和Morales,J.2020。从大步骤到小步骤语义,再到解释器专业化(特邀论文)。《第八届核查与计划转换国际研讨会论文集》(VPT 2020)。理论计算机科学电子论文集(EPTCS)。开放出版协会(OPA),50-65。与ETAPS 2020合作。
[32] Grebenshchikov,S.、Gupta,A.、Lopes,N.P.、Popeea,C.和Rybalchenko,A.2012。HSF(C):基于Horn子句-(竞争贡献)的软件验证器。在TACAS,Flanagan,C.和König,B.中,LNCS编辑,第7214卷。施普林格,549-551。
[33] Gurfinkel,A.、Kahsai,T.、Komuravelli,A.和Navas,J.A.2015。SeaHorn验证框架。计算机辅助验证-第27届国际会议,2015年7月18日至24日,美国加利福尼亚州旧金山,CAV 2015,会议记录,第一部分,LNCS,第9206卷。施普林格,343-361。和Gallagher,J.P.,2006年。通过逻辑编程对PIC程序进行抽象解释。2006年,第六届IEEE源代码分析和操作国际研讨会论文集。IEEE计算机学会,184-196。
[34] Hermenegildo,M.V.、Bueno,F.、Carro,M.、Lopez-Garcia,P.、Mera,E.、Morales,J.和Puebla,G.2012。Ciao及其设计理念概述。逻辑程序设计的理论与实践12,1-2,219-252·Zbl 1244.68019号
[35] Hermenegildo,M.V.,Puebla,G.,Bueno,F.和Lopez-Garcia,P.2005。使用抽象解释(和Ciao系统预处理器)集成程序调试、验证和优化。计算机程序科学58,1-2,115-140·Zbl 1076.68540号
[36] Hermenegildo,M.V.、Puebla,G.、Marriott,K.和Stuckey,P.1995。逻辑程序的增量分析。在逻辑程序设计国际会议上。麻省理工学院出版社,797-811。
[37] Hermenegildo,M.V.、Puebla,G.、Marriott,K.和Stuckey,P.2000。约束逻辑程序的增量分析。美国计算机学会程序设计语言与系统汇刊22,2,187-223。
[38] Jaffar,J.和Lassez,J.-L.1987。约束逻辑编程。在ACM编程语言原理研讨会上。美国医学会,111-119。
[39] Jaffar,J.、Murali,V.、Navas,J.A.和Santosa,A.E.2012。TRACER:用于验证的符号执行工具。《计算机辅助验证——第24届国际会议》,CAV 2012,美国加州伯克利,2012年7月7日至13日,《会议记录》,Madhusudan,P.和Seshia,S.A.编辑,《计算机科学讲义》,第7358卷。斯普林格,758-766·Zbl 1478.68164号
[40] Kafle,B.、Gallagher,J.P.和Morales,J.F.,2016年。RAHFT:使用抽象解释和有限树自动机验证Horn子句的工具。《计算机辅助验证——第28届国际会议》,2016年7月17日至23日,加拿大安大略省多伦多市,CAV 2016,第一部分,Chaudhuri,S.和Farzan,A.编辑,《计算机科学讲义》,第9779卷。施普林格,261-268。
[41] 卡恩,G.1987。自然语义。在Brandenburg,F.、Vidal-Naque,G.和Wirsing,M.编的《计算机科学讲义》,第247卷。施普林格,22-39岁·Zbl 0635.68007号
[42] Kelly,A.、Marriott,K.、Söndergaard,H.和Stuckey,P.1997。约束逻辑程序的通用面向对象增量分析器。第20届澳大利亚计算机科学会议论文集,92-101。
[43] Khedker,U.P.和Karkare,B.2008。过程间数据流分析中的效率、准确性、简单性和通用性:恢复经典的调用字符串方法。2008年3月29日至4月6日,匈牙利布达佩斯,第17届国际编译大会,L.J.Hendren,Ed.计算机科学讲稿,第4959卷。施普林格,213-228。
[44] King,A.,Lu,L.和Genaim,S.2006。检测Prolog程序中的确定性。《逻辑编程》,第22届国际会议,ICLP 2006,西雅图,华盛顿州,美国,2006年8月17日至20日,Proceedings,Etalle,S.和Truszczynski,M.,Eds.《计算机科学讲义》,第4079卷。施普林格,132-147·Zbl 1131.68380号
[45] Krall,A.和Berger,T.1995a。用维也纳抽象机对Prolog进行增量全局编译。在逻辑程序设计国际会议上。麻省理工学院出版社。
[46] Krall,A.和Berger,T.1995b。VAMAI-用于Prolog增量全局数据流分析的抽象机器。在ICLP’95逻辑语言抽象解释会后研讨会上,De La Banda,M.G.、Janssens,G.和Stuckey,P.,东京科技大学编辑,东京,80-91。
[47] Liqat,U.、Georgiou,K.、Kerrison,S.、Lopez Garcia,P.、Hermenegildo,M.V.、Gallagher,J.P.和Eder,K.2016。在不同软件级别推断参数能源消耗函数:ISA vs.LLVM IR。资源分析的基础和实际方面:第四届国际研讨会,FOPARA 2015,英国伦敦,2015年4月11日。修订论文选集,Eekelen,M.V.和Lago,U.D.,Eds.计算机科学讲稿,第9964卷。施普林格,81-100。
[48] Liqat,U.、Kerrison,S.、Serrano,A.、Georgiou,K.、Lopez-Garcia,P.、Grech,N.、Hermenegildo,M.V.和Eder,K.2014。基于XMOS ISA级模型的程序能耗分析。《基于逻辑的程序合成和转换》,第23届国际研讨会,2013年LOPSTR,修订论文集,Gupta,G.和Peña,R.编辑,计算机科学讲义,第8901卷。施普林格,72-90。
[49] 劳埃德,J.1987。逻辑编程基础,第二扩展版。斯普林格·Zbl 0668.68004号
[50] Lopez-Garcia,P.、Bueno,F.和Hermenegildo,M.V.,2010年。使用模式和类型分析对逻辑程序的确定性和互斥性进行自动推理。新一代计算28,2,117-206·Zbl 1192.68130号
[51] Lopez-Garcia,P.、Darmawan,L.、Klemen,M.、Liqat,U.、Bueno,F.和Hermenegildo,M.V.2018。通过翻译成Horn子句和能源消耗应用程序进行基于时间间隔的资源使用验证。逻辑编程理论与实践,验证用计算逻辑专刊18,2,167-223。arXiv:1803.04451·Zbl 1478.68170号
[52] Madsen,M.、Yee,M.和Lhoták,O.2016年。从Datalog到FLIX:一种用于格上不动点的声明性语言。第37届ACM SIGPLAN编程语言设计与实现会议记录,PLDI 2016,美国加利福尼亚州圣巴巴拉,2016年6月13日至17日,Krintz,C.和Berger,E.,编辑ACM,194-208。
[53] 马洛·T和莱德,B.1990。一种高效的增量数据流分析混合算法。在第17届ACM程序设计语言原理研讨会上。ACM出版社,184-196年。
[54] Marriott,K.和Stuckey,P.J.1998。带约束的编程:简介。麻省理工学院出版社·Zbl 0935.68098号
[55] Méndez-Lojo,M.,Navas,J.和Hermenegildo,M.2007。一种灵活的(C)基于LP的面向对象程序分析方法。第17届基于逻辑的程序合成与转换国际研讨会(LOPSTR 2007)。计算机科学讲义,第4915卷。斯普林格·弗拉格,154-168·Zbl 1179.68030号
[56] Muthukumar,K.和Hermenegildo,M.1990。推导逻辑程序自顶向下抽象解释的不动点计算算法。技术报告ACT-DC-153-90,微电子和计算机技术公司(MCC),德克萨斯州奥斯汀78759。4月。
[57] Muthukumar,K.和Hermenegildo,M.1991。通过抽象解释联合确定程序变量的共享性和自由性。在国际逻辑编程会议(ICLP 1991)。麻省理工学院出版社,49-63。
[58] Muthukumar,K.和Hermenegildo,M.1992。使用抽象解释的变量依赖的编译时派生。逻辑编程杂志13,2/3,315-347·Zbl 0776.68032号
[59] Navas,J.、Méndez-Lojo,M.和Hermenegildo,M.2008。Java字节码应用程序能量消耗的安全上限推断。第六届NASA兰利正式方法研讨会(LFM 08),29-32。扩展摘要。
[60] Navas,J.、Méndez-Lojo,M.和Hermenegildo,M.V.2007。一个高效的、对上下文和路径敏感的Java程序分析框架。在2007年FTfJP第九届Java类程序正式技术研讨会上。
[61] Navas,J.、Méndez-Lojo,M.和Hermenegildo,M.V.2009。Java字节码的用户定义资源使用边界分析。字节码语义、验证、分析和转换研讨会论文集(Bytecode’09)。理论计算机科学电子笔记,第253卷。爱思唯尔-北荷兰,65-82。
[62] Perez-Carrasco,V.、Klemen,M.、Lopez-Garcia,P.、Morales,J.和Hermenegildo,M.V.2020。通过参数资源分析对智能合约进行成本分析。第27届静态分析研讨会(SAS 2020)会议记录。LNCS公司。斯普林格·弗拉格。
[63] 普洛金,G.1981。操作语义的结构方法。丹麦奥胡斯大学计算机科学系DAIMI FN-19技术报告。
[64] 普洛金,G.D.2004。操作语义的结构方法。逻辑与代数编程杂志60-61,17-139·Zbl 1082.68062号
[65] Pollock,L.和Soffa,M.1989。迭代数据流分析的增量版本。IEEE软件工程学报15,12,1537-1549。
[66] Puebla,G.、Correas,J.、Hermenegildo,M.V.、Bueno,F.、Garca De La Banda,M.、Marriott,K.和Stuckey,P.J.,2004年。模块化程序上下文敏感分析的通用框架。计算逻辑程序开发,基于逻辑的程序开发十年研究进展,Bruynooghe,M.和Lau,K.,编辑LNCS,第3049卷。德国海德堡施普林格-弗拉格,234-261·兹比尔1080.68557
[67] Puebla,G.和Hermenegildo,M.V.1996。逻辑程序增量分析的优化算法。国际静态分析研讨会(SAS 1996)。计算机科学讲义,第1145卷。施普林格·弗拉格,270-284·Zbl 1482.68075号
[68] Ramalingam,G.和Reps,T.1993。增量计算的分类书目。在1993年美国计算机学会SIGPLAN-SIGACT编程语言原理研讨会上。南卡罗来纳州查尔斯顿ACM。
[69] Reps,T.W.,Horwitz,S.和Sagiv,S.1995。通过图形可达性进行精确的过程间数据流分析。在POPL,49-61。
[70] 罗宾逊,J.A.1965。基于分辨原理的面向机器的逻辑。ACM12,23,23-41杂志·兹伯利0139.12303
[71] Rosen,B.1981。线性成本有时是二次的。在第八届ACM程序设计语言原理研讨会上。ACM出版社,117-124。
[72] Rothenberg,B.、Dietsch,D.和Heizmann,M.2018。使用跟踪抽象进行增量验证。静态分析-第25届国际研讨会,SAS 2018,德国弗莱堡,2018年8月29日至31日,A.Podelski,Ed.计算机科学讲稿,第11002卷。施普林格,364-382·Zbl 1511.68168号
[73] 莱德,B.1988。增量数据流分析算法。美国计算机学会程序设计语言与系统汇刊10,1,1-50。
[74] Ryder,B.,Marlowe,T.和Paull,M.1988年。增量迭代的条件:示例和反例。计算机程序科学11,1,1-15·Zbl 0661.68014号
[75] Sery,O.、Fedyukovich,G.和Sharygina,N.2012。通过基于插值的函数摘要进行增量升级检查。《计算机辅助设计的形式方法》,FMCAD 2012,英国剑桥,2012年10月22日至25日,Cabodi,G.和Singh,S.编辑,IEEE,114-121。
[76] Sharir,M.和Pnueli,A.1978。跨过程数据流分析的两种方法。纽约大学。科朗数学科学研究所。
[77] 斯威夫特,T.2014。支持知识表示和推理的增量表。逻辑程序设计的理论与实践14,4-5,553-567·Zbl 1307.68023号
[78] Szabó,T.、Erdweg,S.和Voelter,M.2016。Inca:用于定义增量程序分析的DSL。第31届IEEE/ACM自动化软件工程国际会议论文集,ASE 2016,新加坡,2016年9月3-7日,Lo,D.,Apel,S.和Khurshid,S.,Eds.ACM,320-331。
[79] Thakur,M.和Nandivada,V.K.2020。很好地混合上下文:最近在扩展上下文敏感度方面取得的进展带来的机会。第29届编译器构造国际会议论文集。CC 2020。美国纽约州纽约市计算机协会,27-38。
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。