中文

评估小型语言模型在检测重构错误方面的效果

软件工程 2025-03-31 v2

摘要

流行的集成开发环境(IDE)经常包含其重构实现中的错误。确保转换保留程序行为是一项复杂任务。传统的检测方法依赖于为每种重构类型预定义的前提条件,这限制了其可扩展性和对新变换的适应性。这些方法常常需要进行大量的静态和动态分析,这些分析计算成本高、耗时且可能仍未能检测到某些重构错误。本研究评估了小型语言模型(SLM)在检测Java和Python两种编程语言中两种类型的重构错误的效果:(i)引入错误或行为变化的转换(Type I),以及(ii)尽管是有效的转换却被IDE不必要地阻止的转换(Type II)。我们评估了Llama 3.2 3B、Mistral 7B、Gemma 2 9B、Gemma 3 12B、DeepSeek-R1 14B、Phi-4 14B、o1-mini和o3-mini-high等模型在识别来自Eclipse和NetBeans等广泛使用的Java和Python IDE中报告的100个重构错误方面的准确性。该研究涵盖16种重构类型,并采用零样本提示,在消费级硬件上评估模型在没有明确先验训练的情况下,对重构正确性进行推理的能力。该研究发现,专有模型o3-mini-high实现了最高的检测率,识别了84.3%的Type I错误。开源模型Phi-4 14B表现相当出色,在两种错误类型方面都表现出色。然而,o3-mini-high在处理Type II错误方面吃力,仅在40%的情况下正确识别和应用了有效但被阻止的转换。我们的发现凸显了SLM在高效检测重构错误方面的潜力,尤其是在验证行为变化方面。此外,SLM提供了一种更具适应性的解决方案,能够在不同重构类型和编程语言之间进行泛化,解决了传统方法的关键局限性。

关键词

引用

@article{arxiv.2502.18454,
  title  = {Evaluating the Effectiveness of Small Language Models in Detecting Refactoring Bugs},
  author = {Rohit Gheyi and Marcio Ribeiro and Jonhnanthan Oliveira},
  journal= {arXiv preprint arXiv:2502.18454},
  year   = {2025}
}