Amazon CodeWhisperer 初体验,享受 AI 带来的效率提升

人工智能
IDE
Amazon CodeWhisperer
0
0
> 本系列文章,是广大开发者及媒体向我们投稿的 **[Amazon CodeWhisperer](https://aws.amazon.com/cn/codewhisperer/?trk=cndc-detail)** 评测及心得,与您分享实战体验,向您呈现更实用的信息。敬请关注! *作者:airmelt* 随着 AI 编程在程序员中流行,越来越多的开源项目和大型公司也在代码生成领域开始发力。**亚马逊云科技就推出了一款 AI 编程助手—— [Amazon CodeWhisperer](https://aws.amazon.com/cn/codewhisperer/?trk=cndc-detail)**,并开放测试,开发者们可以在各种 IDE 上免费体验,享受 AI 带来的效率提升。 今天就和大家一起,从安装开始到代码补全,“沉浸式”体验一下 [Amazon CodeWhisperer](https://aws.amazon.com/cn/codewhisperer/?trk=cndc-detail)! ### **安装** 安装 CodeWhisperer 非常简单,只需要在插件市场搜索 Amazon Toolkit 即可。以 *VS Code* 为例: ![image.png](https://dev-media.amazoncloud.cn/08fac4f774854335a45ed2a6ddda26aa_image.png "image.png") 安装完成之后,侧边栏就会出现一个亚马逊云科技的图标,点击最下面的 DEVELOPER TOOLS 登陆,登陆完成之后点击 CodeWhisperer,选择“开始”就可以体验了。 ![image.png](https://dev-media.amazoncloud.cn/530fdb61d8f440338e262bd137d4b7ea_image.png "image.png") ### **代码补全体验** #### **获取当前时间** 首先我们尝试一个非常简单的例子:用 Python 获取当前时间: ```js # get current time import time def get_current_time(): return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) ``` 实际上输入第一行的注释,代码助手就会提示输入 import time ,然后我们可以输入函数的定义 def ,剩下的都可以自动补充完整: ![image.png](https://dev-media.amazoncloud.cn/3f7b30e711b3465ebb6cd1ff75257f6d_image.png "image.png") #### **网页代码修改** 首先我们搭了一个简单的网页,网页上面有两个正方形,分别是橘色和红色的,里面还有一些文字,比如 *Test* 和 *Hello World*: ![image.png](https://dev-media.amazoncloud.cn/19248b1537144fd3994028e98f04c051_image.png "image.png") ```js <html> <head> <title>Test</title> <style> .test { width: 100px; height: 100px; background-color: orange; } .hello { width: 50px; height: 50px; margin: 10px; background-color: red; } </style> </head> <body> <div class="test">Test</div> <div class="hello">Hello World!</div> </body> </html> ``` 现在,我们需要给 *Test* 这个正方形加上阴影,将*Hello World*! 这个较长的字符串省略并在后面加上省略号。尝试给出注释: ![image.png](https://dev-media.amazoncloud.cn/bd57004eb547438499b0010068bfa735_image.png "image.png") ![image.png](https://dev-media.amazoncloud.cn/6e5933045fd046a693f0649d3bf6b836_image.png "image.png") 也顺利的生成了预期的格式: ![image.png](https://dev-media.amazoncloud.cn/2a7a780f2edd4f1586e23e1a3841a91a_image.png "image.png") #### **算法应用** 首先我们尝试一下经典的快速排序算法,它很顺利地生成出来了: ![image.png](https://dev-media.amazoncloud.cn/ade1ed3635854130a77a42d516f0d2e9_image.png "image.png") 基本上是满足了快速排序算法的要求。 接着我们挑战个难一点的,在字符串中找到最长的回文子串。这个问题可以用中心扩展法在 O(n^2) 的时间复杂度完成,最优的算法是使用**马拉车算法(Manacher's Algorithm)**,其时间复杂度仅为 O(n) : ![image.png](https://dev-media.amazoncloud.cn/342dda957758405b9d4c55ac4ab109e7_image.png "image.png") 也很快得到了。不过实践是检验真理的唯一标准,我们来看看它能不能通过 *LeetCode*: ![image.png](https://dev-media.amazoncloud.cn/20f7ec16dbb0451a993bb4dc74de16f7_image.png "image.png") 一次通过!我自己在写循环的部分很容易出错,而 CodeWhisperer 的代码补全很好地规避了错误的产生,还是十分强大的。 #### **单元测试** 在日常工作时,编写单元测试可以在一定程度上保证对代码的修改把握。我们可以对上面的马拉车算法进行单元测试的编写: ![image.png](https://dev-media.amazoncloud.cn/1c2cc317e7a1464b9a81f74055468288_image.png "image.png") 在 Python 中,我们一般用断言可以完成一些简单的单元测试,这里CodeWhisperer 给出了一些测试用例。 ### **安全扫描** **安全扫描(Security Scan)** 是 [Amazon CodeWhisperer](https://aws.amazon.com/cn/codewhisperer/?trk=cndc-detail) 推出的一项崭新的功能。在测试阶段,每个月可以使用50次。我们可以尝试一下官网的例子。 ![image.png](https://dev-media.amazoncloud.cn/9b3fbb79e1e448deb34ec4125cd3b52e_image.png "image.png") 出现了报错,从提示来看,应该是因为在一个大的文件夹进行了安全扫描。所以新建一个文件夹再尝试: ![image.png](https://dev-media.amazoncloud.cn/cf5fae84d1144e5b95110775ee8712dd_image.png "image.png") 这次顺利地得到了结果。这里面应该有两个安全问题,当前检测到第一个;删除之后扫描,它也检测出了另一个安全问题: ![image.png](https://dev-media.amazoncloud.cn/871fe0f9a0c647a5907d82bc617d80c5_image.png "image.png") [Amazon CodeWhisperer](https://aws.amazon.com/cn/codewhisperer/?trk=cndc-detail) 的安全扫描功能确实能够检测出一定的安全问题,这在开发过程中是非常实用且重要的。 ### **结语** 总的来说,[Amazon CodeWhisperer](https://aws.amazon.com/cn/codewhisperer/?trk=cndc-detail) 还是有不少亮点。安全检查是这次最与众不同的地方,整个功能是非常有自己的特色的。期待后续的功能更新和迭代! ![开发者尾巴.gif](https://dev-media.amazoncloud.cn/76ac430aefed4fdf9676ae3fac911236_%E5%BC%80%E5%8F%91%E8%80%85%E5%B0%BE%E5%B7%B4.gif "开发者尾巴.gif")
0
目录
关闭