

# 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 安全防御工具使用机器学习和自动推理来分析您的代码，并识别潜在的安全漏洞和编码问题。将自动化代码审查与现有代码存储库以及持续集成/持续部署（CI/CD）管道相集成。

### 实施步骤
<a name="implementation-steps"></a>

1.  **建立代码审查流程：**
   +  定义何时应进行代码审查，例如，在将代码合并到主分支之前或部署到生产环境之前。
   +  确定谁应该参与代码审查流程，例如团队成员、高级开发人员和安全专家。
   +  决定代码审查方法，包括要使用的流程和工具。

1.  **设置代码审查工具：**
   +  评估并选择符合团队需求的代码审查工具，例如 GitHub 拉取请求或 CodeGuru 安全防御工具。
   +  将所选工具与您现有的代码存储库和 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) 
+  [关于 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) 