代码审查与性能剖析 - 借助 Amazon CodeGuru 实现质量提升与性能优化

本文介绍利用 Amazon CodeGuru 实现代码审查自动化和应用程序性能剖析的方法。还将介绍通过与 CodeBuild 集成在 CI/CD 管道中加入质量门禁,以及生产环境的性能优化。

代码质量管理的课题与 CodeGuru 概述

代码审查是维持软件质量的重要实践,但它依赖于审查者的经验和技能,难以保持一致性。Amazon CodeGuru 是一项利用机器学习自动检测代码质量问题和性能瓶颈的服务。CodeGuru Reviewer 会在拉取请求时分析代码,指出潜在的缺陷、安全漏洞以及违反 AWS SDK 最佳实践的地方。CodeGuru Profiler 会持续分析应用程序运行时的性能,识别 CPU 使用率高的代码路径和内存泄漏的迹象。在本地运行 SonarQube 或 Checkstyle 等静态分析工具时,需要管理规则集并运维服务器,而 CodeGuru 是完全托管的服务,会自动应用最新的分析模型。它支持 Java 和 Python,并且通过与 GitHub、CodeCommit、Bitbucket 的集成,可以无缝地融入现有的开发工作流程。另外,自 2025 年 11 月 7 日起,CodeGuru Reviewer 已无法关联新的存储库,只能在现有的关联中使用。

使用 CodeGuru Reviewer 自动进行代码审查

CodeGuru Reviewer 会分析拉取请求的差异,并将具体的改进建议作为评论自动发布。检测对象涵盖范围很广,包括资源泄漏(未关闭的文件句柄、数据库连接)、并发处理问题(死锁、竞态条件)、输入验证不足以及 AWS API 的低效使用模式等。下面是在现有存储库关联中执行 CodeGuru Reviewer 完整扫描并查看结果的 AWS CLI 示例。

# 执行整个存储库的完整扫描
aws codeguru-reviewer create-code-review \
  --name full-scan-$(date +%Y%m%d) \
  --repository-association-arn arn:aws:codeguru-reviewer:ap-northeast-1:123456789012:association:xxx \
  --type '{"RepositoryAnalysis": {"RepositoryHead": {"BranchName": "main"}}}'

# 查看扫描结果
aws codeguru-reviewer list-recommendations \
  --code-review-arn arn:aws:codeguru-reviewer:...

安全检测功能会检测硬编码的凭证、SQL 注入漏洞以及不当的加密使用。还可以对整个存储库执行完整扫描,也可以用于评估现有代码库的质量。检测结果会被赋予重要程度(Critical、High、Medium、Low、Info),可以按优先级进行处理。CodeGuru Reviewer 使用在 Amazon 的大规模代码库上训练的机器学习模型,其特点是无需设置规则,即可自动提供基于实践模式的高精度问题提示。

使用 CodeGuru Profiler 进行性能优化

CodeGuru Profiler 会持续剖析在生产环境中运行的应用程序的性能,识别优化的机会。通过基于代理的性能剖析,将 CPU 使用率高的方法、不必要的对象生成、低效的日志输出模式等可视化。借助火焰图(Flame Graph)的直观可视化,可以一眼看出资源是在调用栈的哪一层被消耗的。通过异常检测功能,可以自动检测与平常不同的性能模式,及早发现延迟的增加和吞吐量的下降。性能剖析的开销被控制在最低限度(不足 CPU 使用率的 1%),因此可以在生产环境中持续运行。建议功能会针对检测到的性能问题提出具体的修复方法,帮助开发者迅速应对。它还支持 Lambda 函数的性能剖析,也有助于无服务器应用程序的成本优化。

将质量门禁集成到 CI/CD 管道

如果已有现有的存储库关联,可以将 CodeGuru Reviewer 与 CodeBuild 和 CodePipeline 集成,在 CI/CD 管道中加入自动质量门禁。可以采用这样的运维方式:在合并拉取请求之前执行 CodeGuru Reviewer 的扫描,如果有 Critical 或 High 级别的问题就阻止合并。在 CodeBuild 的构建阶段执行 CodeGuru Reviewer CLI,并将检测结果包含在构建报告中,从而实现对质量指标的持续跟踪。还可以构建将 CodeGuru Profiler 的数据作为 CloudWatch 指标发布、并通过告警检测性能劣化的机制。通过将安全检测结果汇集到 Security Hub,也有助于对整个组织的安全态势进行集中管理。定期按计划执行存储库的完整扫描,并构建将技术债务的积累可视化的控制面板,也很有效。

CodeGuru 的价格

CodeGuru Reviewer 按存储库中分析对象的代码行数按月计费,前 100,000 行每月约 10.00 美元(截至 2026 年 8 月)。拉取请求的审查次数没有限制。CodeGuru Profiler 按每个性能剖析组计费,每月 36,000 个采样小时以内,每个采样小时约 0.005 美元。

总结 - 持续改进代码质量与性能

Amazon CodeGuru 是一项综合提供代码审查自动化和应用程序性能剖析的服务。它通过 Reviewer 的静态分析及早检测缺陷和安全漏洞,并通过 Profiler 的动态分析识别生产环境的性能瓶颈。在已有现有关联的存储库中,可以将其集成到 CI/CD 管道,把作为质量门禁的自动检查融入开发工作流程。基于机器学习的分析会捕捉基于规则的静态分析工具难以检测的实践模式,有助于提高开发团队的生产力。

参考资料(AWS 官方)

本页的第一手信息来源是 AWS 官方网站及官方文档。最新的规格与价格请以下列官方页面为准。

如本页内容与官方文档不一致,请以官方文档为准。

分享