使

使用 GitHub Copilot 进行的一些实验

2025-06-10

使用 GitHub Copilot 进行的一些实验

我最近拿到了 VS Code 的 GitHub Copilot 扩展,它非常棒(甚至有点吓人)

以下示例采用 Python 语言

获取 Pokemon 数据的函数

pokemonGithub

  • 还能自动完成我的评论。最初我根本没打算把它保存到 JSON 文件中。
  • 添加了一些行内代码注释
  • 使用外部库(requests)发出请求。使用 Json 保存数据。
  • 选择一个合适的文件名
  • 能够找到数据源,令人惊讶的是某人的 github repo

压缩和解压缩文件的功能

压缩解压

  • 能够导入所有必要的库。虽然它确实导入了shutil,但从未使用过。
  • 使用 zipfile 库来解压/压缩
  • 对于第二个函数,它没有导入 zipfile 库。
  • 能够使用正确的参数

构建井字棋游戏

井字棋

  • 生成64行代码
  • 能够编写用于各种目的的函数
  • 知道井字棋盘的获胜组合
  • 添加了错误处理
  • 添加打印语句并能够从用户那里获取输入
  • 检查游戏结果的逻辑

尽管它编写了所有子函数,但从未调用它们来实际构建可玩的游戏

加密货币价格

加密

  • 添加了一个参数
  • 使用加密 API 获取数据
  • 能够以正确的价格退回正确的列

构建一个streamlit应用程序来显示Github Repos

githubStreamlit

为此,我不得不写了很多注释,感觉就像是在和 Copilot 结对编程。不过,大部分代码都是由 Copilot 生成的。

  • 能够从 github api 获取数据
  • 既然我提到了热门,它就根据“星级”对代码库进行了排序。它居然能把“星级”和热门程度联系起来,真是令人难以置信。
  • 它能够使用外部库 streamlit(streamlit 用于构建 Web 应用程序)
  • 它还添加了要在 Web 应用中显示的标题和文本
  • 它重新使用了之前创建的函数
  • 大多数情况下,它也会自动完成我的评论

一般观察

  • 变量和函数名称非常具有解释性
  • 添加了相关的行内代码注释
  • 能够使用外部库
  • 能够从各种数据源获取数据
  • 代码格式清晰,缩进和换行正确
  • 我尝试了好几次(尝试了不同的注释),才让它真正使用 Streamlit 并构建了一个简单的应用。最后,我导入了库,它开始使用库生成代码。不过,有时它也能自己生成代码。
  • 在尝试获取 Pokemon/crypto 数据时,它经常会建议使用 Beautiful Soup 来抓取数据。网页抓取并非总是最佳选择,在某些情况下,甚至可能违反某些法律。

有些奇怪

  • 有时它的行为会很奇怪。例如,有时生成的代码会包含其他用户的本地文件路径,例如“Users/Projects/......”。

  • 我尝试获取名为 api_key 的变量的建议,结果它竟然建议了一个包含随机键的字符串。当然,它或许真的是随机的,但这确实很奇怪。

  • 有时它会生成接受代码。例如:当我尝试为 Streamlit 生成代码时,它一遍又一遍地生成相同的两行代码。

  • 它有时会提示一堆不必要的导入

  • 出于某种原因,尽管我特别提到了 streamlit,但它仍然继续生成使用 Dash 的代码


我的观点和一些问题

我的观点是我自己的

它肯定会提高软件开发人员的生产力。然而,我认为它不会取代软件开发人员。Copilot 经常生成无意义且重复的代码。它有时甚至不会导入必要的库。它基本上就像是加强版的 Kite 或 TabNine。 

我能想到的一个很好的类比是谷歌翻译。它已经存在很多年了,但它并没有取代真正的翻译。你可以在几秒钟内将一篇文章从英语翻译成日语。然而,你仍然需要一个精通两种语言的人来确保翻译的语法正确,并传达与原文相同的信息。

我能想到的另一个问题是——谁应该对代码负责?如果我使用 GitHub 生成了一些代码,后来因为某种原因被人起诉,我能把责任推到 GitHub 身上吗?GitHub 很可能会要求用户同意一些条款和条件,以防止他们被起诉。所以我们实际上需要一个软件经验丰富的人来确保生成的代码是安全的。

虽然 GitHub Copilot 对于新项目来说很不错,但我不确定它在现有代码库中是否同样有用。在现有代码库中,它必须遵循现有的编码风格,并且能够复用已编写的代码。我还没有在现有项目中尝试使用 Copilot,所以无法发表太多评论。

假设随着越来越多的用户使用它,它不断学习,它将如何区分“好”代码和“坏”代码或“意大利面条式代码”。

结论

GitHub copilot 可以保证的一件事是,它将使编码和软件总体上更容易访问💯

你对 Copilot 有什么看法?你用它尝试过什么好玩的东西吗?你认为它会如何影响软件/数据科学行业?请在评论区留言,发布、保存草稿、撤销新更改。


鏂囩珷鏉ユ簮锛�https://dev.to/rahulbanerjee99/some-experiments-with-github-copilot-4jao
PREV
Web 应用程序渗透测试清单 | 第 01 部分
NEXT
6 个你离不开的 GitHub 仓库