Amazon CodeGuru
機械学習でコードレビューの自動化とアプリケーションのランタイムパフォーマンスボトルネック特定、セキュリティ脆弱性検出を行うサービス
概要
Amazon CodeGuru は、機械学習を活用してコード品質の向上とアプリケーションパフォーマンスの最適化を支援するサービスです。CodeGuru Reviewer はプルリクエスト時にコードを自動分析し、バグの可能性、セキュリティ脆弱性、AWS SDK のベストプラクティス違反を検出します。CodeGuru Profiler はアプリケーションのランタイムパフォーマンスを継続的に計測し、CPU 使用率の高いコードパスやレイテンシのボトルネックを可視化します。CodeGuru Security は静的解析で脆弱性を検出し、修正コードの提案まで行います。
CodeGuru Reviewer によるコード品質分析
CodeGuru Reviewer は、GitHub、CodeCommit、Bitbucket のリポジトリと連携し、プルリクエストが作成されるたびに差分コードを自動分析します。Amazon 社内で蓄積された数百万件のコードレビューデータで訓練された機械学習モデルが、一般的なリンターでは検出できない論理的な問題を指摘します。たとえば、リソースリークの可能性がある try-finally パターン、スレッドセーフでないコレクション操作、AWS SDK の非効率な呼び出しパターン (ループ内での DynamoDB GetItem の繰り返しなど) を検出します。対応言語は Java と Python で、検出結果はプルリクエストのコメントとして直接投稿されるため、開発者は通常のコードレビューフローの中で指摘を確認・対応できます。リポジトリ全体のフルスキャンも実行でき、既存コードベースの品質評価に活用できます。検出された推奨事項にはサンプルコードと解説が付属し、なぜその変更が必要かを開発者が理解できるよう設計されています。
CodeGuru Profiler によるランタイムパフォーマンス分析
CodeGuru Profiler は、本番環境で稼働するアプリケーションの CPU 使用率とレイテンシを継続的にプロファイリングします。エージェントをアプリケーションに組み込むと、5 分間隔でスタックトレースのサンプルを収集し、フレームグラフとして可視化します。フレームグラフでは、どのメソッドが CPU 時間を最も消費しているかが一目で分かり、最適化すべきコードパスを特定できます。Lambda 関数の場合はエージェントの組み込みが不要で、プロファイリンググループを作成して Lambda 関数を紐づけるだけで計測が開始されます。Profiler の異常検知機能は、通常時のパフォーマンスプロファイルをベースラインとして学習し、CPU 使用率やレイテンシが異常に増加した場合に自動的に通知します。推奨事項エンジンは、検出されたボトルネックに対して具体的な改善提案を生成します。たとえば、ログ出力のフォーマット処理が CPU の 15% を消費している場合、遅延評価パターンへの変更を提案するといった形です。
CodeGuru Security による脆弱性検出
CodeGuru Security は静的アプリケーションセキュリティテスト (SAST) を提供し、ソースコード内のセキュリティ脆弱性を検出します。OWASP Top 10 に含まれる SQL インジェクション、クロスサイトスクリプティング (XSS)、ハードコードされた認証情報、暗号化の不備などを対象とし、Java、Python、JavaScript、TypeScript に対応しています。検出結果には CWE (Common Weakness Enumeration) 番号と深刻度が付与され、脆弱性の種類と影響範囲を体系的に把握できます。特筆すべきは自動修正提案機能で、検出された脆弱性に対して修正後のコードスニペットを生成します。たとえば、パラメータ化されていない SQL クエリを検出した場合、プリペアドステートメントを使用した修正コードを提案します。CI/CD パイプラインへの統合では、CodePipeline のアクションとして組み込み、脆弱性が検出された場合にパイプラインを停止する品質ゲートを設定できます。検出結果は Security Hub にも連携でき、組織全体のセキュリティポスチャの一部として管理できます。