亚马逊AWS官方博客

Amazon CodeGuru Reviewer 更新:新的可预测定价模型,可将价格最高降低 90%,Python 支持进入正式推出阶段

Amazon CodeGuru 通过由机器学习和自动推理提供支持的建议,帮助您自动执行代码审查并提高代码质量。您可以使用 CodeGuru Reviewer 来检测难以找到的潜在缺陷和错误,并使用 CodeGuru Profiler 根据实时数据微调应用程序的性能。该服务自 2020 年 6 月以来已正式提供;您可以在此处阅读有关如何开始使用 CodeGuru 的更多信息

在过去几个月里,我们与许多客户展开了合作,在此期间,我们引入了安全检测器、Python 支持预览版和内存分析,以帮助客户提高代码质量并节省数小时的开发人员时间。我们还听到了关于定价结构和语言覆盖范围等各个领域的响亮反馈。我们决定解决这些反馈,并使得在组织内大规模采用 Amazon CodeGuru 变得更加容易。

今天,我很高兴地宣布推出 CodeGuru Reviewer 的两个重大更新:

  • 一种全新的、易于估算的定价模型,其具有较低的每月固定费率,基于存储库的大小,最高可将价格降低 90%
  • Python 支持现已正式推出 (GA),其建议覆盖范围更广,且具有四个与 Python 检测器相关的更新

适用于 CodeGuru Reviewer 的新的可预测定价
CodeGuru Reviewer 使您可以对存储在 GitHub、GitHub Enterprise、AWS CodeCommit 或 Bitbucket 中的存储库运行全面扫描。此外,每当您提交 pull 请求时,CodeGuru Reviewer 会开始新的代码审查并以评论的形式提出建议和改进。

之前的定价结构基于每月分析的代码行数 (LoC),即每 100 个 LoC 0.75 USD。我们已经收到了您的反馈:作为开发人员,您希望尽可能频繁地分析您的代码,在无需考虑成本的情况下根据需要创建尽可能多的 pull 请求和分支,并最大限度地提高在错误和缺陷进入生产之前发现它们的几率。

这就是使用新定价的情况下,您只需根据存储库的总大小支付固定的月费率的原因:在所有连接的存储库中,前 10 万行代码每月 10 USD。另外每增加 10 万个代码每月 30 USD。请注意,只计算存储库中最大的分支,空行和评论不计算在内。

这种价格结构不仅使成本更加可预测和透明,而且还有助于简化在组织内不同团队之间扩展 CodeGuru Reviewer 的方式。您仍然可以按需对每个 pull 请求执行完整的存储库扫描和增量审查。每月费率包括所有增量审查,每个存储库每月最多可获得两次完整扫描,包含在月度费率中。对于额外的完整扫描,您需要为每 10 万行代码支付 10 USD。

基本上,您可以获得 Amazon CodeGuru 和所有新的检测器和集成的所有优势,但价格最高可便宜 90%。此外,您还可以在前 90 天通过免费套餐免费开始使用,最高可使用 10 万 LoC。当免费套餐到期或者您超出 10 万 LoC 时,您只需支付标准费率。在此处查看更新的定价页面

下面我来分享一些实际示例(不包括免费套餐):

  1. 15 万 LoC 的中型存储库:在此情况下,您的月度费率会四舍五入到 20 万行代码,总费用为每月 40 USD (10 USD + 30 USD)。LoC 的数量始终会向上舍入。顺便说以下,您还可以以相同的价格连接代码行最高达 5 万的一个(或多个)存储库(使代码总数达到 20 万行)。每个存储库最多包含 2 次完整扫描。
  2. 各包含 30 万个 LoC 的三个存储库(等效于 90 万个 LoC 的大型存储库):在此情况下,您的月度费率为 250 USD(前 10 万行代码 10 USD,加上剩下 80 万行代码 240 USD)。每个存储库最多包含 2 次完整扫描。
  3. 包含 7 万个 LoC 的小型存储库,每月进行 10 次完整扫描:在此情况下,您的月度费率仅为 LoC 数量产生的 10 USD,再加上额外的完整扫描(56 万 LoC)产生的 60 USD,每月总计 70 USD。
  4. 具有 50 个活动分支的小型存储库,最大分支包含 1 万个 LoC,每月进行 300 个 pull 请求:简单,仅每月 10 USD。每个存储库最多包含 2 次完整扫描。

新定价将从 4 月开始适用于 2021 年 4 月 6 日连接的新存储库以及 2021 年 4 月 5 日之前已连接的存储库。我们预计,绝大多数使用案例的成本都会显著降低。除非您每天需要执行多次完整的存储库扫描(这是相当极端的情况),否则无论分支、贡献者或 pull 请求的数量如何,在 90 天试用后,大多数最高包含 10 万个 LoC 的小型存储库都只需支付可预测且可负担得起的费用(每月 10 USD)。现在,您可以开发和迭代代码存储库,了解 CodeGuru 将审查您的代码并发现潜在问题,而无需担心不可预测的成本。

尝试 CodeGuru Reviewer在 CodeGuru 控制台中连接您的第一个存储库

Python 对 CodeGuru Reviewer 的支持现已正式推出
自 2020 年 12 月以来,Python 对 CodeGuru Reviewer 的支持已推出预览版。使用它,您可以通过建议最佳使用数据结构和并发性来改进 Python 应用程序。它可以帮助您遵循 Python 控制流、错误处理和标准库的最佳实践。最后同样重要的是,它提供了有关科学/数学操作和 AWS 最佳实践的建议。这些建议对初学者和专家开发人员以及对代码质量充满热情的小型和大型团队都很有用。

随着今天宣布正式推出,您将发现与 Python 检测器相关的四个主要更新:

  • 提高现有检测器的覆盖范围和精度:很多 Python 最佳实践已集成到与标准库、数据结构、控制流和错误处理相关的现有检测器中。例如,如果您的代码不安全地创建临时文件,在需要最大精度的科学计算中使用浮点数而不是小数,或将等式与恒等式混淆,CodeGuru Reviewer 将向您发出警告。这些警告将帮助您避免安全漏洞、性能问题和一般错误。
  • 针对资源泄漏改进了检测器:在预览期间,此检测器仅关注打开的文件描述符;而现在,它会生成关于更广泛的潜在资源泄漏的建议,例如连接、会话、套接字和多处理线程池。例如,您可能会实施一个 Python 函数,以打开一个新的套接字,然后忘记关闭它。这很常见,它不会立即变成问题,但从长期来看,资源泄漏可能会导致系统运行缓慢甚至崩溃。CodeGuru Reviewer 将建议关闭套接字或将其打包在 with 语句中。提醒一下,此检测器也可用于 Java
  • 新的代码可维护性检测器:这款新的检测器可帮助您识别与通常使代码库难以读取、理解和维护的方面相关的代码问题,例如代码复杂性和紧密耦合。例如,假设您花了几个小时来实施一个简单的原型,然后决定按原样将其与生产代码集成。由于您有点匆忙,这个原型可能包括一个庞大的 Python 函数,其中包含 50 多行代码,从输入验证、数据准备、一些 API 调用到最终写入磁盘不等。CodeGuru Reviewer 将建议您将此代码重构为更小的、可重复使用的、松散耦合的函数,以便更容易测试和维护。
  • 新的输入验证检测器:这款新的检测器可以帮助您识别某些函数或类别可能受益于输入参数的额外验证的情况,尤其是当这些参数可能由用户生成或者为动态参数时。例如,您可能已经实施了一个 Python 函数,该函数采用环境名称作为 CLI 输入(例如 devstageprod),执行 API 调用,然后将资源 ARN 返回作为输出。您尚未验证环境名称,因此,CodeGuru Reviewer 可能会建议您实施一些额外的验证;在此示例中,您可以添加几行代码来检查环境名是否为空,以及它是否是这个项目的有效环境。

请注意,Python 对 CodeGuru Profiler 的支持仍处于预览版:CodeGuru Profiler 使您可以收集运行时性能数据、识别代码是如何在 CPU 上运行的,以及在哪里消耗了时间,这样您就可以从最昂贵的部分开始调优您的 Python 应用程序——以达到降低成本和提高性能为目标。

您可以在 CodeGuru 控制台中开始使用适用于 Python 的 CodeGuru Reviewer 和 CodeGuru Profiler

小结
Amazon CodeGuru 已在 10 个 AWS 区域中推出,它支持 Python 和 Java 应用程序。我们期待发布更多的检测器和对更多编程语言的支持,以帮助更多的开发人员和客户提高应用程序代码质量和性能。

如果您想要了解有关 Amazon CodeGuru 的更多信息,请查看 CodeGuru Reviewer 文档CodeGuru Profiler 文档