Phabricator

  • O que é code review?
  • PCI
  • Como fazer
  • Ferramenta
  • Problemas

Linhas de código (Lines of Code)

  • RC Server - 27K LoC 
  • WS CRR - 40k LoC
  • Site Comprador VT - 80K LoC
  • Produção - 124K LoC
  • Mobilidade - 190K LoC
  • Hibernate - 1M LoC 
  • Firefox - 5M LoC
  • MySQL - 12M LoC
  • Windows Server 2003 - 50M LoC
  • Debian 5 - 66M LoC

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) …“   

Como FAZER

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

Formal

  • Linha a linha.
  • Multiplos 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 desconsiderado.
  • 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 reviewers.
  • 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.

Phabricator

O que é?

Conjunto de aplicações Web que facilitam a construção de software, particularmente quando trablhamos com times.

Differential, code review
Diffusion, Navegador de repositorios 

Phriction, bug tracker
Maniphest, wiki

Entre outras ferramentas. . .

Comunicação Persistente

Discussões que envolvem mudanças nas regras de negócio ou implementações mais espertas que necessitam de algum tipo de explanação.

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.

Notificações 

Facilita o gerenciamento de tarefas, quando um desenvolvedor faz um commit ou alteração de status em discussão técnica os interessados podem receber as notificações em tempo real para agilizar o processo de troca de informações.

Post-Commmit

Ferramenta facilita 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.

Calendario de Reviews

Para agendamento de tarefas como code-review, design review e outras.
Mas o calendar não server? Serve! Vale a pena misturar tarefas de desenvolvimentos e reuniões com ela?

Markup

Traz a capacidade de colocar marcações inteligentes que interligam commits, code reviews, design reviews e discussões. Esse tipo de marcação enriquece e agiliza as discussões.

Não é mais necessário ter que lembrar de quando o email foi mandado se as discussões forem feitas nesse tipo de ferramenta.

É possivel tabém fazer formatação de código para exemplos dentro do texto.

Tasks

Atribuição de tarefas. e o JIRA?

Talvez não seja a ferramenta correta por exemplo para montar essa apresentação. Tarefas de desenvolvimento em geral.

Web Design Review

Ferramenta para revisão de mocks, orientada principalmente por imagens do prototipo.

Feed de Noticias

Transparência para tudo que acontece em todos os projetos.

Por que usar ?

  • Baixo custo de instalação.
  • As ferramentas funcionam em conjunto e são integradas.
  • Free / Open Source (Podemos customizar).
  • Rápido e escalável (projetos com 500K+ commits e 500+ usuarios sem perda de performance @Facebook).
  • Fácil de aprender/entender/usar.
  • Praticamente todas as tarefas GUI tem alternativas CLI (fácil automação).

Empresas Utilizando

Dúvidas?

Obrigado!

 

alexrios.github.io

dev.alexrios@gmail.com

@alextrending

Made with Slides.com