论文

从多个软件工件中恢复细粒度代码变更的基本原理

Recovering Fine-Grained Code Change Rationale from Multiple Software Artifacts

摘要

了解过去代码更改背后的原因对于重构、代码审查和调试至关重要。然而,代码更改的基本原理通常是支离破碎的、文档不一致的,并且分散在异构工件中。我们通过两项贡献来应对这一挑战。首先,我们对已建立的分类法中的九个基本原理组件进行了实证研究,并跟踪了与来自 5 个广泛使用的开源 Java 项目的 63 个提交相关的工件中记录它们的位置。实践中出现了七个组件,其基本原理高度分散:提交消息和拉取请求主要捕获目标,而需求和替代更常见于问题和拉取请求中。没有单一的工件类型能够一致地捕获所有组件,这提出了跨文档推理的需要。其次,我们介绍 ARGUS,这是一种基于 LLM 的方法,它可以识别在提交的工件中表达目标、需要和替代的句子,并将它们合成为简洁的基本原理摘要。 ARGUS 在理由识别方面实现了 51.4% 的总体精确度和 93.2% 的召回率,生成的摘要相对于参考摘要被评为准确。不同 LLM 的实验显示出不同的识别性能,但摘要始终准确。一项针对 12 名 Java 程序员的用户研究发现,这些摘要对于理解不熟悉的代码更改以及支持代码审查、文档记录、调试和维护非常有用。