亚马逊AWS官方博客
即日起,可以在 GitHub 中使用 Amazon Q Developer(预览版)!
即日起,可在 GitHub 中使用 Amazon Q Developer 预览版! 对于每天使用 GitHub 的数百万开发者来说,这是一个超棒的消息,无论他们是将其用于工作项目还是个人项目。他们现在可以直接在 GitHub 界面中使用 Amazon Q Developer 进行功能开发、代码审查以及 Java 代码迁移。
为了演示,我将使用 Amazon Q Developer 来帮助我从零开始创建一个名为 StoryBook Teller 的应用程序。我希望这是一个基于 .NET 9 的 ASP.Core 网站,它可以从用户那里获取三张图片,并使用 Amazon Bedrock 和 Anthropic 的 Claude 根据这些图片生成一个故事。
我将向您演示具体操作。
安装
首先,您需要在 GitHub 中安装 Amazon Q Developer 应用程序,并且无需连接 AWS 账户即可立即开始使用。
然后,您可以选择将其添加到您的所有存储库中,或者选择特定的存储库。在本例中,我想将它添加到我的 storybook-teller-demo 存储库中,所以我选择仅限选定的存储库,然后输入名称进行查找。
只需执行这些操作,即可在您选定的存储库中使用 Amazon Q Developer 应用。您可以通过导航到 GitHub 账户设置来验证应用程序是否已安装,它应该会列在应用程序页面中。
您可以选择配置来查看权限,并将 Amazon Q Developer 添加到存储库中,或者随时将其移除。
现在,让我们使用 Amazon Q Developer 来帮助我们构建应用程序。
功能开发
将 Amazon Q Developer 安装到存储库中后,可以将 GitHub 问题分配给 Amazon Q development agent,让它为您开发功能。然后,它将使用存储库中的整个代码库作为上下文,并使用问题描述来生成代码。正因如此,在 GitHub 问题中尽可能准确清晰地列出需求至关重要,本来您就该一直朝着这个方向努力。
我在我的 StoryBook Teller 存储库中创建了五个问题,涵盖了这个应用程序的所有需求,从创建一个基本的 .NET 9 项目到实施前端和后端。
让我们使用 Amazon Q Developer 从头开始开发这个应用程序,并帮助我们实施所有这些功能!
首先,我希望使用 Amazon Q Developer 帮助我创建.NET 项目。为此,我打开第一个问题,在标签部分,找到并选择 Amazon Q development agent。
就是这么简单! 该问题现在已分配给 Amazon Q Developer。添加标签后,Amazon Q development agent 会在后台自动开始工作,并通过评论提供进度更新,一开始会有一条评论说我正在研究这个问题
。
如您所料,所需的时间取决于功能的复杂程度。完成后,它会自动创建一个包含所有更改的拉取请求。
接下来,我想要确保生成的代码能够正常工作,所以我要下载代码更改,并在我的计算机上本地运行该应用程序。
我前往终端并键入 git fetch origin pull/6/head:pr-6
来获取它创建的拉取请求的代码。我仔细检查了内容,可以看到确实如我所期望的那样,生成了一个基于 .NET 9 的 ASP.Core 项目。
然后,我运行 dotnet run
,并使用输出中给出的 URL 打开应用程序。
太棒了,它能正常运行! Amazon Q Developer 根据我在 GitHub 问题中提供的需求,准确实施了这一功能。现在,我已经测试了应用程序可以正常工作,接下来,我需要在接受这些更改之前,先审查一下代码本身。
代码审查
我回到 GitHub 并打开拉取请求。我立刻注意到 Amazon Q Developer 已经对生成的代码进行了一些自动检查。
太棒了! 它已经为我完成了相当多的工作。但是,我还是想在合并拉取请求之前对其进行审查。为此,我导航到已更改的文件选项卡。
我审查了代码,我对看到的内容感到满意! 但是,查看.gitignore 的内容时,我注意到了一些想要更改的地方。我可以看到 Amazon Q Developer 做出了合理的假设,并添加了针对 Visual Studio(VS)Code 文件的排除规则。但是,JetBrains Rider 是我最喜欢的用于.NET 开发的集成式开发环境(IDE),因此我也想为它添加规则。
您可以通过使用 GitHub 界面中的常规代码审查流程,要求 Amazon Q Developer 重复并进行更改。在这种情况下,我在.gitignore 代码中添加了一条评论,内容是添加忽略 Rider IDE 文件的模式
。然后,我选择开始审查,这会将更改排入审查队列。
我选择完成审查和请求更改。
在提交审查后不久,我被重定向到“对话”选项卡。Amazon Q Developer 开始处理它,继续相同的反馈循环,并鼓励我继续审查过程,直到我满意为止。
每次 Q Developer 进行更改时,它都会对生成的代码运行自动检查。在这种情况下,代码相对简单,所以可以预料到自动代码审查不会提出任何问题。但是,如果我们有更复杂的代码,会发生什么情况?
让我们再举一个例子,使用 Amazon Q Developer 来实施允许在网站上上传图片的功能。我使用了在上一节中描述的相同流程。但是,我注意到这次对拉取请求的自动检查标记了一个警告,指出为支持后端图片上传而生成的 API 缺少授权检查,实际上允许公众直接访问。它详细解释了安全风险,并提供了有用的链接。
然后它会自动生成一个代码修复建议。
完成后,您可以审查代码,如果您对更改满意,请选择“提交更改”。
在修复了这个问题并进行测试后,我对这个问题的代码很满意,然后对其他问题应用相同的过程。我将 Amazon Q development agent 分配给剩下的每个问题,等待它生成代码,并通过迭代审查过程要求它为我修复出现的任何问题。然后,我在软件周期结束时测试了我的应用程序,很高兴看到 Amazon Q Developer 成功处理了所有问题,从项目设置到样板代码,再到更复杂的后端和前端。这是一个真正的全栈开发者!
在这个过程中,我确实注意到了一些想要更改的地方。例如,它默认使用 Invoke API 将上传的图片发送到 Amazon Bedrock,而不是使用 Converse API。然而,因为我在需求中没有说明这一点,它也无从得知。这凸显了问题标题和描述尽可能准确的重要性,这样才能为 Q Developer 提供必要的上下文,并使开发过程尽可能高效。
话虽如此,仍然可以直接在拉取请求上审查生成的代码、添加评论,并让 Amazon Q Developer agent 继续进行更改,直到您对最终结果满意。或者,您可以接受拉取请求中的更改,并创建单独的问题,当您准备好开发这些问题时,可以稍后将它们分配给 Q Developer。
代码转换
您还可以使用 Q Developer 将旧版 Java 代码库转换为现代版本。目前,它可以将应用程序从 Java 8 或 Java 11 更新到 Java 17,未来的版本中还会提供更多选项。
这个过程与我在本文前面演示的过程非常相似,只是有一些不同之处。
首先,您需要在包含 Java 8 或 Java 11 应用程序的 GitHub 存储库中创建一个问题。在这种情况下,标题和描述其实并不重要。它甚至可以是一个简短的标题,比如“迁移”,描述部分留空。然后,在标签中,您将 Amazon Q transform agent 标签分配给该问题。
和之前一样,Amazon Q Developer 会立即在后台开始工作,然后在一个拉取请求中生成可以审查的代码。但是,这一次是 Amazon Q 转换 Agent 在做这项工作,它专门从事代码迁移,并会采取所有必要的步骤来分析代码并将代码从 Java 8 迁移到 Java 17。
请注意,根据文档,它还需要创建一个工作流程。如果您尚未启用它,它会显示清晰的说明,帮助您在再次尝试之前完成所有设置。
如您所料,执行迁移所需的时间取决于应用程序的规模和复杂程度。
结论
在 GitHub 中使用 Amazon Q Developer 就像是拥有了一位全栈开发者,您可以与其协作开发新功能、加速代码审查过程,并依靠他来增强代码的安全状况和质量。您还可以使用它自动将应用程序从 Java 8 和 11 迁移到 Java 17,这使您能够更轻松地启动可能已经推迟了一段时间的迁移项目。最棒的是,您可以在舒适的 GitHub 环境中完成所有这些操作。
现已推出
您现在可以在 GitHub 中免费开始使用 Amazon Q Developer,无需设置 AWS 账户。
GitHub 中的 Amazon Q Developer 目前处于预览阶段。
— Matheus Guimaraes | codingmatheus
*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您了解行业前沿技术和发展海外业务选择推介该服务。