Amazon CodeGuru Reviewer

Amazon CodeGuru Reviewer 发现 Java 和 Python 代码中存在的问题,并提供改进代码的建议。例如,CodeGuru Reviewer 检测安全漏洞、机密、资源泄漏、并发问题、不正确的输入验证以及与使用 AWS API 和 SDK 的最佳实践的偏差。要开始审查代码,您可以将 GitHub、GitHub Enterprise、Bitbucket 或 AWS CodeCommit 上现有的代码存储库与 CodeGuru 相关联。

安全检测

CodeGuru Reviewer 可帮助您提高代码安全性,并根据常见漏洞(OWASP 前10名)和 AWS 内部安全最佳实践提供建议。它利用自动推理分析从源到网关节点的数据流或跨多个函数的数据流,以检测难以发现的安全漏洞。CodeGuru Reviewer 安全检测器支持 Java 8 至 Java 11 和 Python 3 及以上版本。您可以使用它来检测代码安全问题,例如:

  1. OWASP 前10名:检查顶级 web 应用程序安全风险,如访问控制中断、注入和数据完整性故障
  2. AWS API 安全最佳实践:检查 Amazon Elastic Compute Cloud 和 AWS Key Management Service 的 API 安全性
  3. AWS 安全最佳实践(AWS 加密是按照 Amazon 标准实施的):将 Amazon 的内部安全专业知识应用到您的代码中
  4.  Java Crypto 库最佳实践:检查 Javax.Crypto.Cipher 是否正确地初始化和调用
  5. Python Crypto 库最佳实践:检查是否使用了正确版本的 Python 哈希和加密算法。
  6. 安全 Web 应用程序:检查与安全问题有关的 Web 应用程序,例如 LDAP 注入
  7. 敏感信息泄露:检查个人信息或敏感信息是否泄露(例如,用纯文本记录 AWS 账户凭证)
  8. 输入验证:检查来自不受信任来源的格式错误的数据或恶意数据
  9. 日志注入:通过检查代码是否正确防止伪造日志条目或将恶意内容注入日志来防止 Log4j 类型的漏洞

您可以转到 Amazon CodeGuru 控制台,对整个存储库调用安全分析,或者通过 GitHub 操作与 CI/CD 集成。

Image under Security detection

密钥检测

CodeGuru Reviewer Secrets Detector 使用基于机器学习的分析来帮助您检测存储库或配置文件中硬编码的密钥,包括密码、API 密钥、SSH 密钥、访问令牌、数据库连接字符串和 JSON Web 令牌。作为 CodeGuru Reviewer 的一部分,Secrets Detector 是一种自动机制,用于检查代码中的这些密钥,并提供点击式步骤,使用 AWS Secrets Manager 保护这些密钥。它还可以识别最常见的 API 提供程序生成的特定密钥,包括 AWS、Atlassian、GitHub、Salesforce、HubSpot 和 Stripe。关于密钥列表,请访问文档

密钥检测

代码质量

CodeGuru Reviewer 可发现代码质量问题,并且提供帮助开发团队在软件开发过程中维持较高编码标准的工具:

  • AWS 最佳实践:正确使用 AWS API(如:轮询、分页) 
  • Java 和 Python 最佳实践:正确使用流行的 Java 和 Python 语言和库功能
  • 并发:检测导致功能不正确的缺失同步,或导致性能问题的多余同步。 
  • 不一致性:分析存储库中的编码模式,并帮助检测何时存在偏离标准模式的异常 
  • 代码可维护性:发现源代码中使代码难以维持的代码复杂问题或任何特性
  • 资源泄漏:正确处理资源(如,释放数据库连接)
  • 常见的编码最佳实践:检查参数并查找可能产生错误的代码行(如,在设置前忘记检查某对象是否无效,重新分配同步对象,或忘记在执行例外路径时初始化变量)。
  • 代码克隆:识别可以整合的重复代码,以提高代码可维护性
代码质量

自动提供建议

CodeGuru Reviewer 可以做两种不同类型的代码评审来提供建议—增量代码评审和完整存储库代码评审 

增量代码评审 
当您从关联的存储库创建拉取请求时,将自动创建增量代码评审。这些代码评审扫描拉取请求中更改的代码。CodeGuru Reviewer 还提供了一个拉取请求控制面板,其中列出了所有代码评审的信息(例如:代码评审的状态、分析的代码行数和建议数)。此 CodeGuru Reviewer 标准月度定价包含对所注册存储库的所有增量代码评审分析。

自动提供建议

完整存储库分析代码评审
通过 CodeGuru Reviewer,您可以针对关联存储库中的全部代码行获得机器学习支持的代码评审建议。您可以运行完整的存储库扫描,以便在代码迁移、代码尽职调查和定期代码可维护性计划中获得代码评审建议。在 CodeGuru 控制台中,您可以导航到 "Code Reviews"(代码评审)页面中的 "Repository Analysis"(存储库分析)选项卡,以触发对完整存储库的新分析。两种完整的存储库扫描包含全新的基于存储库大小的定价模型。有关更多详细信息,请访问 CodeGuru 定价页面

完整存储库分析代码评审
代码评审

您可以在 “Code reviews”(代码评审)控制台页面(Reviewer 部分)中查看所有代码评审。此页面列出了所有代码评审信息,例如,代码评审状态、存储库和建议数量等。您可以单击成功完成的代码评审即可查看建议详情,搜索建议并查看已经分析的行数。您还可以通过单击建议下方的向上拇指或向下拇指图标针对 CodeGuru 建议来提供反馈。

GitHub 操作和 CI/CD 集成

CodeGuru Reviewer 的 CI/CD 体验可以让您使用 GitHub Actions 调用代码质量和安全性分析(作为其 CI 工作流中的一个步骤)。您可以将其配置为运行并对管道的 pull、push 或计划运行提供建议。当您通过 CI/CD 调用 CodeGuru Reviewer 扫描后,可以在 CodeGuru Reviewer 控制台内或 GitHub 用户界面内查看代码质量或安全性建议。 通过CI/CD集成,您可以持续监控代码的质量和安全性,帮助确保不会错过建议。 在 CodeGuru Reviewer 中,您可以使用位于 GitHub Marketplace 的 GitHub Action 直接在 GitHub 用户界面内运行安全审查和接收建议。当您注册后,建议将直接在 GitHub 安全性选项卡内显示。

安全检测

建议还会提供在拉取请求和 AWS 控制台内。如果您点击 GitHub 内的一个建议,您将获得更深入的结果信息,例如它在您的应用程序内创建的问题,解决路径,与它关联的任何 CWE(通用弱点枚举)及其严重性。

拉取请求

Amazon CodeGuru Profiler

Amazon CodeGuru Profiler 不断在探求应用程序性能优化,确定最“昂贵”的代码行,并提供修复方法建议,以降低 CPU 使用率、减少计算成本和提高应用程序性能。例如,CodeGuru Profiler 可以确定您的应用程序何时消耗了过多 CPU 容量来记录例程而不是执行核心业务逻辑。

在生产中随时分析应用程序

CodeGuru Profiler 设计为以最小开销在生产环境中连续运行,这意味着您可以在对应用程序性能影响最小的情况下一直开启这一功能。这样,您就可以使用真实的客户流量模式来分析应用程序并对其进行问题排查,还可以轻松地发现性能问题。借助于性能分析数据和机器学习支持的建议,您可以为生产中的应用程序找出并修复性能问题。 CodeGuru Profiler 还可提供堆摘要,让您确定在任何指定时间哪些对象正在耗尽您的内存。

了解应用程序的运行时行为

CodeGuru Profiler 可持续分析应用程序的 CPU 利用率、堆使用情况和延迟特性,以显示您在应用程序中花费最多周期或时间的部分。CPU 和延迟分析以交互式火焰图的形式呈现,可帮助您轻松了解哪些代码路径消耗的资源最多,验证您的应用程序是否按预期执行,并找出可以进一步优化的方面。

图片处理服务
 单击可放大

火焰图可聚合一段时间内的堆栈踪迹抽样数据以生成该段时间内应用程序行为的准确图形,从而可视化应用程序的性能。您可以使用火焰图了解哪些路径消耗的资源最多,验证您的应用程序是否按预期执行,并找出可以进一步优化的方面。例如,方法 UploadGreyImage 每年花费 134868 USD,它占用了 10.22% 的时钟时间,因此,如果您不希望它占用那么多时间,则应该进行调查。

堆摘要

堆使用情况分析显示在堆摘要画面上,可为您显示在您的堆上哪些了对象分配 – 无论是您自己的还是库或 JDK 拥有的域类别。

发现生产性能中的异常和常见问题
 单击可放大

堆摘要可显示指定时段内在该堆上分配的所有对象及其大小、计数和时间序列。例如,您可以看到在 4:20pm 的时间序列图上,有两个开始明显增长的对象(java.util.LinkedHashMap$Entry 和 java.land.UUID),这表示可能存在内存泄漏。如果这种上升趋势继续,不加遏制可能会导致内存不足的情况。

智能建议

CodeGuru Profiler 可以自动识别应用程序中的性能问题,并就如何修复这些问题提供机器学习支持的建议。这些建议可帮助您识别和优化代码中开销最大或资源最密集的方法,您无需成为性能工程专家。这些优化可帮助您降低基础设施的成本,减少延迟,并改善最终用户的整体体验。

智能建议
 单击可放大

当 Amazon CodeGuru Profiler 察觉有机会优化应用程序性能时,会解释为何建议进行更改、问题缘何会出现、如何解决以及此问题在哪行代码中影响您的应用程序。此建议显示,这段昂贵的代码每年花费 182160 USD,对您的 CPU 利用率的影响为 2.97%。如果您按照建议的解决方法操作,您最高将能够节省 182160 USD。

异常检测

Amazon CodeGuru Profiler 实时持续分析您的应用程序配置文件,并检测应用程序及其方法中的行为异常。CodeGuru Profiler 控制台的“建议”报告会跟踪每个异常,您可以看到该方法的延迟随时间变化的时序,且异常将突出显示。如果您已配置 Amazon SNS 通知,则在检测到新异常时将给您发送通知。

异常检测
 单击可放大
Amazon CodeGuru 定价
了解有关 Amazon CodeGuru 定价的更多信息

访问 Amazon CodeGuru 定价页面。

了解更多 
注册免费账户
注册免费账户

立即享受 AWS 免费套餐。 

注册 
开始在控制台中构建
开始在控制台中构建

在 AWS 管理控制台中,使用 Amazon CodeGuru 开始构建。

登录