TabNine-智能的开发工具

TabNine-智能的开发工具

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


简介

近几年,人工智能迅速发展,在各行各业都有所应用,特别是近两年,面向开发者的AI开发工具也是层出不穷,特别是从GitHub Copilot工具中看到了AI对开发者带来的无限可能性。是目前业界比较实用的几款智能开发工具之一,TabNine支持的语言及IDE种类非常之多,在目前业界是数一数二的。

安装Tabnine

TabNine-智能的开发工具

可以选择自己喜欢的IDE,种类如此丰富,确定不来试试嘛?

支持功能

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

官方演示

链接:https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c1ccd0c042384aec989ba17055c819c3~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.awebp

从官方演示中我们能发现,TabNine能根据代码的上文,自动生成长序列的代码。在不同的代码行,仅需输入少量的字符,敲击回车即可完成一长串代码甚至一整行代码的编写。

使用体验

在针对Java语言的体验中,TabNine能对很多情况都生成较长的代码序列,不仅支持代码符号,也支持字符串、注释、Javadoc等内容的自动提示,在这方面还是比较方便的,但是通常自动提示的效果不是很好,毕竟这类信息的生成是需要理解代码的,而TabNine只能根据上文学习的模式进行生成,没有真正理解到代码的逻辑。除了Java文件,Java工程相关的文件如Yaml、properties等配置文件,它也能根据一定的模式进行自动提示。

但是TabNine经常会推荐生成了一半的补全结果,也会经常推荐出本工程内不存在的API,最让人不能接受的地方是如果是使用离线模式,内存占用量非常高,cpu占用有时候也会比较高。下面我们来看几个示例(以下示例基于TabNine Pro版本):

1.TabNine提供的代码补全经常会出现不完整代码片段,比如下图中的 HSSFWork。

TabNine-智能的开发工具

下图中的XSS也是不完整的,并且 sheet = new XSSFRow 该选项不符合语法,sheet变量对应的是XSSFSheet类。

TabNine-智能的开发工具

2.由于深度学习模型的推理非常耗时,所以TabNine考虑到性能原因,每次补全首次触发时会通过轻量级模型进行代码生成,在下次触发时通过缓存获取深度学习模型的结果,所以如果我们在同一个光标位置,重新触发代码补全,TabNine会提供给我们更好的补全结果。上面两幅图均为首次触发的结果,下图为第二次触发的结果,可以看到代码生成半截的情况会少很多,但是依然存在语法错误。

TabNine-智能的开发工具

3.TabNine能提供比较长的补全结果,但遗憾的是getSheetCount方法是不存在的,存在语法错误。

TabNine-智能的开发工具

4.比较好的地方是TabNine对之前出现过的代码学习能力较好,能快速的学习到出现过的代码模式。

TabNine-智能的开发工具

总结

总的来说,TabNine能提供长序列的代码补全。像其他工具一样,它会推荐出不完整的代码以及存在语法错误的代码。从部分开发者的反馈了解到,有部分开发者喜欢TabNine即时学习代码模式的能力,这点是相比其他工具比较不错的,虽然目前提取代码模式的能力还存在比较多的缺陷,但是相信未来会逐渐完善。

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧