史上最全智能代码补全工具系列——序篇

近几年,人工智能迅速发展,在各行各业都有所应用,特别是近两年,面向开发者的AI开发工具也是层出不穷,从这些工具中,我们看到了AI能为开发者带来的无限可能性。本系列文字主要介绍目前业界比较实用的几款智能编码辅助工具,并会在后续的文章中做一些更为详细的对比评测。

本系列文章涉及到的工具包含国外的Kite、Codota、TabNine、GitHub Copilot、微软IntelliCode,国内的阿里云Cosy、AIXcoder,本序篇将进行简单的介绍。

一、Kite

说到业界在代码智能补全领域发布最早的工具,Kite便是其中之一,它成立于2014年,在Atom/Vim/Spyder等编辑器发布代码智能提示插件,初期只面向Python开发者,当前扩展到面向绝大部分主流开发语言。并于2020年初发布JetBrains插件,2021年初发布VSCode插件。Kite支持目前主流的16种开发语言以及16种代码编辑器,但是从我的使用体验上来看,其最擅长的还是Python语言,毕竟是Kite最早支持的语言类型。

支持功能

  • 代码智能补全
    • 远程服务模式,代码需要上传到远程服务器
    • 离线模式,能够把模型下载到用户本地,无法联网也可使用补全
    • 专业版能针对用户的代​​​​​​​

二、Codota

除了Kite,业界另一个涉足最早涉足该领域的工具是Codota,Codota成立于2013年,在2014年下旬发布第一个Jetbrains插件版本,主要面向Java开发者。但是,目前Codota公司收购TabNine之后,已经放弃了Codota这款插件,并将老产品改名为了TabNine。

支持功能

  • 代码补全
    • 基于程序分析、统计分析的规则化代码补全,主要能针对部分类名、常用的代码模板进行补全
  • 代码示例搜索(支持Java、JavaScript)
    • 支持搜索引用了指定API的代码示例
    • 支持关键词搜索

三、TabNine

TabNine是一款比较年轻的开发工具,刚发布的时候还是比较惊艳的,那个时候OpenAI刚开源GPT-2模型不久,TabNine基于GPT-2模型在海量代码数据上进行调优,打造出了一款针对代码的深度学习引擎,它能智能识别代码的上文信息,提供长序列的代码补全结果。目前,已经被Codota公司收购,并主推该工具,宣称支持所有主流的开发语言。

支持功能

  • 代码智能补全
    • 免费版只提供较为基础的补全功能,收费的Pro版本补全效果更好
    • 远程服务模式,代码需要上传到远程服务器,但是模型更强大,本地内存占用少
    • 离线模式,能够把模型下载到用户本地,无法联网也可使用补全,但是本地内存占用高,有时候CPU会飙高
    • 针对专业版提供了适配企业/私有代码的能力,是需要收费的
  • 度量分析
    • 在IDE中提供了简单的编码效能的数据

四、GitHub Copilot

GitHub近期发布的的代码智能生成插件,目前支持VSCode、JetBrains等IDE平台,不同于其他代码补全工具只提供最多一行的补全结果,Copilot能通过代码上下文以及语言描述,生成整个代码片段,无疑是开发者的编码利器。它是如何做到的呢?上文提到TabNine使用的是GPT-2深度学习模型,而Copilot使用的是OpenAI据说烧了数千万美元研发出来的GPT-3模型,Copilot在GPT-3模型基础之上通过对GitHub的开源代码进行学习,得到了Codex模型,该模型具备强大的代码生成能力。但是由于该模型非常庞大,需要有足够的硬件支撑,所以Copilot目前只能通过邀测的形式小范围试用。从FAQ中的信息显示,Copilot未来可能不会大面积免费开放,未来想要尝试该工具的开发者要准备好预算。

支持功能

  • 只提供了远程服务模式,需要将代码上传到远端,所以如果是企业的开发者可能要注意数据安全了
  • 能够通过代码上下文、注释及语言描述生成方法级的代码片段

五、微软IntelliCode

要说做开发工具哪家强,那肯定是微软最厉害,上面提到的GitHub Copilot使用的GPT-3模型,其研究组织OpenAI也是受微软10亿美元投资的,所以Copilot也有微软的功劳。微软自己开发的另一款工具IntelliCode,在2018年7月发布,支持C#、C++、Java、Python、SQL Server、TypeScript/JavaScript、XAML,并且在2021年初发布Visual Studio IntelliCode Insiders插件。跟其他众多补全工具一样,提供了代码智能补全的能力,目前支持VSCode以及Visual Studio。效果较好的语言:C#、C++

支持功能

  • 代码智能补全
    • 单API补全,跟IDE自带补全类似,但是在排序上有所优化
    • 适配企业/私有代码(只支持C++、C#)
    • 支持离线模式
  • 代码重构
    • 开发者修改代码时,提示并自动帮助开发者修改在重复代码上的问题
  • 代码评审
    • 用官方主页的话来说“在代码评审时,Visual Studio IntelliCode 就像是开发者一双额外的眼睛,它可根据代码改动、复杂度和历史记录等因素,将需要额外关注的更改提取出来”。因为该功能目前无法体验到,所以不做过多介绍。
  • IntelliCode Insiders独立插件
    • API代码示例搜索(仅支持Python),能够搜索Python语言的API代码示例
    • 日期pattern识别(仅支持TypeScript/JavaScript)

再来看看两个国产的工具。

六、阿里云Cosy

阿里云的智能编码插件Cosy于2021年10月份发布,到现在才两个月时间,是个相对年轻的工具。目前仅支持Java语言。通过其帮助文档了解到,它使用深度学习模型加语法分析结合的技术,通过深度学习模型强力的学习能力生成长序列代码,同时又通过结合语法分析的能力去纠正模型生成的错误。我个人比较喜欢的是Cosy的代码搜索功能,它从GitHub和StackOverflow中抽取出了常用的代码片段,让我能很方便的在IDE中直接搜索需要的信息。

支持功能

目前仅提供IntelliJ IDEA插件,支持Java语言,相比于其他工具支持的语言种类比较少。

  • 代码智能补全
    • 支持整行的代码补全结果
    • 离线模式,Cosy会在首次启动时把模型下载到本地,之后便可断网使用
  • 代码示例搜索
    • 在IDE内支持指定API的代码示例搜索
    • 在IDE内支持通过功能描述搜索StackOverflow、GitHub等来源的开源代码片段

七、AIXcoder

AIXcoder从天眼查了解到其成立于2017年,根据官网主页的信息,它也采用了深度学习的技术,并且对模型进行了压缩,以便于提升用户下载模型的速度,减少用户本地CPU的开销。AIXcoder提供了对用户本地代码库学习的工具,但是免费版有次数限制,而且学习本地代码库的时候电脑会比较卡。让我有点疑惑的是,AIXcoder官网主页视频中演示了IDE内的代码搜索功能,但是在实际插件中只提供了一个跳转到浏览器中的按钮,并不能在IDE内直接搜索(难道是需要付费的?)。目前发布了Jetbrains及VSCode插件,主要支持Java、Python、C/C++、JavaScript、Typescript、Go、PHP等语言。

支持功能

  • 代码智能补全
    • 远程服务模式,代码需要上传到远程服务器,速度更快一点,卡顿感会减少
    • 离线模式,会把模型下载到本地,并且会根据当前正在写的代码,动态的去下载相应的模型
    • 适配企业/私有代码,是需要收费的
  • 代码示例搜索(支持Java、C++、Python)
    • IDE插件端内部不支持,需要跳出到网页中搜索
    • 网页蛋支持代码示例搜索、自然语言搜索、相似代码搜索等
    • 适配企业/私有代码,是需要收费的
  • 度量分析
    • 编码时长、智能补全采纳率、节省时间等,普通版本不支持

本系列后续的文章将对每个工具进行单独介绍及使用体验,并会在后续的系列文章中进行更详细的对比评测,欢迎大家关注!本文首发于知乎头条,请关注@天天写Bug

你可能感兴趣的:(智能开发,开发语言,编辑器,intellij,idea,vscode,java)