Code REview

Revisão

avaliação formal de algo com a intenção de promover mudanças, se necessário.

Code Review

Análise do código fonte com intuito de achar defeitos:

  • Segurança, Funcional, Performance...
  • Complementa a análise estática.
  • Detecção antecipada.

COMPLIANCE

  • PCI-DSS - Payment Card Industry Data     Security Standard (since 2005 - version 3.0)
  • Requirement : 
  • “Review custom code prior to release to   producion or customers in order to identify any potencial coding vulnerability (using either manual or automated processes) …“   

Metodos

Os métodos de code review podem variar muito de acordo com a profundidade da análise.

Formal

  • Linha a linha.
  • Múltiplos reviewers.
  • Review em grupo.
  • Cópias impressas.
  • Encontra problemas difíceis de encontrar.
  • Gasta tempo.

Leve

  • Análise superficial.
  • Análise baseadas em padrões.
  • Revisa apenas funções críticas.
  • Fácil de deixar passar problemas mais simples.
  • Gasta menos tempo.
  • Bom para encontrar vunerabilidades básicas.

Como pode ser feito

  • Manual
  • Automática
  • Ambos

3 Regras para um REview

Regra 1

O reviewer não pode ser quem escreve o código.

  • Se somos capazes de achar bugs no código, somos capaz de evitá-los.
  • Análise Parcial.
  • O reviewer deve ter uma perspectiva diferente do desenvolvedor.
  • O reviewer (preferencialmente) deve participar de outro projeto.

Regra 2

O reviewer deve entender a linguagem sendo revisada.

Regra 3

Foco no Objetivo: segurança, performance, funcionalidade, etc. 

Não deve basear-se em preferências pessoais.

Regra 4?

Não procure apenas por defeitos, elogie quando achar coisas legais e tente aprender com essa oportunidade.

Um pouco mais sobre motivaçÃo

como motivar os reviewers?

Dizer

"Code review é obrigatorio" não vai funcionar!

  • Os devs tem coisas mais interessantes para fazer.
  • Os devs tem mais o que fazer.
  • Os devs tem deadlines agressivos e a revisão acaba facilmente sendo desconsiderada.
  • Os devs não gostam do código alheio.
  • Os devs não sabem O QUE revisar. 

A grande Pergunta

O que revisar?

Não deixem os devs escolherem o que revisar arbitrariamente.

Code review são para Reviewers

  • Utilize uma ferramenta para gerenciar o que é associado para cada reviewer.
  • Cada reviewer tem uma fila de revisões a serem feitas.
  • 1 revisão = 1 Pull Request 

garanta

  • Cobertura de código - Todo o código deve ser revisado.
  • Responsabilidade - O desenvolvedor tem uma tarefa publicamente associada a ele.
  • Entregáveis - Crie evidências, aumente a motivação para revisar.

Fluxo de Trabalho

BRANCH - DISCUSS - MERGE

BRANCH 

DISCUSS 

MERGE 

MERGE 

MERGE 

PRECISAMOS FALAR SOBRE DESIGN REVIEW

Design Review

É muito frustrante descobrir ao fim de uma implementação que o design é ruim e ter que troca-lo.

Até mesmo deixar o design ruim e não escalavel, com isso nossa code-base piora inegavelmente, pois o custo de manutenção aumenta exponencialmente com o tempo.

Como fazer?

Durante a fase de analise da issue, utiliza-se de um um outro dev para discutir a idéia do que será implementado.

 

 (Dev que auxilia pode (deve?) lançar horas na issue do colega em casos de analises mais complexas)

Exceções

Post-Commmit Review

A atividade de code review tardio.
O que não deveria acontecer, mas vem se tornando comum, ou pela falta de capacitados para a tarefa de code review ou pela urgência de algumas entregas.

 

Faz-se a entrega e cria-se uma tarefa de débito técnico na ferramenta de Issue Tracker para a revisão do código entregue sem revisão.

(Alinhe essa necessidade com sua equipe/time)

Eu ouvi          ?

Code Review + JIRA

Obrigado!

 

alexrios.github.io

alex.rios@protonmail.com

@alextrending

Code Review

By Alex Rios

Code Review

Importância do Code Review

  • 450