首页> 外文会议>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文件的旧版本和新版本)执行静态的过程间分析,并提取连接多个控件的更改依赖关系图(CDG)-图根据实体的句法依存关系更改了实体。通过从不同修订的CDG中提取共同的子图,我们确定了重复发生的变化模式。我们对Aries,Cassandra,Derby和Mahout的研究表明:(1)52-58%的错误修复涉及多实体更改; (2)所有项目中普遍存在6种重复发生的变更模式; (3)19-210个实体对被重复地共同更改,主要是因为这两个实体对调用相同的方法,访问相同的字段或包含相似的内容。这些结果帮助我们更好地了解了现有自动程序修复(APR)方法生成的修补程序与实际修补程序之间的差距。我们的观察将为自动程序理解和修改的后续研究提供启发。

著录项

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号