史上最全智能代码补全工具系列之微软IntelliCode篇

12,480 阅读4分钟

近几年,人工智能迅速发展,在各行各业都有所应用,特别是近两年,面向开发者的AI开发工具也是层出不穷,从这些工具中,我们看到了AI能为开发者带来的无限可能性。本系列文章主要介绍国外的Kite、Codota、TabNine、GitHub Copilot、微软IntelliCode,国内的阿里云Cosy、AIXcoder等程序员比较常用的智能编码辅助工具,并会在后续的文章中做一些更为详细的偏个人使用感受的对比评测。


上一篇我们介绍了GitHub Copilot,本篇文章我们来看看微软发布的一款工具IntelliCode,官网主页

visualstudio.microsoft.com/zh-hans/ser…

要说做开发工具哪家强,那肯定是微软最厉害,上面提到的GitHub Copilot使用的GPT-3模型,其研究组织OpenAI也是受微软10亿美元投资的,所以GitHub 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)

官网演示

如下图中Python语言的演示,我们在输入"."进行方法调用时,IntelliCode会自动识别代码上文,将当前位置可能性较高的API排序在候选项的顶部,从而减少开发者需要输入多个字符进行API筛选的烦恼。

使用体验

我们先来试试Python语言。

1)如下图中,IntelliCode根据代码上文,识别出当前位置需要选择tensorflow的dtype,所以IntelliCode将dtype相关的补全项排序在了顶部。

2)IntelliCode只会在输入完英文逗号后才会提供排序优化,如果开发者继续输入,IntelliCode不会持续的提供候选项的排序优化,如下图中,当用户输入get后,IntelliCode不会再提供排序优化。

3)IntelliCode的排序优化后的结果有时候也不太理想,比如下图中,我本意是想使用各种Optimizer,但是IntelliCode将它们都排在了最下面。

我们再来看看IntelliCode在Java语言上的使用体验。

如下图所示,IntelliCode只有在sb. 时才能提供对方法调用的排序,并且只能推荐单个API(标有星号的结果),无法像其他工具一样生成长序列的代码片段。

类似下图这种类实例化的补全,IntelliCode是无法提供的。

有很多时候,方法调用的补全IntelliCode也是无法提供的。

总体来说,IntelliCode能对IDE自带补全结果进行排序优化,但是支持的场景比较少,并不是所有补全都能提供排序优化,目前体验下来仅局限于方法调用的代码。整体体验下来,感觉IntelliCode在Java语言上实用性不强,基本上没有体感;在Python语言上有时候还是比较方便的,适合不喜欢长序列/片段级代码补全工具的开发者。

IntelliCode就为大家介绍到这里,文中如有纰漏欢迎指正,有兴趣的小伙伴可以在IDE插件市场通过搜索IntelliCode安装体验,欢迎大家在评论中交流反馈。本系列下一期将为大家带来阿里云的智能编码插件Cosy,敬请期待!