...
首页> 外文期刊>Zeitschrift fur Arznei- und Gewurzpflanzen >The effectiveness of context-based change application on automatic program repair
【24h】

The effectiveness of context-based change application on automatic program repair

机译:基于语境的变化应用在自动程序维修中的有效性

获取原文
获取原文并翻译 | 示例

摘要

An Automatic Program Repair (APR) technique is an implementation of a repair model to fix a given bug by modifying program behavior. Recently, repair models which collect source code and code changes from software history and use such collected resources for patch generation became more popular. Collected resources are used to expand the patch search space and to increase the probability that correct patches for bugs are included in the space. However, it is also revealed that navigation on such expanded patch search space is difficult due to the sparseness of correct patches in the space. In this study, we evaluate the effectiveness of Context-based Change Application (CCA) technique on change selection, fix location selection and change concretization, which are the key aspects of navigating patch search space. CCA collects abstract subtree changes and their AST contexts, and applies them to fix locations only if their contexts are matched. CCA repair model can address both search space expansion and navigation issues, by expanding search space with collected changes while narrowing down search areas in the search space based on contexts. Since CCA applies changes to a fix location only if their contexts are matched, it only needs to consider the same context changes for each fix location. Also, if there is no change with the same context as a fix location, this fix location can be ignored since it means that past patches did not modify such locations. In addition, CCA uses fine-grained changes preserving changed code structures, but normalizing user-defined names. Hence change concretization can be simply done by replacing normalized names with concrete names available in buggy code. We evaluated CCA's effectiveness with over 54K unique collected changes (221K in total) from about 5K human-written patches. Results show that using contexts, CCA correctly found 90.1% of the changes required for test set patches, while fewer than 5% of the changes were found without contexts. We discovered that collecting more changes is only helpful if it is supported by contexts for effective search space navigation. In addition, CCA repair model found 44-70% of the actual fix locations of Defects4j patches more quickly compared to using SBFL techniques only. We also found that about 48% of the patches can be fully concretized using concrete names from buggy code.
机译:自动程序维修(APR)技术是通过修改程序行为来修复给定错误的修复模型的实现。最近,修复模型收集源代码和代码从软件历史记录更改,并使用此类收集的补丁生成资源变得更加流行。收集的资源用于展开补丁搜索空间,并增加错误的概率,以便在空间中包含错误的修补程序。然而,还揭示了在这种扩展的贴片搜索空间上导航由于空间中正确斑块的稀疏性而困难。在这项研究中,我们评估了基于上下文的更改应用程序(CCA)技术在更改选择,修复位置选择和更改CONCRETIZIZATION上的有效性,这是导航补丁搜索空间的关键方面。 CCA收集抽象的子树更改及其AST上下文,并仅在其上下文匹配时应用它们来修复位置。 CCA维修模型可以通过在基于上下文中缩小搜索空间中的搜索区域的同时扩展搜索空间来解决搜索空间扩展和导航问题。由于CCA仅在其上下文匹配时应用于修复位置的更改,因为它只需要考虑每个修复位置的相同上下文更改。此外,如果没有更改与固定位置相同的上下文,则可以忽略此修复位置,因为这意味着过去的修补程序没有修改这些位置。此外,CCA使用保留更改的代码结构的细粒度变化,但是归一化用户定义的名称。因此,可以简单地通过用BIDGY代码中提供的具体名称替换规范名称来简单地完成更改具体化。我们评估了CCA的有效性,超过54K个独特的收集变化(总共221K)从大约5K人写的补丁。结果表明,使用上下文,CCA正确地发现了测试集修补程序所需的更改的90.1%,而在没有上下文的情况下发现了少于5%的更改。我们发现,如果有效搜索空间导航的上下文支持,则收集更多更改仅有用。此外,与使用SBFL技术相比,CCA修复模型占缺陷40的实际固定位置的实际固定位置更快。我们还发现,使用MADGY代码的具体名称,可以完全混凝器占48%的贴片。

著录项

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号