论文阅读-自动程序修复-Is Your Code Generated by ChatGPT Really Correct?Rigorous Evaluation of Large Language

本文探讨了如何通过EvalPlus框架精确评估ChatGPT生成的代码正确性,提出了一种基于符号执行和突变的方法。实验结果显示,尽管ChatGPT在某些任务上表现良好,但存在测试不足和错误率问题,为进一步提升代码生成质量提供了启示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

论文来源icon-default.png?t=N7T8https://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)   

### S 函数生成及其修改风险 S 函数(System Function),通常用于 MATLAB 和 Simulink 中,允许用户通过编写自定义 C、C++ 或 Fortran 代码来扩展建模功能。当使用 Legacy Code Tool 自动生成 S 函数时,该工具会基于现有的 C/C++ 库创建接口文件和模板代码[^1]。 #### 修改风险评估 1. **兼容性问题** 自动生成的 S 函数依赖于特定版本的编译器和库环境。任何对这些底层资源的更改都可能导致不兼容的情况发生,进而影响模型的整体稳定性。 2. **性能优化挑战** 虽然 Legacy Code Tool 提供了一种便捷的方式将现有代码集成到 Simulink 模型中,但在某些情况下,这种转换可能会引入额外开销或降低执行效率。因此,在调整生成后的 S 函数时需谨慎考虑其对系统性能的影响。 3. **维护难度增加** 对自动生成代码的手动编辑不仅增加了错误发生的可能性,还可能使得后续更新变得更加复杂。特别是如果原始 legacy code 经历频繁变更,则每次同步都会成为一项耗时的任务。 4. **调试困难** 当遇到问题时,由于涉及多个层次的技术栈——从高级别的 Simulink 块图到底层的嵌入式实现细节,这无疑加大了定位并解决问题的工作量。此外,部分内部机制可能是黑箱操作,进一步阻碍了深入理解与修复过程。 ```matlab % Example of using sfunction builder GUI tool in MATLAB command window. slbuild('my_legacy_code_sfun') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值