Skip to main content
QUICK REVIEW

[论文解读] On Repair with Probabilistic Attribute Grammars

Manos Koukoutos, Mukund Raghothaman|arXiv (Cornell University)|Jul 13, 2017
Software Engineering Research参考文献 4被引用 4
一句话总结

该论文提出了一种概率属性语法框架,统一了语法和语义规范,实现了高效程序修复。通过结合输入-输出示例、前置和后置条件,以及从语料库中提取的概率语法,该方法能够在程序空间中进行可扩展的、基于A*的搜索,显著优于非概率方法在修复复杂代码片段方面的表现,这些代码片段超出了传统非概率工具的能力范围。

ABSTRACT

Program synthesis and repair have emerged as an exciting area of research, driven by the potential for revolutionary advances in programmer productivity. Among most promising ideas emerging for synthesis are syntax-driven search, probabilistic models of code, and the use of input-output examples. Our paper shows how to combine these techniques and use them for program repair, which is among the most relevant applications of synthesis to general-purpose code. Our approach combines semantic specifications, in the form of pre- and post-conditions and input-output examples with syntactic specifications in the form of term grammars and AST-level statistics extracted from code corpora. We show that synthesis in this framework can be viewed as an instance of graph search, permitting the use of well-understood families of techniques such as A*. We implement our algorithm in a framework for verification, synthesis and repair of functional programs, demonstrating that our approach can repair programs that are beyond the reach of previous tools.

研究动机与目标

  • 通过统一语法和语义规范,解决程序修复中的可扩展性和精度挑战。
  • 通过从代码语料库自动提取概率语法,减轻手动规范的负担。
  • 通过整合动态输入示例和概率语法偏置,提升程序合成中的搜索效率。
  • 实现对现有非概率修复工具能力范围之外的复杂程序的修复。
  • 通过使用领域特定、可扩展的DSL(Scala实现),支持手动和自动化的语法编写。

提出的方法

  • 该框架使用概率的、多态的属性语法,以限制并优先考虑程序合成的搜索空间。
  • 采用自顶向下的A*式搜索算法,通过在已知输入示例上的部分求值进行剪枝。
  • 将输入-输出示例等价性集成到搜索过程中,避免对功能相同的表达式进行冗余探索。
  • 系统支持手动编写的语法和从PureScala程序语料库中自动提取的语法。
  • 语法规则以带有@production注解和频率权重的Scala函数形式表达,支持动态规则实例化。
  • 框架使用带属性的包装类型来编码语义约束(例如运算符结合性),从而提高搜索效率和表达能力。

实验结果

研究问题

  • RQ1概率属性语法能否在保持表达力的同时,有效缩小程序修复中的搜索空间?
  • RQ2与手工编写或默认语法相比,从语料库中提取的语法在多大程度上提升了合成性能?
  • RQ3动态输入示例和约束求解器在多大程度上能提升修复合成的精度?
  • RQ4在自顶向下合成设置中,集成输入-输出示例等价性能否提升搜索效率?
  • RQ5在语法中使用领域特定属性在多大程度上影响程序修复的可扩展性和正确性?

主要发现

  • 该框架成功修复了非概率修复工具无法处理的程序,展示了在复杂代码片段上的可扩展性。
  • 从语料库中提取的语法显著提升了合成性能,减少了搜索时间,并提高了真实修复任务中的成功率。
  • 输入-输出示例的集成实现了对错误表达式的高效定位,并引导合成过程朝向正确修复。
  • 使用带属性的概率语法可有效剪枝语义上冗余或无效的表达式,提升搜索效率。
  • 该系统采用自顶向下搜索结合部分求值和等价性处理,性能可与自底向上方法媲美,但具有更好的空间和时间效率。
  • 该框架支持手动和自动化的语法编写,通过最小用户输入即可在多个合成问题中复用。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。