

# SEC11-BP04 コードレビューを実施する
<a name="sec_appsec_manual_code_reviews"></a>

 コードレビューを実装して、開発中のソフトウェアの品質とセキュリティを検証します。コードレビューでは、元のコード作成者以外のチームメンバーがコードをレビューし、潜在的な問題、脆弱性、コーディング標準とベストプラクティスへの準拠を確認します。このプロセスは、元のデベロッパーが見落とした可能性のあるエラー、不整合、セキュリティ上の欠陥を検出するのに役立ちます。自動ツールを使用してコードレビューを支援します。

 **期待される成果:** 開発中にコードレビューを含め、記述されるソフトウェアの品質を向上させます。コードレビュー中に特定された学習を通じて、経験の浅いチームメンバーをスキルアップさせます。自動化の機会を特定し、自動化ツールとテストを使用してコードレビュープロセスをサポートします。

 **一般的なアンチパターン:** 
+  デプロイ前にコードを確認しない。
+  コードの作成とレビューを同じ担当者が行っている。
+  コードレビューの支援と調整に自動化を使用していない。
+  コードレビューの前に、アプリケーションセキュリティについてビルダーをトレーニングしていない。

**このベストプラクティスを活用するメリット:**
+  コード品質の向上。
+  共通のアプローチの再利用によるコード開発の一貫性の向上。
+  ペンテストや後工程において検出される問題が低減する。
+  チーム内での知識の移転が改善される。

 **このベストプラクティスを活用しない場合のリスクレベル:** 中 

## 実装のガイダンス
<a name="implementation-guidance"></a>

 コードレビューは、開発中のソフトウェアの品質とセキュリティを検証するのに役立ちます。手動レビューでは、元のコード作成者以外のチームメンバーがコードをレビューし、潜在的な問題、脆弱性、コーディング標準およびベストプラクティスへの準拠を確認します。このプロセスは、元のデベロッパーが見落とした可能性のあるエラー、不整合、セキュリティ上の欠陥を検出するのに役立ちます。

 自動コードレビューの実施には、[Amazon CodeGuru Security](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html) を検討してください。CodeGuru Security は、機械学習と自動推論を使用してコードを分析し、潜在的なセキュリティの脆弱性とコーディングの問題を特定します。自動コードレビューを既存のコードリポジトリや継続的インテグレーション/継続的デプロイ (CI/CD) パイプラインと統合します。

### 実装手順
<a name="implementation-steps"></a>

1.  **コードレビュープロセスを確立します。**
   +  コードをメインブランチにマージする前や本番環境にデプロイする前など、コードレビューを実行するタイミングを定義します。
   +  チームメンバー、シニアデベロッパー、セキュリティエキスパートなど、コードレビュープロセスに関与するユーザーを決定します。
   +  使用するプロセスやツールなど、コードレビューの方法を決定します。

1.  **コードレビューツールをセットアップします。**
   +  GitHub Pull Requests や CodeGuru Security など、チームのニーズに合ったコードレビューツールを評価して選択します。
   +  選択したツールを既存のコードリポジトリと CI/CD パイプラインと統合します。
   +  レビュー担当者の最小数や承認ルールなどのコードレビュー要件を適用するようにツールを構成します。

1.  **コードレビューチェックリストとガイドラインを定義します。**
   +  レビュー対象の概要を示すコードレビューチェックリストまたはガイドラインを作成します。コードの品質、セキュリティの脆弱性、コーディング標準の遵守、パフォーマンスなどの要因を考慮してください。
   +  チェックリストまたはガイドラインを開発チームと共有し、期待されている内容を全員が理解していることを確認します。

1.  **コードレビューのベストプラクティスについて、デベロッパーにトレーニングを実施します。**
   +  効果的なコードレビューを行う方法について、チームにトレーニングを提供します。
   +  アプリケーションセキュリティの原則と、レビュー中に確認する一般的な脆弱性についてチームに教育します。
   +  知識の共有とペアプログラミングセッションを奨励して、経験の浅いチームメンバーのスキルアップを図ります。

1.  **コードレビュープロセスを実装します。**
   +  プルリクエストの作成やレビュー担当者の割り当てなど、コードレビュー手順を開発ワークフローに統合します。
   +  マージまたはデプロイの前に、コードの変更がコードレビューを受けることを必須にします。
   +  レビュープロセス中のオープンなコミュニケーションと建設的なフィードバックを奨励します。

1.  **モニタリングと改善:** 
   +  コードレビュープロセスの有効性を定期的に確認し、チームからフィードバックを収集します。
   +  自動化またはツールの改善の機会を見極め、コードレビュープロセスを合理化します。
   +  学習内容と業界のベストプラクティスに基づいて、コードレビューチェックリストまたはガイドラインを継続的に更新および改良します。

1.  **コードレビューの文化を育む:** 
   +  コード品質とセキュリティを維持するために、コードレビューの重要性を強調します。
   +  コードレビュープロセスからの学習の成果と、プロセスの成功を称えます。
   +  デベロッパーが安心してフィードバックを提供し、受け取ることができるような協力的で協力的な環境を奨励します。

## リソース
<a name="resources"></a>

 **関連するベストプラクティス:**
+  [SEC11-BP02 開発およびリリースライフサイクル全体を通じてテストを自動化する](sec_appsec_automate_testing_throughout_lifecycle.md) 

 **関連ドキュメント:** 
+  [DevOps Guidance: DL.CR.2 Perform peer review for code changes](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/dl.cr.2-perform-peer-review-for-code-changes.html) 
+  [About pull requests in GitHub](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests) 

 **関連する例:** 
+  [Automate code reviews with Amazon CodeGuru Security](https://aws.amazon.com/blogs/devops/automate-code-reviews-with-amazon-codeguru-reviewer/) 
+  [Automating detection of security vulnerabilities and bugs in CI/CD pipelines using Amazon CodeGuru Security CLI](https://aws.amazon.com/blogs/devops/automating-detection-of-security-vulnerabilities-and-bugs-in-ci-cd-pipelines-using-amazon-codeguru-reviewer-cli/) 

 **関連動画:** 
+  [Continuous improvement of code quality with Amazon CodeGuru Security](https://www.youtube.com/watch?v=iX1i35H1OVw) 