IDA插件之智能代码补全工具

下面介绍一下目前比较实用的几款代码补全工具,或者说编码辅助工具,毕竟有些工具不局限于代码补全。
本文包含国外的Kite、Codota、TabNine、GitHub Copilot、微软IntelliCode,国内的阿里云Cosy、AIXcoder。
  • TabNine支持的语言及IDE种类最丰富,本地模式内存占用高;
  • GitHub Copilot提供的代码补全/生成效果更惊艳,每月10美元;
  • 阿里云Cosy的代码搜索功能比较实用,可以与其他工具搭配使用;
  • Kite仅适合Python开发者,补全不算惊艳;
  • Codota已经不再维护了,可以不考虑了;
  • IntelliCode实用性不强,未来或许会与GitHub Copilot整合;
  • AIXcoder中规中矩,缺少亮点;

 

Bito

基于GPT-4的 IDEA、vscode 神级插件,由 OPENAI 团队开发,堪称辅助神器!

Bito是一款在IntelliJ IDEA、vscode编辑器中的插件,Bito插件是由ChatGPT团队开发的,它是ChatGPT团队为了提高开发效率而开发的一款工具。Bito插件的强大之处在于它可以帮助开发人员更快地提交代码,同时还提供了一些有用的功能,如自动补全提交信息、快速查看历史记录等。
Bito 的 AI 帮助开发人员显著加快其影响力。这是一把瑞士军刀的功能,使用与 ChatGPT 相同的模型,可以提高您的开发人员生产力并每天为您节省一个小时!

Bito AI使编写代码,理解语法,编写测试用例,解释代码,评论代码,检查安全性甚至解释高级概念变得容易。经过数十亿行代码和数百万个文档的培训,我们可以帮助您完成的工作,而无需搜索网络或浪费时间在繁琐的事情上,这真是令人难以置信。

使用:

用法一:首先右边栏会有一个bito的按钮,点开后即可直接输入问题让插件回答,也就是传统的gpt问答模式;

用法二:选中一段代码,右键后,在BitoAI的tab下可以有多种选择,如:解释代码、生成注释、安全检测、增强可读性等操作

 

在IDEA中,Bito插件提供了许多有用的模板。这些模板可以帮助开发人员快速创建各种类型的代码,并提高代码的生产率和质量。下面是一些常用的Bito模板:

1. Java Class:生成一个Java类,并包含常见的类文件头部信息;

2. Test Class:生成一个测试类,并包含JUnit测试框架的必要代码;

3. Getter and Setter:生成JavaBean的Getter和Setter方法;

4. Override Method:重写父类或接口中的方法;

5. Logger:在类中生成一个日志记录器;

6. Constructor:生成指定参数列表的构造函数;

7. Try-Catch:生成try-catch语句块,用于捕获可能发生的异常;

8. Main Method:生成一个包含main方法的类,并包含常见的命令行参数解析代码。 使用Bito模板可以大大提高代码的编写速度,同时也可以避免一些常见的代码错误。开发人员可以根据自己的需求自定义模板,或使用Bito插件提供的默认模板。

 

在 IDEA 中使用 Bito 插件的模板非常容易。按照以下步骤操作即可:

1. 打开 IDEA,并在菜单栏中选择 File -> Settings;

2. 在弹出的窗口中,找到 Editor -> Live Templates,并单击它;

3. 在 Live Templates 面板中,选择 Bito Templates 选项卡,并单击要使用的模板;

4. 在窗口的右侧,您将看到所选模板的详细信息,包括模板代码和说明;

5. 在您的代码编辑器中,输入模板的快捷键,然后按 Tab 键即可使用该模板。

6. 根据需要,您可以修改模板的内容和参数,以满足您的需求。 总之,使用 Bito 插件的模板可以帮助您更快地编写代码,提高代码的可读性和可维护性,从而提高代码的质量和开发效率。

 

GitHub Copilot

GitHub Copilot 是 GitHub 和 OpenAI 联合发布的 AI 代码补全工具,该工具是一个 AI 代码合成器,并不是搜索引擎,基于 GitHub 及其他网站的源代码,可根据上文提示为程序员自动编写下文代码。使用时程序员只要写下一段注释或者函数头,Github Copilot 就可以补全剩下的代码、提出改进的建议,为程序员省去大量查找的时间,从而可以保持更高的专注力。

Copilot X则是一种与程序员合作编写代码的AI模型,它基于GPT-3自然语言处理技术,可以自动完成完整的函数和整个代码块。Copilot X可以理解上下文,根据用户的输入和代码库中的知识来产生建议和提示,并且可以根据用户的反馈不断优化自身的输出结果,在程序开发过程中提供无缝的协助。

Github Copilot 具体功能如下:

    • Copilot 能根据编程者已写出的上下文生成匹配的代码;
    • 给出函数名和参数,Copilot 就能自动补全代码;
    • Copilot 能根据一条描述代码逻辑的注释自动生成代码;
    • Copilot 可以将简单重复的代码编写部分自动化;
    • Copilot 可以用于协助软件测试,导入一个软件测试包,其余测试代码 Copilot 就能够自动补全
    • 同一个函数有多种实现方法,Copilot 可以提供多种方法供编程者选择

注意:idea 版本必须是 2021.2 或者更高,否则是无法搜索到 copilot 插件。

安装后根据提示重启 IDE,接下来还需要关联 github 账号才可使用该插件。点击 Tools -> GitHub Copilot -> Login to GitHub

 (3)接着会弹出一个对话框显示我们设备 code,点击 Copy and Open 按钮;

(4)浏览器会自动打开 copilot 的激活页面,粘贴输入我们的设备码并点击 Continue 按钮;

(5)在接下来的授权页中点击 Authorize GitHub Copilot 即可激活成功。

 

GitHub Copilot提供了片段级的代码补全功能,可以用于注释生成代码、生成单元测试等场景。

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

插件使用

(1)这里我在 IDEA 里打开一个 Java 文件,随便输入一段注释;
(2)回车后则会自动出现对应的代码提示:
(1)如果对当前建议的代码不满意,可以使用快捷键切换下一条或者上一条建议:
  • 下一条:Alt + ]
  • 上一条:Alt + [
(2)我们也可以使用 Alt + Enter 快捷键打开单独窗口显示所有建议。
(3)如果对当前建议代码满意的话按下 Tab 键即可,如果不满意则按下 Esc 取消。
 

GitHub Copilot根据注释生成代码:

 

通过单元测试方法名生成单元测试及Mock数据:

GitHub Copilot是一款非常好用的代码生成工具,适合生成通用的工具代码、leetcode算法、单元测试等场景的高频代码,而对业务代码的生成则依然存在语法错误的问题,可惜Copilot只提供了远程服务模式,并且基于Copilot当前的技术路线也不太可能提供离线模式,这点可能会带来潜在的隐私及代码数据的泄露风险

使用:

1.在GitHub Copilot注册

网址:GitHub Copilot · Your AI pair programmer

1.先写一段注释说明目的(要简明,要英语),然后再写代码,或反过来,先写代码,后写注释,推荐前者

2.出现灰色的时候Tab可以快速补全,Ctrl+Enter会给出最多十个建议 ,Alt+]是下一个,Alt+[是上一个

体验:

1.Ctrl+Enter,会弹出一个页面,可以选择喜欢的,点一下Accept Solution即可,就可以选择最适合的代码

 

 Cursor

Cursor.so是一款基于GPT的代码生成工具,它可以帮助开发者快速生成代码,提高开发效率。GPT是一种自然语言处理技术,可以根据输入的文本生成相应的文本。Cursor.so利用GPT技术,将开发者的自然语言描述转化为代码,从而实现代码的快速生成。

Cursor和Copilot X都是由OpenAI公司开发的人工智能(AI)工具,但它们的作用和应用场景略有不同。

Cursor是一种自然语言处理模型,旨在为编程人员提供代码补全和错误检测等服务。通过分析用户输入的代码和相关上下文,Cursor可以帮助程序员更快地编写正确的代码,从而提高编程效率和代码质量。

Copilot X则是一种与程序员合作编写代码的AI模型,它基于GPT-3自然语言处理技术,可以自动完成完整的函数和整个代码块。Copilot X可以理解上下文,根据用户的输入和代码库中的知识来产生建议和提示,并且可以根据用户的反馈不断优化自身的输出结果,在程序开发过程中提供无缝的协助。

因此,Cursor主要是帮助程序员在编写代码时提高效率和准确性,而Copilot X则更像是一个可协同编程的“同事”,能够在编写代码的过程中提供更加智能的辅助功能,使得编程更加快捷、高效。当然,它们两者之间也有交集,都可以帮助程序员提高编写代码的效率和质量。

 从技术和功能上来看,Copilot X相对于Cursor确实更加先进和高级。因为Copilot X是基于GPT-3自然语言处理技术开发的,可以理解上下文并根据用户输入的代码块来自动生成完整的函数和代码,并且可以提供更智能的辅助功能,这些都是Cursor所不具备的。因此,如果需要更加高效快捷的代码编写体验和更智能的辅助功能,可以考虑使用Copilot X。 但是,值得注意的是,Copilot X的使用也需要有一定的编程基础,不能完全取代人类程序员的实际操作和判断。

 

TabNine

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

TabNine提供代码智能补全功能,支持以下特性:

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

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

 

阿里云Cosy

介绍:https://help.aliyun.com/document_detail/368369.html

官网:https://developer.aliyun.com/tool/cosy?spm=a2c4g.11186623.0.0.fcefe2d7fNznhx

 阿里云智能编码插件(Alibaba Cloud AI Coding Assistant),简称Cosy,是一款AI编程助手,提供代码智能补全和IDE内的代码示例搜索能力,帮助你更快更高效地写出高质量代码。

阿里云Cosy提供的代码智能补全仅提供IntelliJ IDEA插件,支持Java语言,相比于其他工具支持的语言种类比较少,相比于TabNine,在补全效果上有一些优化,减少了补全半截的情况。

  • 支持整行的代码补全结果
  • 离线模式,Cosy会在首次启动时把模型下载到本地,之后便可断网使用

我个人比较喜欢的是阿里云Cosy的代码示例搜索功能,支持以下特性:

  • 在IDE内支持指定API的代码示例搜索
  • 在IDE内支持通过功能描述搜索StackOverflow、GitHub等来源的开源代码片段
阿里云Cosy的代码补全在TabNine的基础上更进一步的解决了部分生成错误代码的缺陷,但是在细节打磨上还存在一些问题,与TabNine、GitHub Copilot相比各有千秋。Cosy的代码搜索功能相比其他工具确实是一个比较好的亮点,让我的日常“抄”代码轻松很多。

系统要求

  1. Windows 10/Mac OS/Linux

  2. IDEA IntelliJ 2019.2 +

Kite

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

Kite提供基于机器学习的代码智能补全功能,支持以下特性:

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

Kite也提供了Python官方文档搜索功能

  • 支持Python API的官方文档及少量示例

Kite适合Python开发者,毕竟Kite是以Python起家,在Python语言上打磨了很多年,虽然不像其他同类工具一样,能提供非常惊艳的长序列代码补全,但是它对IDE自带补全的排序优化效果还是很不错的。Kite的API文档搜索能搜索到常用的Python API官方文档,但是大部分能在IDE中通过查看API定义查看,代码的使用示例比较缺乏。

 

 

Codota(被TabNine替代)

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

Codota提供了代码补全功能,在Java语言上效果比较好

  • 基于程序分析、统计分析的规则化代码补全,主要能针对部分类名、常用的代码模板进行补全
在其他代码补全工具发布之前,Codota还是一个比较不错的开发利器,特别是丰富了IDE自带的代码模板,可以帮助开发者节省很多低级编码的时间,Codota也有一些用于生成代码的小功能,这里就不再扩展。但是在目前AI爆发的时代,Codota的产品演进没有跟上步伐,所以Codota公司已经放弃该产品的演进,转而大力发展收购的TabNine。

 

 

 

 

 
posted @ 2023-04-13 21:42  Jimmyhus  阅读(3620)  评论(0编辑  收藏  举报