本文档是一篇发表于2023年 IEEE 国际医学人工智能会议 (MedAI) 的学术综述论文。作者为华东师范大学可信嵌入式软件国家工程研究中心的王建勋与陈一祥。论文题为《大语言模型代码生成综述:应用与评估》。
本文旨在对基于大语言模型(Large Language Models, LLMs)的代码生成技术近年的研究进展进行系统性梳理,重点从“应用”与“评估”两个维度展开。作者指出,随着以GPT系列、Codex、Copilot等为代表的LLMs展现出强大的代码理解和生成能力,其在软件工程领域的应用潜力巨大,已显著提升了开发者的生产力。然而,与快速发展的应用研究相比,对LLM生成代码的质量评估研究却相对滞后,存在关注不足、评估维度不全面等问题。本文通过回顾近五年内的20项相关研究,分析了当前LLM代码生成的主要应用场景、评估方法的现状与局限,并呼吁未来研究应着力缩小应用与评估之间的差距。
论文主要观点阐述
观点一:LLM代码生成在多种软件工程任务中展现出巨大应用潜力,并已形成三类主流应用模式。 作者将当前LLM代码生成的应用归纳为三大类:1) 描述到代码生成:根据自然语言描述自动生成相应代码。例如,Finnie-Ansley等人使用Codex解答入门编程试题,发现其表现优于大多数学生;Jiang等人开发的GetLine工具允许用户通过自然语言请求生成多种编程语言的代码;Dong等人提出了一种基于ChatGPT的“自我协作”框架,通过让多个ChatGPT实例扮演分析师、程序员和测试员等角色,协作解决编码问题,性能较直接生成方法提升30%。2) 代码补全:基于上下文预测并补全代码,将补全能力从语法层面提升至语义层面。以GitHub Copilot为代表的研究表明,此类工具能有效提升开发者生产力,其使用模式可分为“加速模式”和“探索模式”,分别用于提高熟悉任务的效率和辅助处理陌生任务。3) 自动程序修复:将程序修复视为神经机器翻译任务,利用LLM将错误代码“翻译”为正确代码。研究表明,ChatGPT等大型模型在修复错误方面表现优异,甚至超越了传统的基于模板的自动程序修复工具。例如,Xia和Zhang提出的ChatRepair方法,通过与ChatGPT持续对话并反馈测试结果,实现了最先进的程序修复性能。
观点二:对LLM生成代码的评估研究集中于功能正确性与安全性,但存在评估维度不全面的问题。 作者指出,当前评估研究主要关注两个核心质量特性:1) 功能正确性评估:主要依赖基于执行的评估指标,如Pass@k和AvgPassRatio,通过测试用例执行来判断生成代码的正确性。由于基于字符串匹配的指标无法反映功能等价性,执行性指标成为主流。为解决执行评估成本高、速度慢的问题,Dong等人提出了基于LLM的无执行评估指标CodeScore,旨在准确且高效地预测代码的功能正确性。2) 安全性评估:关注LLM生成代码中可能引入的安全漏洞。多项研究通过构造包含安全相关场景的提示数据集,或在实际编程任务中测试LLM辅助工具,来评估其安全性。例如,Pearce等人发现Copilot在约44%的安全相关场景中生成了包含已知弱点的代码;而Asare等人的对比分析则表明,Copilot引入与人类相同漏洞的频率仅为人类的三分之一,并非比人类更差。Khoury等人对ChatGPT的评估也显示其会频繁生成不安全代码,强调了经验程序员的不可替代性。
观点三:现有评估研究存在显著局限,亟需系统性、多维度的评估框架。 通过对现有文献的梳理,作者总结了当前评估研究的四大局限:1) 评估质量特性不足:现有研究过于聚焦功能正确性和安全性,忽视了ISO/IEC 25010标准中定义的其它重要质量特性,如可维护性、兼容性、可移植性等,这些特性对代码的整体质量同样有重大影响。2) 缺乏系统化、量化的评估模型:尽管传统代码质量评估已有成熟的系统化量化模型,但目前尚无研究将这些模型系统性地应用于LLM生成代码的评估。建立这样的评估模型虽面临挑战,但对全面衡量代码质量至关重要。3) 忽略人类在评估中的参与作用:当前大多数评估采用“自动驾驶”模式,即直接评估LLM的原始输出。然而,在实际的“辅助模式”开发中,程序员的提示策略、建议选择等交互行为会深刻影响最终代码的质量。现有评估未能充分考虑这一关键因素。4) 缺乏专门的评估研究:许多研究中的评估旨在横向比较不同LLM的代码生成能力,而非专门、深入地评估生成代码本身的质量。作者认为,面向LLM生成代码的专门评估研究对于LLM开发者和使用者都极具价值,能帮助开发者改进模型,辅助用户判断生成代码的可信度。
观点四:LLM代码生成的应用研究与评估研究之间存在显著差距,需投入更多努力以弥合。 这是本文的核心论点。作者通过对比“应用”与“评估”两部分的文献数量和研究深度,明确指出当前学术界对LLM代码生成技术的探索存在不平衡现象。一方面,应用研究蓬勃发展,不断拓展新的应用场景并展示出惊人的效果;另一方面,评估研究则相对滞后,评估范围狭窄、方法不够系统,难以跟上应用发展的步伐,无法为实际应用中代码质量的可靠保障提供充分的理论和方法支持。这种差距可能带来风险,即不可靠的代码被引入软件系统。
论文的价值与意义
本文的价值在于首次系统性地从“应用”与“评估”这对辩证统一的角度,综述了LLM代码生成领域的研究现状。它不仅清晰地梳理了主流的技术应用方向及其成效,更重要的是,敏锐地指出了当前研究生态中“重应用、轻评估”的失衡问题,并具体分析了评估研究存在的局限性。这为后续研究指明了重要方向:未来的工作不仅需要继续挖掘LLM在代码生成方面的潜力,更必须投入同等甚至更多的精力,去构建全面、系统、贴近真实开发场景的代码质量评估体系。作者提出的未来工作方向——将LLM辅助编程视为一种全新的软件开发范式,并从过程(模型能力、人机交互等)和产物(生成代码)两个维度综合评价其可信度——为构建下一代软件可信度模型提供了有价值的思路。本文对促进LLM代码生成技术的健康、可靠发展具有重要的警示和指导意义。