当前位置: X-MOL 学术Empir. Software Eng. › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
FixMiner: Mining relevant fix patterns for automated program repair
Empirical Software Engineering ( IF 4.1 ) Pub Date : 2020-03-14 , DOI: 10.1007/s10664-019-09780-z
Anil Koyuncu , Kui Liu , Tegawendé F. Bissyandé , Dongsun Kim , Jacques Klein , Martin Monperrus , Yves Le Traon

Patching is a common activity in software development. It is generally performed on a source code base to address bugs or add new functionalities. In this context, given the recurrence of bugs across projects, the associated similar patches can be leveraged to extract generic fix actions. While the literature includes various approaches leveraging similarity among patches to guide program repair, these approaches often do not yield fix patterns that are tractable and reusable as actionable input to APR systems. In this paper, we propose a systematic and automated approach to mining relevant and actionable fix patterns based on an iterative clustering strategy applied to atomic changes within patches. The goal of FixMiner is thus to infer separate and reusable fix patterns that can be leveraged in other patch generation systems. Our technique, FixMiner , leverages Rich Edit Script which is a specialized tree structure of the edit scripts that captures the AST-level context of the code changes. FixMiner uses different tree representations of Rich Edit Scripts for each round of clustering to identify similar changes. These are abstract syntax trees, edit actions trees, and code context trees. We have evaluated FixMiner on thousands of software patches collected from open source projects. Preliminary results show that we are able to mine accurate patterns, efficiently exploiting change information in Rich Edit Scripts . We further integrated the mined patterns to an automated program repair prototype, PAR FixMiner , with which we are able to correctly fix 26 bugs of the Defects4J benchmark. Beyond this quantitative performance, we show that the mined fix patterns are sufficiently relevant to produce patches with a high probability of correctness: 81% of PAR FixMiner ’s generated plausible patches are correct.

中文翻译:

FixMiner:挖掘相关修复模式以进行自动程序修复

打补丁是软件开发中的一项常见活动。它通常在源代码库上执行以解决错误或添加新功能。在这种情况下,考虑到跨项目重复出现的错误,可以利用相关的类似补丁来提取通用修复操作。虽然文献包括利用补丁之间的相似性来指导程序修复的各种方法,但这些方法通常不会产生易于处理和可重用的修复模式,作为 APR 系统的可操作输入。在本文中,我们提出了一种基于应用于补丁内原子更改的迭代聚类策略来挖掘相关且可操作的修复模式的系统和自动化方法。因此,FixMiner 的目标是推断出可以在其他补丁生成系统中使用的单独且可重用的修复模式。我们的技术,FixMiner ,利用 Rich Edit Script,它是一种特殊的编辑脚本树结构,用于捕获代码更改的 AST 级上下文。FixMiner 在每轮聚类中使用 Rich Edit Scripts 的不同树表示来识别相似的变化。它们是抽象语法树、编辑操作树和代码上下文树。我们已经对从开源项目中收集的数千个软件补丁评估了 FixMiner。初步结果表明,我们能够挖掘准确的模式,有效地利用 Rich Edit Scripts 中的更改信息。我们进一步将挖掘的模式集成到自动程序修复原型 PAR FixMiner 中,我们能够使用它正确修复 Defects4J 基准测试的 26 个错误。除了这种量化表现之外,
更新日期:2020-03-14
down
wechat
bug