github copilot怎么使用|github copilot教程
近几年,人工智能迅速发展,在各行各业都有所应用,特别是近两年,面向开发者的AI开发工具也是层出不穷,从这些工具中,我们看到了AI能为开发者带来的无限可能性。本系列文章主要介绍国外的Kite、Codota、TabNine、GitHub Copilot、微软IntelliCode,国内的阿里云Cosy、AIXcoder等程序员比较常用的智能编码辅助工具,并会在后续的文章中做一些更为详细的偏个人使用感受的对比评测。
上一篇我们介绍了史上最全智能代码补全工具系列之TabNine篇,本篇文章我们来看看一款近期发布的一款工具GitHub Copilot,官网主页:https://copilot.github.com/
GitHub Copilot(以下简称Copilot)是近期发布的代码智能生成插件,目前支持VSCode、JetBrains等IDE平台,不同于其他代码补全工具只提供最多一行的补全结果,Copilot能通过代码上下文以及语言描述,生成整个代码片段,无疑是开发者的编码利器。它是如何做到的呢?本系列上期文章提到的TabNine使用的是GPT-2深度学习模型,而Copilot使用的是OpenAI据说烧了数千万美元研发出来的GPT-3模型,Copilot在GPT-3模型基础之上通过对GitHub的开源代码进行学习,得到了Codex模型,该模型具备强大的代码生成能力,但是由于该模型非常庞大,需要有足够的基础设施支撑,所以Copilot目前只能通过邀测的形式小范围试用,从FAQ中的信息显示,Copilot未来不太可能会大面积免费开放,所以喜欢该工具的开发者需要做好掏钱的准备。
支持功能只提供了远程服务模式,需要将代码上传到远端,所以如果是企业的开发者可能要注意数据安全了能够通过代码上下文、注释及语言描述生成方法级的代码片段官网演示如下图所示,我们仅需要输入代码的功能描述以及代码的方法名称,Copilot会自动识别代码的上下文,等待2~3秒即可生成完整的方法片段。
官网的演示示例中提到了3个使用场景:
1、根据代码注释生成代码片段
2、自动填充具备固定模式的重复代码
3、自动生成单元测试用例,特别是生成Mock数据
使用体验Copilot的模型非常强大,其原理本质上跟TabNine是相似的,但是Copilot的代码生成效果要好很多,毕竟模型大小不是一个层次的。Copilot代码生成结果的展现形式跟其他工具都不同,它采用了内联的方式,这种方式非常直观的展示的代码生成后的样子,适合多行代码片段的展示,但是这种方式不适合推荐结果比较多的时候,只能通过快捷键切换结果,而且如果开启了自动触发,在写代码时经常会在我不需要的时候出现,把正在编写的代码挤到下面去,这对我的日常编码是一种打扰。
下面我们来看几个Java示例:
1)用同样的示例,Copilot能将整行进行补全,并且自动将inputStream填充到参数中。
2)Copilot也能自动识别到上文中出现过的workbook变量及其getSheetAt方法,没有发生语法错误的问题。
3)虽然在上一个例子中补全效果较好,没有出现语法错误的问题,但是Copilot依然会在很多情况下生成存在语法错误的代码片段。如下图所示,StringUtils类是在本地工程中创建的,类下面只有一个readTestFile方法,然而Copilot却生成了print方法,因为Copilot是根据数亿的开源代码学习到的,不能及时的去学习本地工程的代码信息,所以本质上跟TabNine一样是会存在语法错误的问题,只是由于模型更强大,所以错误的概率更小,但是一旦涉及到本地工程的代码,错误的概率就会非常高。
4)用Copilot写单元测试是非常方便的,它能帮助我生成很多测试数据,减少我Mock数据的烦恼。
5)Copilot方法级的代码生成也有很多错误的时候,比如生成读取XML文件的代码,结果生成的是读取Excel的代码,可能是因为类开头import了较多Excel相关的API。
如果我把import去掉,那么它就无法生成了,只会根据注释生成另一段注释。
有时候它生成的代码会陷入无限重复,比如下图中陷入了生成Insert的死循环。
总的来说,GitHub Copilot是一款非常好用的代码生成工具,适合生成通用的工具代码、leetcode算法、单元测试等场景的高频代码,而对业务代码的生成则依然存在语法错误的问题,可惜Copilot只提供了远程服务模式,并且基于Copilot当前的技术路线也不太可能提供离线模式,这点可能会带来潜在的隐私及代码数据的泄露风险,希望以后收费不会太贵。
相关内容
-
pdf转ppt免费软件|pdf转换成ppt的方法
pdf转ppt免费软件|pdf转换成ppt的方法,方法,转换成,免费软件,...
-
视频格式怎么改为mp4|爱奇艺视频格式转换方法
视频格式怎么改为mp4|爱奇艺视频格式转换方法,视频格式,转换...
-
mpg格式转换为mp4格式的方法|电脑怎么把mpg转换
mpg格式转换为mp4格式的方法|电脑怎么把mpg转换为mp4,格式,方...
-
抖音视频横屏怎么设置|抖音横屏视频上下填充剪
抖音视频横屏怎么设置|抖音横屏视频上下填充剪辑方法,横屏,视...
-
多张图片怎么转换成pdf文件|多张图片合成一个pd
多张图片怎么转换成pdf文件|多张图片合成一个pdf文件的方法,...
-
安卓与苹果怎么互传|安卓与ios互传文件的方法
安卓与苹果怎么互传|安卓与ios互传文件的方法,互传,安卓,文件...
-
除法函数公式excel 怎么输入|excel除法函数使用
除法函数公式excel 怎么输入|excel除法函数使用方法,函数,除...
-
wifi不能上网怎么办|电脑和手机连上wifi都没网
wifi不能上网怎么办|电脑和手机连上wifi都没网解决方法,解决...
-
电脑蓝屏开不了机怎么回事|电脑蓝屏开不开机解
电脑蓝屏开不了机怎么回事|电脑蓝屏开不开机解决方法,电脑蓝...
-
电脑上如何截长图快捷键|电脑如何截取长图的3种
电脑上如何截长图快捷键|电脑如何截取长图的3种方法,快捷键,...
-
win7如何解除网速限制|解除win7系统下带宽网速
win7如何解除网速限制|解除win7系统下带宽网速限制的方法,解...
-
两个路由器怎样无线桥接|两个路由器无线桥接教
两个路由器怎样无线桥接|两个路由器无线桥接教程详细,桥接,路...
-
台式电脑显示无信号黑屏怎么办|电脑显示器黑屏
台式电脑显示无信号黑屏怎么办|电脑显示器黑屏无信号解决方...
-
找回手机密码的方法|手机密码解锁的三种方法
找回手机密码的方法|手机密码解锁的三种方法,方法,密码解锁,...
-
怎么备份整个硬盘数据|电脑硬盘数据备份最好的
怎么备份整个硬盘数据|电脑硬盘数据备份最好的方法,数据备份,...