使用 Amazon CodeGuru 自动改善代码质量 - Reviewer 与 Profiler 的运用
基于 ML 的 Reviewer 自动检测资源泄漏和并发处理问题,Profiler 通过火焰图可视化 CPU 瓶颈。介绍集成到 CI/CD 的模式。
CodeGuru Reviewer 的自动代码审查
CodeGuru Reviewer 是使用 ML 模型自动检测代码问题的服务。它与 GitHub、CodeCommit、Bitbucket 的仓库集成,在创建拉取请求时自动执行代码审查。检测对象包括资源泄漏(未关闭的流、连接)、并发处理问题(竞态条件、死锁)和 AWS API 的低效使用(未使用分页、不必要的 API 调用)。安全漏洞(硬编码的凭证、SQL 注入)也属于检测对象。检测结果会作为拉取请求的评论直接发布,因此开发人员可以在常规的代码审查流程中进行处理。不过,CodeGuru Reviewer 自 2025 年 11 月 7 日起已无法关联新的仓库,只能在现有的关联中使用。
CodeGuru Profiler 的性能分析
CodeGuru Profiler 是持续分析应用程序运行时性能的服务。它支持 Java 和 Python 应用程序,通过嵌入代理,可视化 CPU 使用率高的方法、延迟瓶颈和内存分配的热点。通过火焰图可以一目了然地掌握整个调用栈的 CPU 消耗,并确定应当优化的代码路径。Profiler 的开销被控制得很小。它也支持 Lambda 函数,可以确定冷启动的瓶颈和低效的处理。
集成到 CI/CD 管道
也可以执行完整的仓库扫描,一次性检测整个现有代码库中的问题。Profiler 的建议会与成本削减效果的估算值一起提示。例如,会显示“优化此方法每月可以削减 XX 美元的计算成本”这样的具体指标,因此可以用于确定优化的优先顺序。Reviewer 和 Profiler 的检测结果也可以发送到 Security Hub,安全团队可以集中监控整个组织的代码质量。
CodeGuru 的费用
CodeGuru Reviewer 按仓库中分析对象的代码行数按月计费,最初的 100,000 行每月约 10.00 美元(截至 2026 年 10 月)。拉取请求的审查次数没有限制,即使是频繁创建拉取请求的开发团队,也是一种容易预测成本的计费体系。CodeGuru Profiler 按每个分析组计费,每月 36,000 采样小时以内每采样小时约 0.005 美元,成本会随分析对象的应用程序数量而变化。
检测出的问题类型
CodeGuru Reviewer 会机械地找出人工审查中容易遗漏的问题。它会指出使用完资源后忘记释放的泄漏、多个处理同时运行时的竞态条件、异常处理的缺陷、不推荐的写法等。在安全方面,它会检测机密信息的硬编码、输入验证不足等有风险的实现。这些问题即使乍看之下似乎在正常运行,也会在生产环境承受负载时或在特定条件下暴露出来。在审查阶段机械地找出这些问题,有助于事先防止后续阶段的故障和安全事件。
通过 Profiler 进行性能分析
CodeGuru Profiler 会可视化运行中的应用程序在哪里消耗时间和资源。由于它用堆叠处理调用关系的火焰图来显示,因此可以直观地确定大量使用 CPU 的位置,以及被调用得比预期更频繁的方法。重要的是,可以不靠猜测进行优化,而是基于实测数据找到瓶颈。也可以掌握内存使用方面的问题,通过减少不必要的处理,有时可以降低所需的实例规模,从而削减成本。作为性能改善的起点,它是先测量并掌握事实的手段。
融入开发工作流程
代码质量的改善,只有自然地融入开发流程才能持续下去。如果有现有的仓库关联,就会在创建拉取请求时自动执行审查,可以在有问题的变更被合并之前收到指正。开发人员除了人工审查人员之外,还能获得自动的指正,因此可以弥补审查中的疏漏。在反复应对指正的过程中,整个团队的编码质量也会得到提升。通过将其加入 CI/CD 管道,并把质量检查作为通过的条件,可以防止未达到一定标准的代码被发布,用机制来支撑质量。
与其他手段的定位
将自动代码分析定位为补充而不是取代人工审查,是恰当的。机器擅长定型模式的问题,以及无遗漏地检查大范围的代码。另一方面,设计的合理性、与业务需求的一致性等依赖于上下文的判断,由人工审查来承担。通过将两者结合,可以在自动减少机械性错误的同时,让人专注于本质性的讨论。此外,如果再结合观测运行时行为的性能分析和监控,就可以构建从开发到运维持续提升质量的体制。
总结
CodeGuru 是提供基于 ML 的自动代码审查(Reviewer)和运行时性能分析(Profiler)的服务。在现有的仓库关联中,Reviewer 会自动检测人工审查中容易遗漏的资源泄漏和并发处理问题,Profiler 会持续可视化生产环境的性能瓶颈。通过将其融入开发流程,可以带来代码质量和应用程序性能的持续改善。
参考资料(AWS 官方)
本页的第一手信息来源是 AWS 官方网站及官方文档。最新的规格与价格请以下列官方页面为准。
如本页内容与官方文档不一致,请以官方文档为准。