中文

面向结构差异较大的 Java 分叉的重构感知补丁集成

软件工程 2025-08-12 v1

摘要

虽然大多数在 GitHub 等平台上的分叉是短暂的,主要用于社交合作,但有一小部分却演变为持续存在的分叉(称为变体),维持独立的开发轨迹。将 bug 修复补丁跨越这些结构上差异较大的变体集成,面临由于结构漂移(包括重构导致的代码元素重命名、 relocate 或重新组织,从而掩盖语义对应性)带来的挑战。本文进行了对 14 对结构差异变体中补丁集成失败的实证研究,提出 RePatch—a一种用于 Java 代码仓库的重构感知集成系统。RePatch 扩展了原本为对称合并设计的 RefMerge 框架,支持非对称补丁传输。RePatch 在源端和目标端对重构进行反转以重新对齐补丁上下文,应用补丁后再重放转换以保留变体的意图。在我们对 478 个 bug 修复 pull 请求的评估中,Git cherry-pick 因结构错位在 64.4% 的情况下失败,而 RePatch 成功集成了之前 52.8% 的失败补丁。这些结果凸显了基于语法的工具的局限性以及变体感知补丁传播中语义推理的必要性。

关键词

引用

@article{arxiv.2508.06718,
  title  = {Refactoring-Aware Patch Integration Across Structurally Divergent Java Forks},
  author = {Daniel Ogenrwot and John Businge},
  journal= {arXiv preprint arXiv:2508.06718},
  year   = {2025}
}

备注

12 pages, 3 figures