查看原文
其他

研发效能提升利器:5个AI编程助手

朱少民 软件质量报道 2023-06-12


一年前写了一篇文章 2021年,必须知道/采用的七大AI 软件开发/测试工具,就介绍了基于OpenAI CodeX的GitHub Copilot、自动补全代码工具Codota等,上一周介绍了阿里和北京大学合作开发的 BizCook 系统:首个用于工业开发的自动代码生成系统 。的确是未来已来,智能编程助手就在身边,我们是时候考虑引入这样的编程机器人作为程序员的助手,帮他生成代码、补全代码、检查代码,从而极大地提高软件研发的效能。
今天我们再给大家5款实用的智能编程工具,让大家更好地了解他们究竟能干什么。也许看完这篇文章,你就迫不及待想下载一个工具开始试用。
1Jedi

Jedi是一个专注于代码自动补全、代码重构、代码搜索和查找引用等功能,而且还是一个用于Python的静态分析工具,通常以IDE /编辑器的插件形式存在。

Jedi 通过一套简单的API 和REPL (Read-Evaluation-Print-Loop,交互式的编程环境,像Python就是天生具备REPL这样的运行环境)来实现上述功能。

  • Autocompletion(自动补全): Script.complete()

  • Goto/Type Inference: Script.goto() 、Script.infer()

  • Static Analysis: Script.get_names() 、Script.get_syntax_errors()

  • Refactorings(重构): Script.rename()Script.inline()Script.extract_variable() 、Script.extract_function()

  • Code Search: Script.search() and Project.search()

Jedi 的一些基本特性:

  • 能处理复杂的模块/函数/类结构

  • 很好地支持 virtualenv / venv 

  • 对Python的类型提示非常有效

  • 理解stub(桩程序)文件

  • 可以为sphinx、epydoc和基本numpydoc等Docstring推断函数参数

  • 支持绝大多数常用的Python特性

  • 总的来说是一个非常可靠的软件,经过了很长时间的改进。

2. Wing Pro

Wing的智能编辑器使Python编码变得又快又简单。在编写代码过程中,Wing 强大的静态和实时的动态代码分析能向开发人员提供适合上下文的帮助、代码补全和智能错误检查,而且可以快速地在一个块、范围或文件中对同一个字符串进行多次选择,或者通过单击编辑器进行多次选择,以便一次性对所有选择进行统一的编辑。编辑器的自动补全程序中提供的代码片段允许快速输入标准代码模板和常用结构。代码段中的字段是通过tab键输入的。相同的代码片段可以采用不同的形式,这取决于调用它的上下文。

Wing的代码警告系统提供了编码错误的早期识别,例如语法错误、未定义的变量和属性、不可解析的导入、缩进错误和不可访问的代码,而Wing的Source Assistant不断更新,以显示类型信息、内联文档、调用提示,并链接到Python文档中,用于编写或访问的代码。Wing可以模拟vi、emacs、Visual Studio、Eclipse、MATLAB和XCode,从而使用户很容易上手。

Wing Auto-editing:在编写代码时,调用辅助自动输入函数和方法参数,允许以tab键切换调用,以便快速、正确地放置参数。将自动删除未更改的默认参数,并相应地重新包装调用。其他可配置的自动编辑操作包括自动关闭圆括号和引号、使用PEP8样式可选的自动间隔、无序输入的自动修复以及在输入新代码时管理块。

重构是一种快速重组代码而不影响其功能的方法。Wing支持重命名和移动符号定义点,从现有代码中提取新的函数或方法、为现有表达式引入变量以及更改符号命名风格。

3. Tabnine AI

Tabnine AI 是自动补全代码工具,借助先进的公共代码模型与精确的定制算法,不断学习团队已有的代码、模式和偏好,从而在你写代码过程中,及时、精确地推荐代码、补全代码,帮助你快速地完成编程任务。此外,开发人员团队可以使用该工具获得标准化的、一致性的代码,代码的质量也得到保障,这样可以降低测试的成本,更快地交付代码。
Tabnine根据上下文和语法预测并建议下一行代码,在编辑器中可以完成整行代码,甚至完成全功能的代码,让程序员成为超级10倍的开发人员。
Tabnine支持不同的IDE和多种编程语言,从JavaScript、Python和TypeScript等最流行的语言到Rust、Go和Bash等小众的语言。


4. Amazon CodeWhisperer


使用CodeWhisperer构建和训练代码生成的ML模型,从而向开发人员自动推荐代码,节省开发的时间和精力,以加速前端和后端开发。
通过在最流行的服务(包括Amazon EC2、AWS Lambda和Amazon S3)上提供AWS API的代码建议,加快开发过程。
自动化单元测试生成不再编写重复的单元测试代码。基于自然语言注释,CodeWhisperer自动推荐与实现代码匹配的单元测试代码。


CodeWhisperer接受了各种数据源(如开源代码)的训练,理解用普通自然语言编写的注释,根据开发人员的意图生成代码,并匹配开发人员的模式和风格,所以生成的代码类似于开发人员编写代码的方式。当程序员输入时,CodeWhisperer甚至提供了完成注释本身的建议。程序员可以接受CodeWhisperer的推荐,查看更多的推荐,或者只是继续编写自己的代码。
我们还可以轻松地查找和检查引用代码,以及它在另一个项目中有什么不同的上下文、又是如何使用的。CodeWhisperer提供了安全扫描,以检测Java和Python代码中的安全漏洞,还给开发人员建议:删除那些可能被认为有偏见和不公平的代码。


5. Kite

Kite的表现也不错,可以快速地向程序员推荐上下文感知代码。根据过去使用的数据统计,开发人员在编程中使用它时,可以减少47%的击键次数。通过超过2500万个文件的数据训练,Kite使用的模型挺强大,一次可以推荐多行代码。
Kite还可以帮助我们从代码库中快速找到与当前编码文件相关的文件,还可以使用它通过鼠标悬停来查看Python文档,并查找how-to和示例。
其实这类工具还比较多,例如:AlphaCode、DeepCode、SourceAI、Bayou、Clever-Commit、Embold、mabl、PyCharm、Pylint......

参考:

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存