中文

LecPrompt:基于 CodeBERT 的逻辑错误纠正提示方法

软件工程 2024-10-14 v1 人工智能 编程语言

摘要

编程中的逻辑错误不触发编译警告,因而难以检测。这些隐式错误可能 disrupt 程序功能或引发运行时问题。其纠正需要深入理解程序逻辑,凸显了自动化检测与修复的重要性。在本文中,我们引入 LecPrompt 来 localise 和修复逻辑错误,一种基于提示的方法,利用 CodeBERT——一种在代码上训练的基于变换器的大型语言模型。首先,LecPrompt 利用大型语言模型计算 perplexity 与 log probability 指标,在 token 与行层面定位逻辑错误。通过统计分析,识别偏离大型语言模型预期模式的 token 与行,将其标记为潜在错误源。其次, 将逻辑错误纠正挑战表述为掩码语言模型(MLM)任务,LecPrompt 采用 CodeBERT 对识别的错误 token 进行自回归修复。最后,软提示方法为低成本场景提供了新解决方案,确保模型可针对逻辑错误纠正任务的特定细微差别进行微调,而不产生高计算成本。为评估 LecPrompt 的性能,我们创建一种方法在正确代码中引入逻辑错误,并用于 QuixBugs 生成 QuixBugs-LE 数据集。对 QuixBugs-LE 数据集进行评估,针对 Python 与 Java,LecPrompt 在 Python 上实现了显著的 74.58% 的 top-1 token 级修复准确率和 27.4% 的程序级修复准确率。在 Java 中,LecPrompt 提供 69.23% 的 top-1 token 级修复准确率和 24.7% 的完整程序级修复准确率。

关键词

引用

@article{arxiv.2410.08241,
  title  = {LecPrompt: A Prompt-based Approach for Logical Error Correction with CodeBERT},
  author = {Zhenyu Xu and Victor S. Sheng},
  journal= {arXiv preprint arXiv:2410.08241},
  year   = {2024}
}