大语言模型在自动化软件重构中的潜力:一项实证研究
软件工程
2024-11-08 v1
摘要
大语言模型(LLM)的最新进展使得利用LLM自动重构源代码成为可能。然而,LLM在自动且准确地进行重构方面与人类专家相比表现如何,目前尚不清楚。为填补这一空白,本文开展了一项实证研究,调查LLM在自动化软件重构中的潜力,重点关注重构机会的识别与重构方案的推荐。我们首先构建了一个高质量的重构数据集,包含来自20个项目的180个真实重构,并在该数据集上开展实证研究。以待重构的Java文档作为输入,ChatGPT和Gemini分别仅识别出180个重构机会中的28个和7个。然而,在提示词中解释预期的重构子类别并缩小搜索空间,显著将ChatGPT的成功率从15.6%提升至86.7%。关于重构方案的推荐,ChatGPT为180个重构推荐了176个重构方案,其中63.6%的推荐方案与人类专家构建的方案相当(甚至更好)。然而,ChatGPT提出的176个方案中有13个以及Gemini提出的137个方案中有9个是不安全的,因为它们要么改变了源代码的功能,要么引入了语法错误,这表明了基于LLM的重构存在风险。为此,我们提出了一种称为RefactoringMirror的检测与重应用策略,通过将识别出的重构使用经过充分测试的重构引擎重新应用于原始代码,可以有效缓解基于LLM的自动化重构的风险,同时仍利用LLM的智能获取有价值的重构推荐。
引用
@article{arxiv.2411.04444,
title = {An Empirical Study on the Potential of LLMs in Automated Software Refactoring},
author = {Bo Liu and Yanjie Jiang and Yuxia Zhang and Nan Niu and Guangjie Li and Hui Liu},
journal= {arXiv preprint arXiv:2411.04444},
year = {2024}
}