Amazon CodeGuru

利用机器学习自动化代码审查、识别应用运行时性能瓶颈并检测安全漏洞的服务

概述

Amazon CodeGuru 是一项利用机器学习提升代码质量和优化应用性能的服务。CodeGuru Reviewer 在拉取请求时自动分析代码,检测潜在 Bug、安全漏洞和 AWS SDK 最佳实践违规。CodeGuru Profiler 持续测量应用运行时性能,可视化 CPU 使用率高的代码路径和延迟瓶颈。CodeGuru Security 通过静态分析检测漏洞并提供修复代码建议。

CodeGuru Reviewer 的代码质量分析

CodeGuru Reviewer 与 GitHub、CodeCommit、Bitbucket 仓库集成,每次创建拉取请求时自动分析差异代码。基于 Amazon 内部积累的数百万次代码审查数据训练的机器学习模型,可指出一般 Linter 无法检测的逻辑问题。例如检测可能存在资源泄漏的 try-finally 模式、非线程安全的集合操作、AWS SDK 的低效调用模式(如循环中重复调用 DynamoDB GetItem)等。支持 Java 和 Python,检测结果直接作为拉取请求评论发布,开发者可在常规代码审查流程中确认和处理。还支持对整个仓库进行全量扫描,可用于评估现有代码库质量。检测到的建议附带示例代码和说明,帮助开发者理解为何需要该更改。

CodeGuru Profiler 的运行时性能分析

CodeGuru Profiler 持续对生产环境中运行的应用进行 CPU 使用率和延迟的性能分析。将代理嵌入应用后,每 5 分钟收集堆栈跟踪样本并以火焰图形式可视化。火焰图一目了然地显示哪些方法消耗了最多 CPU 时间,帮助定位需要优化的代码路径。Lambda 函数无需嵌入代理,只需创建分析组并关联 Lambda 函数即可开始测量。Profiler 的异常检测功能以正常性能配置文件为基线进行学习,当 CPU 使用率或延迟异常增加时自动通知。建议引擎针对检测到的瓶颈生成具体改进建议。例如当日志输出的格式化处理消耗了 15% 的 CPU 时,会建议改用延迟求值模式。

CodeGuru Security 的漏洞检测

CodeGuru Security 提供静态应用安全测试(SAST),检测源代码中的安全漏洞。覆盖 OWASP Top 10 中的 SQL 注入、跨站脚本(XSS)、硬编码凭证、加密缺陷等,支持 Java、Python、JavaScript、TypeScript。检测结果附带 CWE(通用弱点枚举)编号和严重程度,可系统性地掌握漏洞类型和影响范围。特别值得一提的是自动修复建议功能,可针对检测到的漏洞生成修复后的代码片段。例如检测到未参数化的 SQL 查询时,会建议使用预处理语句的修复代码。在 CI/CD 流水线集成中,可作为 CodePipeline 的操作嵌入,在检测到漏洞时停止流水线作为质量门。检测结果还可连接到 Security Hub,作为组织整体安全态势的一部分进行管理。

共有するXB!