Rectifier:革新代码翻译的微型通用错误纠正器
摘要
本文探讨了在软件工程中代码翻译的重要问题,特别是在使用大型语言模型(LLMs)进行代码翻译时产生的错误。早期研究主要依赖手工翻译规则,这种方法容易出错且耗时。近年来,研究人员开始探索使用预训练的LLMs进行代码翻译,但这些模型在翻译过程中会产生多种类型的错误,包括编译错误、运行时错误、功能错误和非终止执行。本文提出了一种通用的纠正器——Rectifier,它是一个微型且通用的模型,用于修复由任何LLM生成的翻译错误。实验结果显示,Rectifier在C++、Java和Python之间的翻译任务中具有有效的修复能力,并且跨实验也证明了其方法的鲁棒性。
原理
Rectifier的工作原理基于对现有LLMs生成的错误进行学习,并能够广泛应用于纠正任何LLM生成的错误。该模型通过识别和学习LLMs在代码翻译中产生的常见错误模式,如未能导入包、循环边界错误、操作符错误等,从而能够自动纠正这些错误。Rectifier的核心贡献在于其微型且通用的设计,它不需要大量的计算资源,而是通过精细调整的CodeT5+模型来实现错误模式的捕捉和纠正。
流程
Rectifier的工作流程包括三个主要阶段:收集阶段、微调阶段和推理阶段。在收集阶段,模型收集LLMs生成的错误翻译,并识别错误模式。在微调阶段,使用有效的代码对和无效代码对来微调CodeT5+模型,使其学习错误模式。在推理阶段,使用微调后的CodeT5+模型来纠正未知LLMs生成的错误翻译。具体示例显示,Rectifier能够有效地纠正由ChatGPT、StarCoder、CodeGen和CodeLlama生成的错误。
应用
Rectifier的应用前景广泛,特别是在软件维护和跨语言编程环境中。它可以显著提高代码翻译的准确性和效率,减少人工修正的工作量。随着LLMs在软件开发中的应用越来越广泛,Rectifier的错误纠正能力将变得更加重要,有助于推动自动化软件开发和维护的进程。
