×

语义代码浏览。 (英语) Zbl 1379.68030号

概要:程序员目前可以访问数量非常多的代码库和不断增长的库。然而,由于在所有这些代码中搜索变得越来越困难,因此随后的重用潜力受到了阻碍。大多数代码搜索引擎都基于语法技术,如签名匹配或关键字提取。然而,这些技术是不准确的(因为它们基本上依赖于文档),同时也没有提供非常有表现力的代码查询语言。我们提出了一种新的方法,重点是查询语义的从代码本身自动获得的代码特征。程序单元使用静态分析技术进行预处理,基于抽象解释,获得安全的语义近似。使用一种新颖的、基于断言的代码查询语言,将所需的代码语义特征表示为部分规范。通过比较这些部分规范和程序元素的推断语义,可以找到相关的代码。我们的方法是全自动的,不依赖于用户注释或文档。它比签名匹配更强大、更灵活,因为它在抽象域和属性上是参数化的,并且不需要类型定义。此外,它还根据属性之间的关系进行推理,例如隐含和抽象,而不仅仅是等式。它对语法代码差异也更具弹性。我们描述了该方法,并报告了Ciao系统中的原型实现。

MSC公司:

68号01 软件理论的一般主题
PDF格式BibTeX公司 XML格式引用

参考文献:

[1] Bruynooghe M.1991年。逻辑程序抽象解释的实用框架。逻辑编程杂志10,91-124.10.1016/0743-1066(91)80001-T·Zbl 0717.68010号 ·doi:10.1016/0743-1066(91)80001-T
[2] CabezaD公司。和HermenegildoM.2000。Prolog的新模块系统。在CL 2000国际会议上,LNAI,第1861卷。斯普林格·弗拉格,131-148·兹伯利0983.68598
[3] 库索普。和CousotR.1977。抽象解释:通过构造或近似不动点对程序进行静态分析的统一格模型。程序中。77年流行歌曲。ACM出版社,238-252。
[4] Gallagher J.和de Waal D.1994年。逻辑程序的快速而精确的规则近似。程序中。ICLP’94的。麻省理工学院出版社,599-613。
[5] 赫尔梅内吉尔多。,普埃布拉格。,布埃诺。和Lopez-GarciaP.2005。使用抽象解释(和ciao系统预处理器)集成程序调试、验证和优化。计算机程序科学58,1-2(10月),115-140.10.1016/j.scico.2005.02.006·Zbl 1076.68540号 ·doi:10.1016/j.scico.2005.02.006
[6] 赫尔梅内吉尔多。V.,布埃诺夫。,卡罗姆。,洛佩兹。,梅拉。,莫拉莱斯J。和PueblaG.2012。ciao及其设计理念概述。逻辑程序设计的理论与实践12,1-2,219-252。http://arxiv.org/abs/1102.5497.10.1017/S1471068411000457S1471069411000457 ·Zbl 1244.68019号 ·doi:10.1017/S1471068411000457
[7] 马雷基。S.、BerryD。M.和KaiserG。E.1991年。一种用于自动构建软件库的信息检索方法。软件工程,IEEE Transactions on 17,8,800-813.10.1109/32.83915·doi:10.1009/32.83915
[8] 麦克米兰公司。,哈里林,波西瓦尼。,克莱兰德·黄。和MobasherB.2012。推荐用于快速软件原型的源代码。《第34届国际软件工程会议论文集》,IEEE出版社,848-858。
[9] 米切尔N.2008。挂钩概述。莫纳德。读者12(11月),27-35。
[10] MuthukumarK.和HermenegildoM.1991年。通过抽象解释联合确定程序变量的共享性和自由性。在国际逻辑程序设计会议(ICLP 1991)上。麻省理工学院出版社,49-63。
[11] MuthukumarK.和HermenegildoM.1992年。使用抽象解释的变量依赖的编译时派生。逻辑编程杂志13,2/3(7月),315-347.10.1016/0743-1066(92)90035-2·Zbl 0776.68032号 ·doi:10.1016/0743-1066(92)90035-2
[12] 普埃布拉格。,布埃诺。和HermenegildoM.2000a。约束逻辑程序的断言语言。在约束编程的分析和可视化工具中。LNCS中的编号1870。斯普林格·弗拉格,23-61。
[13] 普埃布拉格。,布埃诺。和HermenegildoM.2000b。基于静态和动态断言的组合调试约束逻辑程序。在基于逻辑的程序合成和转换(LOPSTR'99)中,LNCS中的编号1817。斯普林格·弗拉格,273-292·兹比尔0964.68016
[14] 普埃布拉格。,更正J。,赫尔梅内吉尔多。,布埃诺。,班达姆火车站。,马里奥特K。和StuckeyP。2004年期刊。模块化程序上下文敏感分析的通用框架。在计算逻辑程序开发中,LNCS中的编号3049。施普林格·弗拉格,234-261。
[15] 普埃布拉G。和HermenegildoM.1999。抽象多重专门化及其在程序并行化中的应用。逻辑编程杂志。逻辑程序的合成、转换和分析专刊41、2和3(11月),279-316·Zbl 0944.68026号
[16] 莱斯。P.2009年。基于语义的代码搜索。第31届软件工程国际会议论文集。IEEE计算机学会,243-253。
[17] 罗林斯E。J.和WingJ。M.1991年。作为软件库搜索键的规范。第八届逻辑程序设计国际会议论文集。麻省理工学院出版社,173-187。
[18] 斯图洛娃。,莫拉莱斯J。F.和HermenegildoM。2014年5月。基于断言的高阶(C)LP程序调试。第16届国际。ACM SIGPLAN声明式编程原理与实践研讨会(PPDP’14)。ACM出版社。
[19] VaucheretC公司。和2002年布埃诺。用于逻辑程序的更精确但有效的类型推断。在SAS'02中。LNCS中的编号2477。施普林格,102-116·Zbl 1015.68033号
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。