1768e27a283e2921647a2d88ea116193.gif

本系列文章,是广大开发者及媒体向我们投稿的 Amazon CodeWhisperer 评测及心得,与您分享实战体验,向您呈现更实用的信息。敬请关注!

作者:airmelt

随着 AI 编程在程序员中流行,越来越多的开源项目和大型公司也在代码生成领域开始发力。亚马逊云科技就推出了一款 AI 编程助手—— Amazon CodeWhisperer,并开放测试,开发者们可以在各种 IDE 上免费体验,享受 AI 带来的效率提升。

今天就和大家一起,从安装开始到代码补全,“沉浸式”体验一下 Amazon CodeWhisperer!

安装

安装 CodeWhisperer 非常简单,只需要在插件市场搜索 Amazon Toolkit 即可。以 VS Code 为例:

d419830baa0e86c9b3f0f436d734939f.png

安装完成之后,侧边栏就会出现一个亚马逊云科技的图标,点击最下面的 DEVELOPER TOOLS 登陆,登陆完成之后点击 CodeWhisperer,选择“开始”就可以体验了。

340283e229e80244275bda974e66515e.png

代码补全体验

获取当前时间

首先我们尝试一个非常简单的例子:用 Python 获取当前时间:

# get current time
import time


def get_current_time():
    return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

左滑查看更多

实际上输入第一行的注释,代码助手就会提示输入 import time ,然后我们可以输入函数的定义 def ,剩下的都可以自动补充完整:

1db7a6b88853c828a703c6e0375971ae.png

网页代码修改

首先我们搭了一个简单的网页,网页上面有两个正方形,分别是橘色和红色的,里面还有一些文字,比如 Test Hello World

de4944ae88270d45d97439fa2c32ebae.jpeg

<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!*这个较长的字符串省略并在后面加上省略号。尝试给出注释:

91abbb570cec61d5343c88ef597f9ee1.jpeg

0c50e6955492df87f72c7eba9d628eb2.jpeg

也顺利的生成了预期的格式:

d7671ecd068fd6a2c9f14df186cbf933.jpeg

算法应用

首先我们尝试一下经典的快速排序算法,它很顺利地生成出来了:

bec9b3d5d755a0fe7bb045e5571cc25b.png

基本上是满足了快速排序算法的要求。

接着我们挑战个难一点的,在字符串中找到最长的回文子串。这个问题可以用中心扩展法在 O(n^2) 的时间复杂度完成,最优的算法是使用马拉车算法(Manacher's Algorithm),其时间复杂度仅为 O(n) :

1cd322f1294e290b371a9e9f1ad7da3f.png

也很快得到了。不过实践是检验真理的唯一标准,我们来看看它能不能通过 LeetCode

2a3be734472b9a93d3c63a5d71d39fd5.png

一次通过!我自己在写循环的部分很容易出错,而 CodeWhisperer 的代码补全很好地规避了错误的产生,还是十分强大的。

单元测试

在日常工作时,编写单元测试可以在一定程度上保证对代码的修改把握。我们可以对上面的马拉车算法进行单元测试的编写:

20d877a53746bf8bbbb7ff6b2778023d.png

在 Python 中,我们一般用断言可以完成一些简单的单元测试,这里CodeWhisperer 给出了一些测试用例。

安全扫描

安全扫描(Security Scan) 是 Amazon CodeWhisperer 推出的一项崭新的功能。在测试阶段,每个月可以使用50次。我们可以尝试一下官网的例子。

759e68d26b89f08609f00f35d10fedef.png

出现了报错,从提示来看,应该是因为在一个大的文件夹进行了安全扫描。所以新建一个文件夹再尝试:

a2e357ddbddc1f92eee119404ef2a3e2.png

这次顺利地得到了结果。这里面应该有两个安全问题,当前检测到第一个;删除之后扫描,它也检测出了另一个安全问题:

8a0ddc7d2866424359126c5dc0b8e91e.png

Amazon CodeWhisperer 的安全扫描功能确实能够检测出一定的安全问题,这在开发过程中是非常实用且重要的。

结语

总的来说,Amazon CodeWhisperer 还是有不少亮点。安全检查是这次最与众不同的地方,整个功能是非常有自己的特色的。期待后续的功能更新和迭代!

5788e4358fff6af00a6f9ff09e82c9f1.gif

星标不迷路,开发更极速!

关注后记得星标「亚马逊云开发者」

b151c8ed299c0e83900c0f39141c5e22.gif

听说,点完下面4个按钮

就不会碰到bug了!

1a5318c6736da438d1607811d4eaebf9.gif

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐