论文来源https://arxiv.org/pdf/2305.01210.pdf
概述
本文关注大型语言模型在代码生成中的应用,旨在评估ChatGPT生成的代码的正确性。
(评估生成式代码的正确性)
本文创新动机
现有研究中对于生成代码的正确性评估不足,本文提出了一种基于符号执行的方法,用于评估生成代码的正确性,并在实验中证明了其有效性。
这篇论文的创新点,为之后的论文提供了一些的启发
1.通过使用ChatGPT作为自动生成引擎,并且灵活应用突变
使用ChatGPT作为自动生成引擎本来存在速度的问题
因为:ChatGPT不适合大量的自动化测试生成,查询如此大的模型的速度和成本不理想。
本文解决了这个问题:从ChatGPT生成的高质量种子输入开始执行类型感知输入突变。
(i)使用ChatGPT的种子输入语料库来初始化种子池并引导生成管道;
(ii)每次从种子池中随机选择一个输入(即种子),将其突变为新的输入(即突变体);
(iii)符合程序合同(§2.3)的新输入被添加到种子池中,从(ii)开始继续生成过程。
2.扩展基准
通过自动化测试方法改进编程基准,包含更多高质量和自动生成的测试输入,将有助于更准确地评估代码生成的性能。
背景
过往相关论文比较
在大语言模型的应用专题里面
·Transformer-based language models for software vulnerability detection 将软件源代码转换成自然语言,利用训练好的Transformer语言模型根据上下文理解注释和代码的关系,推断代码是否存在漏洞。(利用LLM检测代码是否有漏洞)
·Automated repair of programs from large language models
研究利用自动化修复技术(TBar 和Recoder)以及Codex-e来修复GPT-3模型的后代Codex产生的代码错误(修复LLM生成式代码的错误)
·Examining zero-shot vulnerability repair with large language
作者研究了大语言模型在没有专门对安全漏洞修复进行训练的情况下(Zero-Shot),通过构建适当的提示来引导LLMS生成修复漏洞的代码。(利用LLM修复代码漏洞)
·Large language models are zero-shot fuzzers: Fuzzing deep-learning libraries via large language models
这篇论文介绍了一种名为TitanFuzz的新方法,利用大语言模型生成输入,模糊深度学习库(TensorFlow/Pytorch)