首页 > 其他分享 >GitHub Copilot: the perfect Code compLeeter?

GitHub Copilot: the perfect Code compLeeter?

时间:2024-11-03 19:16:10浏览次数:5  
标签:perfect compLeeter GitHub 代码 生成 Python3 Copilot 评估

全文总结

这篇论文评估了GitHub Copilot生成的代码质量,基于LeetCode问题集,使用了一个自定义的自动化框架。

研究背景

  1. 背景介绍: 这篇文章的研究背景是GitHub Copilot在2021年发布,作为一个“AI配对编程员”,可以根据一些上下文(如注释、函数名或周围的代码)生成不同语言的代码。然而,Copilot生成的代码并不总是有效或合理。根据GitHub的数据,约26%的Copilot建议被用户接受。
  2. 研究内容: 该问题的研究内容包括:评估Copilot在代码生成阶段的可靠性、生成代码的正确性及其对编程语言、问题难度和问题主题的依赖性。此外,还评估了代码的时间和内存效率,并将其与平均人类结果进行比较。
  3. 文献综述: 该问题的相关工作有:Pearce等人评估了Copilot生成代码的安全性;Imai进行了实证实验,比较了AI和人类参与者在自然软件开发环境中的表现;Arghavan等人也进行了实证研究,比较了Copilot和人类解决方案的性能;Yetistiren等人和Nguyen等人评估了Copilot在HumanEval数据集上的正确性,但缺乏自动化评估过程。

研究方法

这篇论文提出了一个自动化框架来评估Copilot生成的代码质量。具体来说:

  • 数据收集: 使用LeetCode问题集,包含各种主题的编程问题,通常用于提高编程技能或准备面试。每个问题都有一个难度级别(简单、中等和困难),基于解决问题所需的中位时间。
  • 自动化评估流程:
    1. 从LeetCode获取所有问题名称。
    2. 请求并解析问题内容,保存到文件中。
    3. 使用AppleScript自动化调用Copilot并保存生成的解决方案。
    4. 将每个Copilot建议插入到解决方案模板中,并提交到LeetCode。
    5. 检查提交结果并保存。

实验设计

  • 实验设置: 使用一台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

相关文章

  • 项目发布GitHub完全指南 - 从本地到开源
    引言将项目发布到GitHub不仅能方便版本管理,还能与全球开发者分享你的代码。本文将详细介绍如何将一个完整项目发布到GitHub的全过程,包括前期准备、具体操作步骤以及最佳实践。一、前期准备工作1.1环境准备安装Git#Windows用户可以下载Git官方安装包#Mac用户可以使用ho......
  • hexo 推送需要github的用户名
    问题描述hexo博客许久未写,今天尝试更新,发现hexod之后需要输入github的用户名和密码,但是我输入之后没有效果,还是无法推送到github上。研究之后发现rootcause是:github已经无法再用密码登陆推送,只能用token,而这里的token并不是ssh-keys里面的key,而是个人token。Sett......
  • 关于Copilot出现:You don`t have access to Github Copilot .....的问题解决方案
    前面如何如何配置,以及如何如何上传学生证资料等我这里不赘述badendinghappyending出现这个界面这个问题就是set_up不是很完全,设置一下就行disable改为enable等这样再回去IDE,就可以正常使用了......
  • 如何使用GitHub上传文件
    使用GitHub上传文件的方法:1.创建GitHub仓库;2.使用GitHubDesktop上传文件;3.使用命令行上传文件;4.检查GitHub仓库。在开始之前,您需要一个GitHub账号。如果还没有账号,您可以在GitHub官方网站上注册一个。1.创建GitHub仓库在开始之前,您需要一个GitHub账号。如果还没有账号,您可以......
  • GitHub每日最火火火项目(10.31)
    open-mmlab/Amphion:“open-mmlab/Amphion”是一个专注于音频、音乐和语音生成的工具包。其发音为/æm’fɑːrən/。这个项目旨在支持可重复的研究,并帮助初级研究人员和工程师在音频、音乐和语音生成的研究与开发领域迈出第一步。在当今数字化时代,音频技术在音乐制作、语......
  • 如何给Github配置SSH密钥
    Github配置SSH密钥1.生成SSH密钥打开终端并输入以下命令(-C后是你GitHub的邮箱地址):Windows下请在:GitBash下操作ssh-keygen-trsa-b4096-C"[email protected]"#按Enter保存密钥到默认路径(/home/username/.ssh/id_rsa)。#与Linux类似,Windowsssh保存使用......
  • Github上的十大RAG(信息检索增强生成)框架
    信息检索增强生成(Retrieval-AugmentedGeneration,简称RAG)是一种强大的技术,能够显著提升大型语言模型的性能。RAG框架巧妙地结合了基于检索的系统和生成模型的优势,可以生成更加准确、符合上下文、实时更新的响应。随着对先进人工智能解决方案需求的不断增长,GitHub上涌现出众......
  • 图文并茂教你如何发布自己的NPM包(GitHub Packages npm 包发布)
    前情提要发布包到npm也好,到githubpackages仓库也好,都是一样的道理,只是仓库地址不一样而已,本文是将npm包发布到了GitHubPackages~GitHubPackages简介GitHubPackages是一种软件包托管服务,和npm类似,允许您私下或公开托管软件包,并将包用作项目中的依赖项。快速上手仓库准备......
  • 使用 FastGPT 工作流搭建 GitHub Issues 自动总结机器人
    如今任何项目开发节奏都很快,及时掌握项目动态是很重要滴,GitHubIssues一般都是开发者和用户反馈问题的主要渠道。然而,随着Issue数量的增加,及时跟进每一个问题会变得越来越困难。为了解决这个痛点,我们开发了一个自动化Issue总结机器人,它的功能很简单:自动获取项目最新的Gi......
  • 全网爆火神书《从零构建大模型》分享,尚未发布,GitHub标星22k!
    本书介绍《从零构建大模型》是一本即将于今年10月底发布的书籍,github已经吸引了惊人的21.7k标星!作者是威斯康星大学麦迪逊分校的终身教授,在GitHub、油管、X上拥有大量粉丝,是一位真正的大佬。本书免费获取地址:在本书中,读者将从内到外了解LLM的工作原理。在这本富有洞......