文章作者:段小草
自这一波生成式 AI 浪潮以来,大家尝鲜之余最关心的问题还是如何提高生产力。我们在测试大语言模型能力的时候,往往会将代码能力作为一项重要的评价指标,也说明程序员还是希望能在 AI 的加持下更快捷安全地编写代码。
亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术,观点,和项目,并将中国优秀开发者或技术推荐给全球云社区。如果你还没有关注/收藏,看到这里请一定不要匆匆划过,点这里让它成为你的技术宝库!
最近,亚马逊云就推出基于机器学习的代码生成工具——CodeWhisperer,最重要的是对于个人用户完全免费使用。
经过一段时间的体验,我觉得 CodeWhisperer 可以处理编程工作中遇到的很多问题,并且帮助开发人员提高编程效率。最重要的是 CodeWhisperer 在代码安全扫描方面能力是很强的。接下来就带大家了解并体验一下 CodeWhisperer。
一、注册安装
CodeWhisperer 的安装比较简单,几分钟就能搞定。这里我以 VS Code 为例,其他 IDE 可以参考官方说明。
1、在 VS Code 的扩展商店中下载 Amazon Toolkit:
2、安装完成后,可以在左边栏看到亚马逊云图标,点击并选择 CodeWhisperer,可以看到要求登录。选择第一个,Use a personal email to sign up and sign in with Amazon Builder ID:
3、复制设备 ID 并完成 Amazon Builder ID 登录:
这里会自动生成一个八位字母的 request code,用于识别设备 IDE。不需要在意,点击「Copy Code and Proceed」打开亚马逊云科技网页即可。粘贴刚才复制的 code:
使用自己的个人邮箱完成注册即可:
完成安装并登录后,可以在 VS Code 左下角看到 CodeWhisperer 状态:
二、AI 编程体验
CodeWhisperer 支持 Python、Java、JavaScript、TypeScript、C#、Rust、Go、Ruby、Scala、Kotlin、PHP、C、C++、Shell、SQL 的代码生成,可以说是十分全能了。我还是用最熟悉的 Python 来测试一下。
比如我们要获取一个 csv 文件中的第二行数据,只需要写出这样的注释:
CodeWhisperer 会给出多种建议,可以使用左右键进行切换查看:
点击 Tab 后,会自动补全代码并导入用到的库:
再比如我希望把一段 CURL 转换为 Python requests 代码:
它会给出一些提示用于挑选。如果对补全的内容满意,按 Tab 就可以使用。虽然后面是单行生成的,但也完成了目标。
CodeWhisperer 也是支持中文的,我们可以直接用中文编写注释:
三、代码安全检测
CodeWhisperer 的介绍中专门强调了它的代码安全扫描功能。
不过要注意:目前,仅在适用于 Python、Java 和 JavaScript 的 VS Code 和 JetBrains IDE 中支持代码安全扫描。
还是以 VS Code+Python 为例,在默认状态下,VS Code 仅仅是使用 pylance 插件对 Python 代码进行拼写检查和代码补全,也就是我们经常见到的黄色、红色波浪下划线标出的建议修改,比如自动扫描环境依赖以后给出的类似提示。
但类似的工具并不能帮助我们挖掘更深层次的安全漏洞。接下来我们试试使用 CodeWhisperer 扫描这个文件。
点击 Run Security Scan。稍等片刻。
可以看到,除了 pylance 发现的基础错误,CodeWhisperer 又找到了 4 处安全漏洞。
涉及到的代码分别是:
file.save(file_path)
conn = sqlite3.connect('data.sqlite')
app.run(debug=True)
这些问题都是涉及文件读写操作或者调试权限的,显然,如果这样的代码要用于生产环境,就需要更严格的条件限制。CodeWhisperer 也会给出相应的解释和建议。
总的来说,CodeWhisperer 在 AI 编程方面对我而言是够用的,而且可以说安全检查的功能是给我很大惊喜的,安全检查的功能让 CodeWhisperer 从助手变成了导师。
很多时候我们自己写的代码不够规范或者有一些初学者很难意识到的安全问题, CodeWhisperer 就像 montor 一样,会帮助我们做 Code Review,只要坚持能够把 CR 出的问题全部解决,我们自身的代码能力也会逐渐成长的,非常推荐大家都来体验一下。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。