

# SEC11-BP04 Realizar revisões de código
<a name="sec_appsec_manual_code_reviews"></a>

 Implemente revisões de código para ajudar a verificar a qualidade e a segurança do software que está sendo desenvolvido. As revisões de código envolvem a participação de outros membros da equipe, além do autor do código original, na revisão do código em busca de possíveis problemas, vulnerabilidades e aderência aos padrões de codificação e às práticas recomendadas. Esse processo ajuda a detectar erros, inconsistências e falhas de segurança que podem ter sido ignoradas pelo desenvolvedor original. Use ferramentas automatizadas para ajudar nas revisões de código. 

 **Resultado desejado:** você inclui revisões de código durante o desenvolvimento para aumentar a qualidade do software que está sendo escrito. Você aprimora as habilidades dos membros menos experientes da equipe por meio de aprendizados identificados durante a revisão do código. Identifique oportunidades de automação e ofereça suporte ao processo de revisão de código usando ferramentas e testes automatizados. 

 **Práticas comuns que devem ser evitadas:** 
+  Não revisar o código antes da implantação. 
+  A mesma pessoa escreve e revisa o código. 
+  Não utilizar a automação para auxiliar ou orquestrar as revisões de código. 
+  Não treinar os criadores em segurança de aplicações antes de revisarem o código. 

**Benefícios de implementar esta prática recomendada:**
+  Código de melhor qualidade. 
+  Maior consistência do desenvolvimento do código por meio da reutilização de abordagens comuns. 
+  Redução no número de problemas descobertos durante o teste de penetração e em estágios posteriores. 
+  Maior transferência de conhecimentos na equipe. 

 **Nível de risco exposto se esta prática recomendada não for estabelecida:** Médio 

## Orientação para implementação
<a name="implementation-guidance"></a>

 As revisões de código ajudam a verificar a qualidade e a segurança do software durante o desenvolvimento. As revisões manuais envolvem a participação de um membro da equipe, além do autor do código original, na revisão do código em busca de possíveis problemas, vulnerabilidades e aderência aos padrões de codificação e às práticas recomendadas. Esse processo ajuda a detectar erros, inconsistências e falhas de segurança que podem ter sido ignoradas pelo desenvolvedor original. 

 Considere o [Amazon CodeGuru Security](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html) para ajudar a conduzir análises automatizadas de código. O CodeGuru Security usa machine learning e raciocínio automatizado para revisar o código e identificar possíveis vulnerabilidades de segurança e problemas de codificação. Integre revisões automatizadas de código com seus repositórios de código e pipelines de integração contínua/implantação contínua (CI/CD). 

### Etapas de implementação
<a name="implementation-steps"></a>

1.  **Estabeleça um processo de revisão de código:** 
   +  Defina quando as revisões de código devem ocorrer, como antes de mesclar o código na ramificação principal ou antes da implantação na produção. 
   +  Determine quem deve estar envolvido no processo de revisão de código, como membros da equipe, desenvolvedores seniores e especialistas em segurança. 
   +  Decida sobre a metodologia de revisão de código, incluindo o processo e as ferramentas a serem usadas. 

1.  **Configure ferramentas de revisão de código:** 
   +  Avalie e selecione ferramentas de revisão de código que atendam às necessidades da sua equipe, como Pull Requests do GitHub ou CodeGuru Security 
   +  Integre as ferramentas escolhidas com seus repositórios de código e pipelines de CI/CD existentes. 
   +  Configure as ferramentas para impor os requisitos de revisão de código, como o número mínimo de revisores e as regras de aprovação. 

1.  **Defina uma lista de verificação e diretrizes de revisão de código:** 
   +  Crie uma lista de verificação ou diretrizes de revisão de código que descrevam o que deve ser revisado. Considere fatores como qualidade do código, vulnerabilidades de segurança, aderência aos padrões de codificação e desempenho. 
   +  Compartilhe a lista de verificação ou as diretrizes com a equipe de desenvolvimento e verifique se todos entendem as expectativas. 

1.  **Treine desenvolvedores sobre as práticas recomendadas de revisão de código:** 
   +  Forneça treinamento à equipe sobre como conduzir revisões de código eficazes. 
   +  Eduque a equipe sobre os princípios de segurança de aplicações e as vulnerabilidades comuns a serem observadas durante as revisões. 
   +  Incentive o compartilhamento de conhecimento e sessões de programação em pares para aprimorar as habilidades dos membros menos experientes da equipe. 

1.  **Implemente o processo de revisão de código:** 
   +  Integre a etapa de revisão de código ao seu fluxo de trabalho de desenvolvimento, como criar uma pull request e designar revisores. 
   +  Exija que as alterações de código passem por uma revisão antes da fusão ou implantação. 
   +  Incentive a comunicação aberta e o feedback construtivo durante o processo de revisão. 

1.  **Monitore e melhore:** 
   +  Analise regularmente a eficácia do seu processo de revisão de código e obtenha feedback da equipe. 
   +  Identifique oportunidades de automação ou melhorias nas ferramentas para agilizar o processo de revisão de código. 
   +  Atualize e refine continuamente a lista de verificação ou as diretrizes de revisão de código com base nos aprendizados e nas práticas recomendadas do setor. 

1.  **Promova uma cultura de revisão de código:** 
   +  Enfatize a importância das revisões de código para manter a qualidade e a segurança do código. 
   +  Comemore os sucessos e os aprendizados do processo de revisão de código. 
   +  Incentive um ambiente colaborativo e solidário em que os desenvolvedores se sintam à vontade para dar e receber feedback. 

## Recursos
<a name="resources"></a>

 **Práticas recomendadas relacionadas:**
+  [SEC11-BP02 Automatizar o teste durante o ciclo de vida de desenvolvimento e lançamento](sec_appsec_automate_testing_throughout_lifecycle.md) 

 **Documentos relacionados:** 
+  [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) 
+  [Sobre solicitações pull no GitHub](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests) 

 **Exemplos relacionados:** 
+  [Automatizar as revisões de código com o Amazon CodeGuru Security](https://aws.amazon.com/blogs/devops/automate-code-reviews-with-amazon-codeguru-reviewer/) 
+  [Automatizar a detecção de vulnerabilidades e bugs de segurança em pipelines de CI/CD usando a CLI do Amazon CodeGuru Security](https://aws.amazon.com/blogs/devops/automating-detection-of-security-vulnerabilities-and-bugs-in-ci-cd-pipelines-using-amazon-codeguru-reviewer-cli/) 

 **Vídeos relacionados:** 
+  [Melhoria contínua da qualidade do código com o Amazon CodeGuru Security](https://www.youtube.com/watch?v=iX1i35H1OVw) 