AB
AiBoss站
教程

Amazon CodeWhisperer

教程

Amazon CodeWhisperer 快速上手:安装、注释驱动生成与安全扫描

CodeWhisperer 是亚马逊推出的 AI 编程助手,以 IDE 插件形式提供实时代码建议、注释生成函数与安全扫描。本文整理它的前置条件、在 JetBrains 与 VS Code 中的安装与登录流程、常用快捷键、注释驱动的代码生成写法、安全扫描与引用跟踪的使用方式,并给出一个从注释到可运行函数的完整示例。

Amazon CodeWhisperer 是一款基于机器学习的代码生成工具,以 IDE 插件的形式工作。它会在你编写代码时持续读取光标位置、光标之前的代码、注释以及同一项目中其他文件的内容,据此给出从单行补全到完整函数的建议。除了生成代码,它还能扫描当前文件,标出潜在的安全问题并给出修改方向,另外带有引用跟踪能力,会在建议命中已知开源代码时提示对应的许可证信息。它适合正在使用 JetBrains 系列 IDE 或 VS Code 的开发者,尤其是需要频繁查阅 SDK 文档、写大量样板代码的人。想先了解它在站内的定位,可以看 CodeWhisperer 这一条目。

准备工作

在动手之前,先把下面几件事确认清楚,可以省掉后面反复登录的麻烦。

  • 一个可用的 IDE:CodeWhisperer 目前以插件形式提供,主要面向 JetBrains 系列(IntelliJ IDEA、PyCharm 等)和 VS Code。素材中的演示集中在 IntelliJ IDEA、PyCharm 与 VS Code 三个环境。
  • Amazon Toolkit 插件:CodeWhisperer 的功能挂在 Amazon Toolkit 这个插件里,不是单独安装的独立插件。搜索关键词是 “Amazon Toolkit”。
  • 一个登录身份:可以使用个人邮箱注册 Amazon Builder ID 来登录,安装流程中会引导你完成注册。
  • 一个可访问的邮箱:注册过程中会向邮箱发送验证码,需要能实时收信。
  • 一个浏览器:授权环节会跳转到浏览器完成,IDE 与浏览器之间通过一段一次性代码传递身份。

关于是否收费、有哪些套餐、各地区是否可用、支持哪些语言与 IDE 版本,这些信息会随时间变化,请以官网当前公布的信息为准。本文只讲操作流程,不涉及价格与配额数字。

操作步骤

第一步:在 IDE 中安装 Amazon Toolkit 插件

不同 IDE 的入口位置不一样,但逻辑一致:打开插件市场,搜索插件名,安装,然后重启 IDE。

IntelliJ IDEA:打开配置窗口,选择 Plugins,在搜索框输入 “Amazon Toolkit”,点击 Install,再点 OK。安装完成后重启 IDEA。

PyCharm:进入设置菜单(macOS 上是 ⌘ + ,Windows 上是 文件 → 设置),点击左侧菜单的“插件”。在菜单顶部点击 Marketplace,在搜索栏输入 “Amazon Toolkit”,然后点击安装。安装完成后同样需要重启 IDE。

VS Code:在侧边栏的扩展面板中搜索并安装 Amazon Toolkit 插件。

第二步:打开 Amazon Toolkit 视图并启动 CodeWhisperer

IDE 重启后会出现一个新的 Amazon Toolkit 工具窗口。如果没看到,可以通过 视图 → 工具窗口 → Amazon Toolkit 打开。

在 Amazon Toolkit 视图中点击 “Developer Tools” 标签页,选择 “CodeWhisperer / Start”。

VS Code 的路径类似:侧边栏点击 AWS,展开 DEVELOPER TOOLS,找到 CodeWhisperer,点击 Start。

第三步:用 Amazon Builder ID 完成登录

弹出的窗口里选择 “Use a personal email to sign up and sign in with Amazon Builder ID”,然后点击 Connect。接下来的流程在 IDE 与浏览器之间来回切换:

  1. 在弹出的窗口中选择 “Open and Copy Code”,这段代码会被复制到剪贴板,同时浏览器会打开一个授权页面。
  2. 在浏览器页面中粘贴刚才复制的代码,点击 Next。
  3. 输入邮箱地址,点击 Next。
  4. 输入名字,点击 Next。此时 CodeWhisperer 会向该邮箱发送一个验证码。
  5. 打开邮箱找到验证码,复制并粘贴到输入框,点击 Verify。
  6. 设置密码,点击 “Create AWS Builder ID”。
  7. 在最后一个页面点击 Allow 完成授权。

看到成功提示后,说明 Amazon Builder ID 注册并授权完成。回到 IDE,在 Amazon Toolkit 视图的 Developer Tools 中就可以打开或关闭代码生成功能了。VS Code 中如果左下角的扩展图标显示为正常的对勾状态,说明连接成功。

如果浏览器上已经登录过,后续重复这一流程会简单很多,粘贴代码后直接点 Allow 即可。

第四步:熟悉快捷键

CodeWhisperer 的调用依赖快捷键,具体按键在不同 IDE 中略有差异,但作用是一致的:

  • 接受建议:出现建议后按 Tab 键确认插入。素材中的演示统一使用 Tab。
  • 切换多条建议:按 Alt+C 可以在多个候选之间切换选择。素材中在 PyCharm 与 IntelliJ 的演示里都使用了 Alt+C。

需要提醒的是,具体按键以你所使用的 IDE 当前设置为准,不同版本可能不同。

第五步:用注释驱动代码生成

这是 CodeWhisperer 最核心的用法。你写一段注释描述想要什么,它据此推断函数定义,再生成函数体。注释的描述性和准确性越高,推断结果越贴近预期。

一个实用技巧是让注释以 Function 开头,明确告诉它你要创建一个函数。例如:

# Function to open an S3 file

CodeWhisperer 会先给出函数定义,此时你可以修改参数名,让它更具可读性,然后再让它生成函数体。它也可能一次给出多个函数定义供你挑选。

生成结果不只是代码,通常还会带上文档字符串。例如上面那条注释可能得到:

# Function to open an S3 file
def open_s3_file(filename):
    """
    :param filename:
    :return:
    """
    s3 = boto3.resource('s3')
    return s3.Object(bucket, filename).get()['Body'].read()

它还会利用同一项目中已经存在的代码。比如接着写一条注释,要求从 S3 文件中返回前 n 行:

# Function to get first n lines from a file in S3
def get_first_n_lines_from_s3(filename, n):
    """
    Get the first n lines of a file in S3
    :param filename:
    :param n:
    :return:
    """
    lines = []
    for line in open_s3_file(filename):
        lines.append(line)
        if len(lines) >= n:
            break
    return lines

可以看到它复用了前面刚生成的 open_s3_file 辅助方法,而不是重新写一遍读取逻辑。

除了生成整个函数,它也能在函数内部插入代码片段,并在此过程中推断相关变量。例如在已有列表上写一句 # reverse the list order,它会补出:

lines.reverse()

注释用中文同样有效。素材中的实测里,用中文注释“写一个读取 csv 文件的函数”“创建一个简单的爬虫简单函数”“冒泡排序”“选择排序”等,都能得到对应的代码建议,并且往往一次给出多个候选,可以按 Tab 逐个确认。

第六步:运行安全扫描

CodeWhisperer 可以扫描代码,突出显示并定义安全问题。操作方式是打开想要扫描的文件,然后运行安全扫描(IDE 中会有对应的运行按钮)。

扫描完成后,问题会列在问题栏中。点击某一条可以定位到代码中对应的位置,把鼠标移到突出显示的代码上,就能看到建议的修复措施。

素材中的实测里,一次扫描在一个文件中发现了两个安全问题:一处是未加密的云服务凭证被记录在代码里,属于安全漏洞,建议重写代码修复;另一处建议把某个标识设置为 True。按建议修改后重新扫描,结果显示未找到问题。

第七步:留意引用跟踪提示

当生成的建议与已知的开源代码相似时,CodeWhisperer 会通过 Reference Log 给出提示。素材中的实测里,让 CodeWhisperer 实现一个创建 DynamoDB 表的函数,给出的建议被文件跟踪器标记为 MIT 许可证,并指出其引用了 Apache-2.0 许可证下的代码。接受这类带标记的代码后,CodeWhisperer 会自动记录相关的许可证信息,方便你在自己的代码中补充适当的许可证与归属说明。

一个完整示例

下面走一遍从注释到可运行函数的最小流程,以 Python 为例。

第一步,写注释。在新建的 Python 文件中输入:

# Function to emit a cloudwatch metric

第二步,查看函数定义。CodeWhisperer 会先给出函数签名,例如:

def put_metric_data(metric_name, metric_data):

如果它一次给出多个定义,用 Alt+C 在候选之间切换,挑一个参数命名最清楚的。你也可以直接手动改参数名,后续生成的函数体会沿用你改过的签名。

第三步,接受并生成函数体。按 Tab 接受后,得到类似下面的结果:

# Function to emit a cloudwatch metric
def put_metric_data(metric_name, metric_data):
    """
    Put a metric data into cloudwatch
    :param metric_name:
    :param metric_data:
    :return:
    """
    cloudwatch = boto3.client('cloudwatch')
    cloudwatch.put_metric_data(
        Namespace='my_namespace',
        MetricData=[
            {
                'MetricName': metric_name,
                'Dimensions': [
                    {
                        'Name': 'string',
                        'Value': 'string'
                    },
                ],
                'Unit': 'Seconds',
                'Value': metric_data
            },
        ]
    )

第四步,检查与调整。生成结果是一份可用的起点,但命名空间、维度名称、单位这些占位值需要按你的实际场景替换。素材中的经验是,这类样板代码即使从零手写,第一步写出来的也大致是这个形态,所以把它当作重构的起点是合适的。

第五步,继续往下写。在函数之后继续输入新的注释,例如 # See if a number is prime,CodeWhisperer 会补出判断逻辑,按 Tab 接受;再写 for 语句,它会接着补出循环体。整个过程是逐段推进的,不需要一次写完整段代码。

如果这段代码涉及外部依赖或凭证,记得在运行前把占位值换成真实配置,并确认凭证没有以明文形式硬编码在源码里——这正是安全扫描会重点提示的一类问题。

注意事项

  • 快捷键因 IDE 而异。素材中接受建议用 Tab、切换建议用 Alt+C,但这是演示环境下的按键,实际以你所装 IDE 的键位设置为准。
  • 注释质量直接决定生成质量。描述越具体、越准确,推断出的逻辑越贴近需求。只写一两个词,得到的建议往往也需要更多修改。
  • 生成结果需要人工复核。素材中多次强调,接受建议后要检查语义是否正确,尤其是涉及 API 调用、参数含义和边界条件的地方。
  • 安全扫描的结论要落实。扫描只是指出问题,修改仍需自己完成;改完后建议重新扫描确认。
  • 引用跟踪标记不要忽略。当建议被标记为引用了特定许可证下的代码时,需要在你的项目中补充相应的许可证与归属信息。
  • 登录流程依赖浏览器与邮箱。如果验证码迟迟收不到,或浏览器授权页面没有正常打开,整个连接流程会中断,需要重新发起。
  • 功能与可用范围会变化。支持的语言、IDE 版本、是否收费、各地区可用性等,请以官网当前信息为准。