全文总结
这篇论文评估了GitHub Copilot生成的代码质量,基于LeetCode问题集,使用了一个自定义的自动化框架。
研究背景
- 背景介绍: 这篇文章的研究背景是GitHub Copilot在2021年发布,作为一个“AI配对编程员”,可以根据一些上下文(如注释、函数名或周围的代码)生成不同语言的代码。然而,Copilot生成的代码并不总是有效或合理。根据GitHub的数据,约26%的Copilot建议被用户接受。
- 研究内容: 该问题的研究内容包括:评估Copilot在代码生成阶段的可靠性、生成代码的正确性及其对编程语言、问题难度和问题主题的依赖性。此外,还评估了代码的时间和内存效率,并将其与平均人类结果进行比较。
- 文献综述: 该问题的相关工作有:Pearce等人评估了Copilot生成代码的安全性;Imai进行了实证实验,比较了AI和人类参与者在自然软件开发环境中的表现;Arghavan等人也进行了实证研究,比较了Copilot和人类解决方案的性能;Yetistiren等人和Nguyen等人评估了Copilot在HumanEval数据集上的正确性,但缺乏自动化评估过程。
研究方法
这篇论文提出了一个自动化框架来评估Copilot生成的代码质量。具体来说:
- 数据收集: 使用LeetCode问题集,包含各种主题的编程问题,通常用于提高编程技能或准备面试。每个问题都有一个难度级别(简单、中等和困难),基于解决问题所需的中位时间。
- 自动化评估流程:
- 从LeetCode获取所有问题名称。
- 请求并解析问题内容,保存到文件中。
- 使用AppleScript自动化调用Copilot并保存生成的解决方案。
- 将每个Copilot建议插入到解决方案模板中,并提交到LeetCode。
- 检查提交结果并保存。
实验设计
- 实验设置: 使用一台Apple MacBook Pro A2141,Copilot版本1.79.10634,通过Visual Studio Code调用。使用AppleScript自动化应用程序间通信。
- 样本选择: 选择了支持至少一种编程语言且不需要实现多个函数的LeetCode问题,共1760个问题,涵盖Java、C++、Python3和Rust四种编程语言。
- 参数配置: 对于每个问题,最多调用Copilot 5次以生成解决方案。如果Copilot未能生成任何解决方案,则跳过该问题。
结果与分析
- 代码生成阶段的可靠性: Copilot在Java和C++中更可靠,生成失败的情况较少。Python3的生成失败情况最多,共有469个问题未能生成解决方案。
- 生成代码的正确性: Copilot在Java和C++中的正确率较高,分别为75.66%和73.33%。Python3的正确率为66.92%,Rust为62.23%。
- 代码生成阶段的排名: Copilot的主要建议(排名0)并不总是最好的,有时排名1或其他排名的建议更好。
- 时间和内存效率: Copilot生成的代码在时间和内存效率上优于平均人类提交的代码。Python3的平均最大运行时间百分位为77.11%,其他语言均超过86%。
结论
这篇论文通过自动化评估过程,分析了GitHub Copilot生成的代码质量。结果表明,Copilot在Java和C++中更可靠和准确,而在Python3中表现较差。Copilot生成的代码在时间和内存效率上优于平均人类提交的代码。未来的工作可以包括增加编程语言的数量和使用其他数据集来验证结果的普适性。
这篇论文为评估AI生成的代码提供了一个系统化的方法,并揭示了Copilot在实际应用中的优势和不足。
标签:perfect,compLeeter,GitHub,代码,生成,Python3,Copilot,评估 From: https://blog.csdn.net/sinat_37574187/article/details/143454008