近几年,人工智能迅速发展,在各行各业都有所应用,特别是近两年,面向开发者的AI开发工具也是层出不穷,从这些工具中,我们看到了AI能为开发者带来的无限可能性。本系列文章主要介绍国外的Kite、Codota、TabNine、GitHub Copilot、微软IntelliCode,国内的阿里云Cosy、AIXcoder等程序员比较常用的智能编码辅助工具,并会在后续的文章中做一些更为详细的偏个人使用感受的对比评测。
上一篇我们介绍了史上最全智能代码补全工具系列之Kite篇,本篇文章我们来看看另一款比较老的工具Codota,官网主页:
AI Code Autocomplete for All Languages and IDEs | Codota
Codota也是业界涉足该领域比较早的工具,Codota成立于2013年,在2014年下旬发布第一个JetBrains插件版本,主要面向Java开发者。但是,目前Codota公司收购TabNine之后,已经放弃了Codota这款插件,并将老产品改名为了TabNine。效果最好的语言:Java
支持功能
1、代码补全
- 基于程序分析、统计分析的规则化代码补全,主要能针对部分类名、常用的代码模板进行补全
2、代码示例搜索(支持Java、JavaScript)
- 支持搜索引用了指定API的代码示例
- 支持基于关键词匹配的代码示例搜索
官方演示
从官方视频中能看到,Codota能提供长序列的代码补全,并且能自动生成上文中不存在的变量定义。
使用体验
Codota的代码补全功能能在一些非常通用的代码上提供补全结果,在代码模板的推荐效果上比较好,可以认为是IDEA代码模板的补充,但是在代码上下文识别、变量自动填充等方面效果比较一般。
下面展示几个Java使用示例:
1)Codota在补全时能生成了非常多的补全结果,但是补全结果太多,很多时候是比较打扰我编码的,会把IDE自带的补全挤到很后面,而且有很多不太准确,同时也存在类似Kite的语法错误问题,比如下图中的 url 变量是不存在的。
2)我们再来看看变量的自动填充效果如何:当上文中存在filePath变量时,Codota有一个补全项自动填充了filePath变量,但是其他的补全项并没有识别到已经声明了文件路径的场景,反而推荐了各种代码模板,这些都不是我想要的,过多的结果反而对我形成了干扰。
如果我们将filePath变量改个名,比如filePathTest,那么Codota就不会进行变量的自动填充,说明Codota的变量自动填充的能力比较有限,更多的是进行代码模板的推荐。
3)在下面的动图中,我们可以看到Codota无法自动将inputStream变量填充到XSSFWorkbook的参数中,需要人工填写,并且在后续的补全中不能很好的识别代码上文,在下一行依然在推荐Workbook的初始化代码,而当我们希望通过已有的workbook变量获取XSSFSheet结果时,Codota无法识别到已有的workbook变量。
4)当然,在代码模板方面,它对IDEA的代码模板进行了进一步的补充,这点是比较方便的,如下图中Codota提供了3个包含"read"关键词的代码模板,选中第一项"readInputLines"之后,会在右侧显示代码模板的内容。
选择"codota:readInputLines"敲击回车后,就能展示用于读取文件行的代码模板片段,能帮助我们减少低级重复性代码的编写。
我们再来体验一下Codota的API代码示例搜索功能,Codota提供了网页版以及IDE内置版。
从上图中我们能看到,Codota能右键指定的Java API搜索对应的代码示例,也能通过在右侧工具栏中输入多个API名称联合搜索,代码示例来源于Github、StackOverflow等开源渠道的代码数据。比较适合于提前了解一些API,但是对某些API不太熟悉的开发场景,节省去Google、GitHub等网站查询的时间,而且Codota提供的API是精准搜索(能识别代码中变量、类名等对应/所属类的全路径),从而避免像GitHub搜索中因API同名过多,而无法准确查找的问题。
总体来说,在其他代码补全工具发布之前,Codota还是一个比较不错的开发利器,特别是丰富了IDE自带的代码模板,可以帮助开发者节省很多低级编码的时间,Codota也有一些用于生成代码的小功能,这里就不再扩展。但是在目前AI爆发的时代,Codota的产品演进没有跟上步伐,所以Codota公司已经放弃该产品的演进,转而大力发展收购的TabNine,本系列下一期我将带大家一起体验TabNine。
Codota就为大家介绍到这里,文中如有纰漏欢迎指正,有兴趣的小伙伴可以在IDE插件市场通过搜索Codota安装体验,欢迎大家在评论中交流反馈。