大规模实证评估:大型语言模型在自动化自我承认技术债务偿还中的应用

时间:2026年2月23日
来源:ACM Transactions on Software Engineering and Methodology

编辑推荐:

自我承认技术债务(SATD)自动化偿还面临数据集代表性不足、过滤标准不统一及评估指标片面等问题。本文构建Python(58,722条)和Java(97,347条)SATD偿还数据集,提出基于代码差异的BLEU-diff、CrystalBLEU-diff及细粒度Line-Level Exact Match on Diff(LEMOD)评估指标。实验表明GPT-4omini和Llama-3.1-70B-Instruct在改进指标下表现最优,传统BLEU指标相关性仅0.01-0.08,而新指标与EM相关系数达0.65-0.84,为SATD自动化提供可靠基准。

广告
   X   

要查看此由 AI 生成的摘要,您必须具有高级访问权限。

摘要

摘要

自我承认的技术债务(SATD),即开发人员在代码中通过注释明确指出次优解决方案的情况,对软件的可维护性构成了重大挑战。如果这些问题得不到解决,SATD 会降低代码质量、增加维护成本,并阻碍软件的长期可持续发展。手动识别和解决 SATD 需要大量时间且容易出错,往往与功能开发和发布截止日期发生冲突。因此,自动化解决 SATD 对减轻开发人员的负担至关重要。尽管大型语言模型(LLMs)在代码生成和程序修复等任务中表现出了潜力,但它们在自动化解决 SATD 方面的潜力尚未得到充分探索。
在本文中,我们确定了在训练和评估用于解决 SATD 的 LLM 时面临的三个关键技术挑战:(1)数据集的代表性和可扩展性;(2)移除不相关的 SATD 解决方案样本;(3)现有评估指标(如 BLEU 和 CrystalBLEU)的局限性。为了解决前两个与数据集相关的问题,我们采用了一种与语言无关的 SATD 追踪工具,并设计了一个包含 10 个步骤的过滤流程,从代码库提交历史中提取 SATD 解决方案,利用 LLM 作为评估标准来进行相关性筛选。由此产生了两个新的大规模 SATD 解决方案数据集:Python 数据集包含 58,722 个条目,Java 数据集包含 97,347 个条目。为了改进评估方法,我们引入了两个基于差异的指标 BLEU-diff 和 CrystalBLEU-diff,这些指标衡量的是代码的变化而非整个代码,从而减少了与 SATD 无关的源代码对评估结果的影响。此外,我们还提出了一种新的指标 Line-Level Exact Match on Diff(LEMOD),该指标既易于理解又能提供详细的信息,有助于深入了解 SATD 解决方案的质量。使用我们的新基准测试和评估指标,我们评估了两种类型的自动化 SATD 解决方法:微调小型模型(参数数量为几亿)以及使用大规模模型进行提示工程,其中包括四个最先进的开源 LLM 和 GPT-4o-mini。研究结果表明,虽然微调后的小型模型在精确匹配(EM)方面的得分与基于提示的方法相当,但在基于 BLEU 的指标和 LEMOD 方面表现较差。Gemma-2-9B 在使用简单提示的情况下,正确识别了 10.1% 的 Python SATD 和 8.1% 的 Java SATD,取得了最佳的精确匹配成绩。此前唯一的相关研究仅针对 Java,其精确匹配得分仅为 2.3%。在使用 BLEU-diff、CrystalBLEU-diff 和 LEMOD 指标时,Llama-3.1-70B-Instruct 和 GPT-4o-mini 的表现最佳。虽然我们提出的三个指标与精确匹配得分有很强的相关性(0.65~0.84),但 BLEU 和 CrystalBLEU 与这一直观指标的相关性几乎为零(0.01~0.08),这表明当直接应用于整个代码而非差异时,这些指标的表现具有很大的不确定性。我们的工作提供了一个可靠的基准测试、改进的评估指标,并对 LLM 在自动化解决 SATD 方面的能力进行了全面评估,推动了相关研究的发展。

AI 摘要

要查看此由 AI 生成的简洁语言摘要,您必须具有高级访问权限。

生物通微信公众号
微信
新浪微博


生物通 版权所有