首页> 外文会议>IEEE International Conference on Software Maintenance and Evolution >An Empirical Study of Multi-entity Changes in Real Bug Fixes
【24h】

An Empirical Study of Multi-entity Changes in Real Bug Fixes

机译:真实错误修复中多实体变化的实证研究

获取原文

摘要

Prior studies showed that developers applied repeated bug fixes-similar or identical code changes-to multiple locations. According to the observation, researchers built tools to automatically generate candidate patches from the repeated bug-fixing patterns. However, all such research focuses on the recurring change patterns within single methods. We are curious whether there are also repeated bug fixes that change multiple program entities (e.g., classes, methods, and fields); and if so, how we can leverage such recurring change patterns to further help developers fix bugs. In this paper, we present a comprehensive empirical study on multi-entity bug fixes in terms of their frequency, composition, and semantic meanings. Specifically for each bug fix, we first used our approach InterPart to perform static inter-procedural analysis on partial programs (i.e., the old and new versions of changed Java files), and to extract change dependency graphs (CDGs)-graphs that connect multiple changed entities based on their syntactic dependencies. By extracting common subgraphs from the CDGs of different fixes, we identified the recurring change patterns. Our study on Aries, Cassandra, Derby, and Mahout shows that (1) 52-58% of bug fixes involved multi-entity changes; (2) 6 recurring change patterns commonly exist in all projects; and (3) 19-210 entity pairs were repetitively co-changed mainly because the pairs invoked the same methods, accessed the same fields, or contained similar content. These results helped us better understand the gap between the fixes generated by existing automatic program repair (APR) approaches and the real fixes. Our observations will shed light on the follow-up research of automatic program comprehension and modification.
机译:之前的研究表明,开发人员应用了重复的错误修复 - 类似或相同的代码变为多个位置。根据观察,研究人员建立了从重复的错误修复模式自动生成候选补丁的工具。然而,所有此类研究侧重于单一方法内的重复变化模式。我们很奇怪还有还有更改多个程序实体的重复错误修复程序(例如,类,方法和字段);如果是,我们如何利用这种反复化的更改模式来进一步帮助开发人员修复错误。在本文中,我们对其频率,组成和语义含义来说,对多实体错误修复的全面实证研究。专门针对每个错误修复,我们首先使用我们的方法interpart在部分程序(即,更改的Java文件的新版本和新版本)上进行静态程序间分析,并提取连接多个的更改依赖关系图(CDGS)绘图根据其语法依赖项更改了实体。通过从不同修复的CDG中提取常见子图,我们确定了重复的变化模式。我们对白羊座,Cassandra,Derby和Mahout的研究表明(1)52-58%的错误修复涉及多实体变化; (2)所有项目中通常存在6个经常变化模式; (3)19-210实体对重复地共同改变,主要是因为对相同的方法,访问相同的字段或包含类似的内容。这些结果有助于我们更好地了解现有自动程序维修(APR)方法和真实修复所产生的修复之间的差距。我们的观察将阐明自动计划理解和修改的后续研究。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号