×

Java字节码本地化分析的魔法集。 (英语) Zbl 1244.68052号

本文开发了一种程序转换技术,可以很好地将基于指称语义的静态分析范围扩展到Java字节码的内部行为特征。这克服了此类静态分析的主要局限性,传统上,此类静态分析只支持代码行为的功能建模,即输入/输出。所提议的技术基于一种魔法集转换,类似于已经用于函数和逻辑语言的转换,它在不改变程序语义的情况下向程序添加新的代码块(只有字节码块的结构被转换,而字节码本身保持不变)。这些块的功能行为捕获了程序在插入点的内部行为。根据操作语义证明了转换的正确性,并在此基础上定义了转换程序的等价指称语义。然后利用所获得的语义导出五种类型的静态分析,即对共享、循环性、空性、类初始化和大小。转换和派生分析是在JULIA指称分析器的上下文中实现和实验的。
关于手稿组织,它几乎是独立的。第2节和第3节介绍了所提议的魔法集变换。第4节深入描述了Java字节码的操作语义,在此基础上,第5节证明了所设计的转换是正确的。第6节详细介绍了指称语义,第7节证明了它与第4节的操作语义等价。第8节详细介绍了指称语义的空抽象。所报道的材料使读者能够理解指称语义在实践中是如何被利用的,尽管我希望看到它应用于一个小而完整的例子。我认为,这本可以在不影响论文长度的情况下完成,例如,牺牲第6.1节,其中包含一些与Java相关的技术细节。我还认为,包括一个涉及不满足上升链条件的抽象域的具体示例,并为其显示合适的加宽运算符,将有助于理解此类问题。第8节中报告的结果以及JULIA简单web界面的可用性证明了该方法的有效性及其效率。
然而,总的来说,这是一篇写得很好、很值得一读的论文。特别是,我赞赏它的完整性,以及引入、发展和讨论这样一个复杂主题的渐进方式,使它很容易被非专业读者阅读。
Java字节码的指称语义使人能够进行不同类型的静态分析,其优点超越了编译“纯”Java源代码获得的字节码。在过去几年中,引入了其他编程语言,它们的源代码编译以Java字节码为目标,即Clojure、Groovy和最近的Scala。指称语义可以很容易地进行定制,只需很少或根本不做任何努力,就可以处理这些语言。

MSC公司:

68问题55 计算理论中的语义学
68号30 软件工程的数学方面(规范、验证、度量、需求等)
68甲19 其他编程范式(面向对象、顺序、并发、自动等)
PDF格式BibTeX公司 XML格式引用
全文: 内政部 哈尔

参考文献:

[1] Aho,A.V.、Sethi,R.、Ullman,J.D.:编译器、原理、技术和工具。Addison-Wesley,雷丁(1986)·Zbl 1155.68020号
[2] Albert,E.,Arenas,P.,Codish,C.,Genaim,S.,Puebla,G.,Zanardini,D.:Java字节码的终止分析。收录:Barthe,G.,de Boer,F.S.(编辑)Proc。第十届IFIP WG 6.1国际会议,FMOODS’08,挪威奥斯陆,2008年6月。《计算机科学讲义》,第5051卷,第2-18页。柏林施普林格出版社(2008)
[3] Armstrong,T.,Marriott,K.,Schachte,P.,Söndergaard,H.:依赖分析的两类布尔函数。科学。计算。程序。31(1), 3–45 (1998) ·Zbl 0942.68018号 ·doi:10.1016/S0167-6423(96)00039-1
[4] Bagnara,R.,Hill,P.M.,Zaffanella,E.:Parma多面体库:为硬件和软件系统的分析和验证提供一整套数值抽象。科学。计算。程序。72(1–2), 3–21 (2008) ·doi:10.1016/j.scico.2007.08.001
[5] Bancilhon,F.,Maier,D.,Sagiv,Y.,Ullman,J.:实现逻辑程序的魔术集和其他奇怪的方法。In:程序。第五届ACM数据库系统原理研讨会,第1-15页(1986)
[6] Barnett,M.,Chang,B.-Y.E.,DeLine,R.,Jacobs,B.,Boogie,K.R.M.Leino:面向对象程序的模块化可重用验证器。收录人:de Boer,F.S.,Bonsangue,M.M.,Graf,S.,de Roever,W.P.(编辑)Proc。第四届组件和对象形式化方法国际研讨会(FMCO'05),荷兰阿姆斯特丹,2005年11月。计算机科学课堂讲稿,第4111卷,第364-387页。柏林施普林格出版社(2005)
[7] Barnett,M.、Fahndrich,M.和Logozzo,F.:Foxtrot和Clousot:语言不可知论的动态和静态合同检查。净利润。技术报告MSR-TR-2008-105,Microsoft Research(2008年8月)
[8] Beeri,C.,Ramakrishnan,R.:魔法的力量。J.日志。程序。10(3和4),255–300(1991)·兹比尔0722.68018 ·doi:10.1016/0743-1066(91)90038-Q
[9] Bodei,C.、Degano,P.、Nielson,F.、Niellson,H.R.:过程网络中保密性和不干涉性的静态分析。In:程序。PaCT’01,《计算机科学讲义》,第2127卷,第27-41页。施普林格,柏林(2001)·Zbl 1005.68064号
[10] Bryant,R.E.:布尔函数操作的基于图形的算法。IEEE传输。计算。35(8), 677–691 (1986) ·Zbl 0593.94022号 ·doi:10.1109/TC.1986.1676819
[11] Clark,D.,Hankin,C.,Hunt,S.:类ALGOL语言的信息流。计算。语言28(1),3-28(2002)·Zbl 1027.68021号
[12] Codish,M.:逻辑程序的高效目标导向自下而上评估。J.日志。程序。38(3), 355–370 (1999) ·Zbl 0937.68023号 ·doi:10.1016/S0743-1066(98)10024-9
[13] Codish,M.,Dams,D.,Yardeni,E.:逻辑程序的自下而上抽象解释。J.西奥。计算。科学。124, 93–125 (1994) ·Zbl 0795.68038号 ·doi:10.1016/0304-3975(94)90055-8
[14] Cook,B.,Podelski,A.,Rybalchenko,A.:系统代码的终止证明。In:Schwartzbach,M.I.,Ball,T.(编辑)Proc。2006年6月,在加拿大安大略省渥太华举行的2006年ACM SIGPLAN编程语言设计与实现会议(PLDI'06)上,第415–426页。ACM,纽约(2006)
[15] Cousot,P.,Cousot,R.:抽象解释:通过构造或近似不动点对程序进行静态分析的统一格模型。In:程序。第四届ACM SIGPLAN-SIGACT编程语言原理研讨会(POPL’77),第238–252页(1977)
[16] 库索,P.,库索,R.:程序分析框架的系统设计。In:程序。第六届ACM程序设计语言原理研讨会(POPL'79),第269-282页(1979)·Zbl 0413.06004号
[17] 库索,P.,库索,R.:逻辑程序的抽象解释和应用。J.日志。程序。13(2和3),103–179(1992)·Zbl 0776.68024号 ·doi:10.1016/0743-1066(92)90030-7
[18] Cousot,P.,Halbwachs,N.:程序变量之间线性约束的自动发现。In:程序。第五交响乐团。《程序设计语言原理》,第84-96页(1978年)
[19] Danvy,O.,Filinski,A.:代表控制,对CPS转换的研究。数学。结构。计算。科学。2(4), 361–391 (1992) ·Zbl 0941.00040号 ·doi:10.1017/S0960129500001535
[20] Hubert,L.,Jensen,T.,Pichardie,D.:非空注释的语义基础和推理。收录:Barthe,G.,de Boer,F.S.(编辑)Proc。第十届开放式基于对象的分布式系统形式化方法国际会议(FMOODS’08),挪威奥斯陆,2008年6月。计算机科学课堂讲稿,第142-149页。柏林施普林格出版社(2008)
[21] Klein,G.,Nipkow,T.:一个类似Java语言、虚拟机和编译器的机器检查模型。ACM事务处理。程序。语言系统。(托普拉斯)28(4),619–695(2006)·数字对象标识代码:10.1145/1146809.1146811
[22] Laud,P.:计算安全信息流的语义和程序分析。In:程序。第十届欧洲编程研讨会(ESOP’01)。《计算机科学讲义》,第2028卷,第77-91页。施普林格,柏林(2001)·Zbl 0977.68524号
[23] Leino,K.R.M.,Müller,P.:动态上下文中的对象不变量。收录:Odersky,M.(编辑)Proc。2004年6月在挪威奥斯陆举行的第18届面向对象编程欧洲会议(ECOOP'04)。计算机科学课堂讲稿,第3086卷,第491-516页。施普林格,柏林(2004)
[24] Leino,K.R.M.,Wallenburg,A.:类局部对象不变量。In:程序。第1届印度软件工程会议(ISEC’08),印度海得拉巴,2008年2月,第57-66页。ACM,纽约(2008)
[25] Lindholm,T.,Yellin,F.:Java TM虚拟机规范,第2版。Addison-Wesley,雷丁(1999)
[26] Logozzo,F.:Cibai:一个基于抽象解释的静态分析器,用于Java类的模块化分析和验证。摘自:Cook,B.,Podelski,A.(eds.)第八届验证、模型检查和抽象解释国际会议(VMCAI'07),法国尼斯,2007年1月。计算机科学课堂讲稿,第4349卷,第293-298页。柏林施普林格出版社(2007)·Zbl 1132.68329号
[27] Logozzo,F.:类不变量作为跟踪语义的抽象解释。计算。语言系统。结构。35(2), 100–142 (2009) ·Zbl 1387.68052号
[28] Logozzo,F.,Fähndrich,M.:关于字节码分析与源代码分析的相对完整性。In:Hendren,L.J.(编辑)Proc。2008年在匈牙利布达佩斯举行的第17届编译器建设国际会议(CC'08)。计算机科学课堂讲稿,第4959卷,第197-212页。柏林施普林格出版社(2008)
[29] Méndez,M.,Navas,J.,Hermenegildo,M.V.:Java字节码增量分析的一种高效参数定点算法。In:程序。字节码语义、验证、分析和转换第二次研讨会,葡萄牙布拉加,2007年3月。理论计算机科学电子笔记,第190卷(1),第51-66页
[30] Miné,A.:基于差分-边界矩阵的新数值抽象域。In:程序。第二届程序作为数据对象研讨会(PADO II),奥胡斯,达内马克,2001年5月。计算机科学课堂讲稿,第2053卷,第155-172页。施普林格,柏林(2001)·Zbl 0984.68034号
[31] Müller,P.:使用所有权推理对象结构。收录:Meyer,B.,Woodcock,J.(编辑)Proc。验证软件:理论、工具、实验研讨会(VSTTE'07)。计算机科学讲义,第4171卷。柏林施普林格出版社(2007)
[32] Palsberg,J.,Schwartzbach,M.I.:面向对象的类型推断。In:程序。OOPSLA’91,ACM SIGPLAN通知,第26卷(11),第146-161页。纽约ACM出版社(1991)
[33] 佩耶特,埃及。,Spoto,F.:用于分析Java字节码的魔术集转换。收录:Nielson,H.R.,Filé,G.(编辑)第14届国际静态分析研讨会(SAS’07)会议记录,丹麦康根斯·林比,2007年8月。计算机科学课堂讲稿,第4634卷,第452-467页。柏林施普林格出版社(2007)·Zbl 1244.68052号
[34] Pollet,I.,Le Charlier,B.,Cortesi,A.:Java程序静态分析的独特性和共享域。于:2001年6月在匈牙利布达佩斯举行的第十五届欧洲面向对象编程会议(ECOOP’01)。计算机科学课堂讲稿,第2072卷,第77-98页。施普林格,柏林(2001)
[35] Rossignoli,S.,Spoto,F.:通过抽象编译为布尔函数来检测非循环性。In:Emerson,E.A.,Namjoshi,K.S.(编辑)Proc。《验证、模型检查和抽象解释》,查尔斯顿,南卡罗来纳州,美国,2006年1月。计算机科学课堂讲稿,第3855卷,第95-110页。柏林施普林格出版社(2006)·Zbl 1176.68043号
[36] Sabelfeld,A.,Myers,A.C.:基于语言的信息流安全。IEEE J.选择。公共区域。21(1), 5–19 (2003) ·doi:10.1109/JSAC.2002.806121
[37] Schmidt,D.A.:基于痕迹的操作语义抽象解释。J.Lisp符号。计算。10(3), 237–271 (1998)
[38] Secci,S.,Spoto,F.:面向对象程序的成对共享分析。收录:Hankin,C.(编辑)Proc。第十二届静态分析研讨会(SAS’05),英国伦敦,2005年9月。计算机科学课堂讲稿,第3672卷,第320–335页。柏林施普林格出版社(2005)·兹比尔1141.68378
[39] Spoto,F.:精确零点分析。J.软件。系统。模型。(出现)
[40] Spoto,F.:观察点语义:用于合成和集中静态分析的工具。收录于:Cousot,P.(ed.)《第八届国际静态分析研讨会论文集》(SAS’01),巴黎,2001年7月。计算机科学课堂讲稿,第2126卷,第127-145页。施普林格,柏林(2001)·Zbl 0997.68517号
[41] Spoto,F.:布尔形式的零度分析。摘自:Cerone,A.,Gruner,S.(编辑)Proc。第六届IEEE软件工程与形式化方法国际会议(SEFM'08),南非开普敦,2008年11月,第21-30页。IEEE,纽约(2008)
[42] Spoto,F.、Hill,P.M.、Payet等:面向对象程序的路径长度分析。In:程序。《抽象解释的新兴应用》,奥地利维也纳,2006年3月。教授sci.univr.it/\(\sim\)spoto/papers.html
[43] 斯波托·F、梅斯纳德·F、佩耶特·E:基于路径长度的Java字节码终止分析器。ACM事务处理。程序。语言系统。32(3) (2010) ·Zbl 1244.68052号
[44] Sussman,G.J.,Steele,G.L.:方案:扩展lambda演算的解释器。收录:AI备忘录,第349卷。麻省理工学院人工智能实验室(1975年12月)·Zbl 0929.68045号
[45] Sussman,G.J.,Steele,G.L.:Scheme:扩展lambda微积分的解释器。高-订购符号。计算。11(4), 405–439 (1998) ·Zbl 0929.68045号 ·doi:10.1023/A:101035624696
[46] Tarski,A.:一个格理论不动点定理及其应用。派克靴。数学杂志。5, 285–309 (1955) ·Zbl 0064.26004号 ·doi:10.2140/pjm.1955.5.285
[47] julia静态分析仪。http://julia.scienze.univr.it
[48] Volpano,D.,Smith,G.,Irvine,C.:用于安全流分析的声音类型系统。J.计算。安全。4(2,3), 167–187 (1996)
[49] Winskel,G.:编程语言的形式语义。麻省理工学院出版社,剑桥(1993)·Zbl 0919.68082号
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。