×

表示大代码的符号自动机。 (英语) Zbl 1344.68128号

摘要:对大量代码库(“大代码”)的分析为深入了解编程实践和实现代码重用提供了机会。分析大型代码的主要挑战之一是找到一种能够捕获足够语义信息、能够高效构建并且易于进行有意义的比较操作的表示。我们提出了一个在大型代码库中表示代码的形式化框架。在我们的框架中,每个代码片段的语义描述符是部分时间规范它捕获API上的方法调用序列。其主要思想是将部分时间规范表示为符号自动机——自动机,其中转换可以用变量标记,变量可以用字母、单词或正则语言替换。使用符号自动机,我们构造了一个用于静态分析大代码的抽象域局部性规范和精度规范。我们展示了该领域的格运算与用于操作部分时态规范的常用操作符之间有趣的关系,例如通过合并两个部分规范来构建更具信息量的规范,以及比较部分时态规格。

MSC公司:

65年第68季度 形式语言和自动机
68号30 软件工程的数学方面(规范、验证、度量、需求等)
60年第68季度 规范和验证(程序逻辑、模型检查等)
PDF格式BibTeX公司 XML格式引用
全文: 内政部 链接

参考文献:

[1] Abdulla,P.A.,Chen,Y.F.,Holík,L.,Mayr,R.,Vojnar,T.:当模拟遇到反链时。收录于:TACAS,第158-174页(2010年)·Zbl 1284.68337号
[2] Acharya,M.,Xie,T.,Pei,J.,Xu,J.:将API模式作为源代码的部分顺序进行挖掘:从使用场景到规范。参见:欧洲软件工程会议第六届联席会议和ACM SIGSOFT软件工程基础研讨会会议记录,ESEC-FSE’07,第25-34页。ACM(2007)
[3] Alur,R.、Cerny,P.、Madhusudan,P.和Nam,W.:Java类接口规范的合成。摘自:32Nd ACM SIGPLAN-SIGACT编程语言原理研讨会论文集,POPL'05,第98-109页。ACM(2005)·Zbl 1369.68126号
[4] Ammons,G.、Bodik,R.、Larus,J.R.:采矿规范。摘自:第29届ACM SIGPLAN-SIGACT编程语言原理研讨会论文集,POPL'02,第4-16页。ACM(2002)·Zbl 1323.68361号
[5] Bellon,S.、Koschke,R.、Antoniol,G.、Krinke,J.、Merlo,E.:克隆检测工具的比较与评估。IEEE TSE 33(9),577-591(2007)
[6] Cook,J.E.,Wolf,A.L.:从基于事件的数据中发现软件过程模型。ACM事务处理。柔和。工程方法。7(3),215-249(1998)。doi:10.1145/287000.287001·doi:10.1145/287000.287001
[7] Dallmeier,V.,Lindig,C.,Wasylkowski,A.,Zeller,A.:使用ADABU挖掘对象行为。摘自:《2006年动态系统分析国际研讨会论文集》,WODA’06,第17-24页。ACM(2006)
[8] David,Y.,Yahav,E.:可执行文件中基于Tracelet的代码搜索。摘自:第35届ACM SIGPLAN编程语言设计与实现会议记录,PLDI’14,第349-360页。ACM,美国纽约州纽约市(2014年)。数字对象标识代码:10.1145/2594291.2594343·Zbl 0575.68036号
[9] Ganesh,V.,Minnes,M.,Solar Lezama,A.,Rinard,M.:具有长度约束的单词方程:什么是可判定的?收录于:海法验证会议,HVC’12,计算机科学讲稿,第7857卷,第209-226页。施普林格(2012)
[10] Gruska,N.、Wasylkowski,A.、Zeller,A.:从6000个项目中学习:轻量级跨项目异常检测。摘自:《第19届软件测试与分析国际研讨会论文集》,ISSTA’10,第119-130页。ACM(2010)
[11] Horwitz,S.:识别程序的两个版本之间的语义和文本差异。摘自:《ACM编程语言设计与实现会议记录》,第234-245页(1990年)
[12] Horwitz,S.、Reps,T.、Binkley,D.:使用依赖图进行硬膜外切片。摘自:PLDI’88(1988)。数字对象标识代码:10.1145/53990.53994
[13] Komondoor,R.,Horwitz,S.:使用切片识别源代码中的重复。收录:Cousot,P.(编辑)《静态分析》。计算机科学课堂讲稿,第2126卷,第40-56页。施普林格,柏林(2001)·Zbl 0997.68644号
[14] Lo,D.,Khoo,S.C.:SMArTIC:致力于构建准确、稳健和可扩展的规范挖掘器。参见:第14届ACM SIGSOFT国际软件工程基础研讨会论文集,SIGSOFT'06/FSE-14,第265-275页。ACM(2006)
[15] Mariani,L.,Pezzè,M.:COTS成分不相容性的动态检测。IEEE软件。24(5), 76-85 (2007) ·doi:10.1109/MS.2007.138
[16] Mishne,A.,Shoham,S.,Yahav,E.:基于类型状态的部分程序语义代码搜索。摘自:《ACM面向对象编程系统语言和应用国际会议论文集》,OOPSLA’12,第997-1016页。ACM(2012年)
[17] Monperrus,M.、Bruch,M.和Mezini,M.:检测面向对象软件中缺少的方法调用。摘自:《第24届欧洲面向对象编程会议记录》,ECOOP’10,LNCS,第6183卷,第2-25页(2010)
[18] Partush,N.,Yahav,E.:数值程序的抽象语义差异。摘自:Logozzo,F.,Fhndrich,M.(编辑)《静态分析》。计算机科学讲义,第7935卷,第238-258页。柏林施普林格出版社(2013)·Zbl 1475.68096号
[19] Partush,N.,Yahav,E.:通过推测相关性进行抽象语义差异。摘自:《面向对象编程系统语言和应用ACM国际会议论文集》,OOPSLA’14(2014)·Zbl 1475.68096号
[20] Peleg,H.、Shoham,S.、Yahav,E.、Yang,H.:静态规范挖掘的符号自动机。摘自:《静态分析论文集——第20届国际研讨会》,SAS 2013,《计算机科学讲稿》,第7935卷,第63-83页。施普林格(2013)·Zbl 1344.68127号
[21] Plandowski,W.:一种求解单词方程的有效算法。摘自:《第三十八届ACM计算机理论研讨会论文集》,STOC'06,第467-476页。ACM(2006年)·Zbl 1301.68165号
[22] Raychev,V.、Vechev,M.、Yahav,E.:使用统计语言模型完成代码。摘自:第35届ACM SIGPLAN编程语言设计与实现会议记录,PLDI’14,第419-428页。ACM,美国纽约州纽约市(2014年)。doi:10.1145/2594291.2594321
[23] Shoham,S.、Yahav,E.、Fink,S.和Pistoia,M.:使用基于自动化的抽象的静态规范挖掘。摘自:2007年软件测试与分析国际研讨会论文集,ISSTA’07,第174-184页。ACM(2007)
[24] Strom,R.E.,Yemini,S.:类型状态:用于增强软件可靠性的编程语言概念。IEEE传输。柔和。工程12(1),157-171(1986)·Zbl 0575.68036号 ·doi:10.1109/TSE.1986.6312929
[25] Wasylkowski,A.,Zeller,A.,Lindig,C.:检测对象使用异常。参见:欧洲软件工程会议第六届联席会议和ACM SIGSOFT软件工程基础研讨会会议记录,ESEC-FSE’07,第35-44页。ACM(2007)
[26] Weimer,W.,Necula,G.:挖掘错误检测的时间规范。摘自:《系统构建和分析的工具和算法》,TACAS’05,第461-476页(2005)·Zbl 1087.68600号
[27] Whaley,J.、Martin,M.C.、Lam,M.S.:面向对象组件接口的自动提取。摘自:2002年ACM SIGSOFT国际软件测试与分析研讨会论文集,ISSTA'02,第218-228页。ACM(2002)
[28] Wulf,M.D.,Doyen,L.,Henzinger,T.A.,Raskin,J.F.:反链:检查有限自动机普遍性的新算法。收录于:CAV,第17-30页(2006年)·兹比尔1188.68171
[29] Yang,J.,Evans,D.,Bhardwaj,D.,Phat,T.,Das,M.:Perracotta:从不完美的跟踪中挖掘时态API规则。摘自:《第28届软件工程国际会议论文集》,ICSE’06,第282-291页。ACM(2006)
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。