Code Review + Rubocop
Ferramentas, mentalidade
e evolução do processo
lucas.uyezu@locaweb.com.br
Lucas Uyezu
Dedicado -> IaaS -> Eng. Produto
Motivadores
● Diluir conhecimento técnico e de negócios
● Rubberduck debugging
● 1 gem, técnica ou manha explicada num MR
ensina a tod...
Rubberduck debugging
https://en.wikipedia.org/wiki/Rubber_duck_debugging
Rubberduck debugging
Evolução
1o. nível
Primeiros code reviews focaram em:
● tabs ao invés de espaços
● alinhamento
● if ao invés de unless
Não há impacto/valor real no produto
2o. nível
Com o tempo, passamos
naturalmente a focar em:
● sanity check
● arquitetura
● efeitos colaterais
● performance
● segurança...
Arquitetura
Performance
Segurança
https://github.com/bbatsov/rubocop
4 tipos principais de cops
LINT
Possíveis erros e más práticas:
● useless_assignment
● debugger/pry
METRIC
Métricas (configuráveis) para se
aplicar ao código:
● Métrica ABC
● Complexidade Perceptível
http://c2.com/cgi/wiki?AbcMetric
RAILS
Cops exclusivo para RoR:
● delegate
● scope_args: scopes que não
estão encapsulados em
procs/lambdas
scope_args
scope_args
Style
Cops de estilo (duh)
● alinhamento de hash com n linhas
● Indentação
Plugins para Vim, Emacs,
Sublime & TextMate
● Todos os projetos usam o mesmo .rubocop.
yml
● Antes do commit, ele passa o rubocop nos
arquivos do diff.
● Se tiver err...
Resultados
(Após 1+ ano)
● Conhecimento difundido: quase não existem
áreas em IaaS com 'pai'
● Cloud+Dedicado+Load Balancer + Becape +
Painel de Ia...
Moral da história
Muita gente ocupada,
atribuir um Deadline ao
MR e seguir em frente
Projetos antigos
rubocop -lR
Antes do "pente-fino"
Não seja xiita
(rubocop não passava no
nosso rubocop.yml)
Alarmar é mais
importante do que passar
tudo e ganhar estrela de
bom menino
Dúvidas?
Obrigado!
Próximos SlideShares
Carregando em…5
×

Tech talkrubocop

418 visualizações

Publicada em

Slides da apresentação ocorrida em: https://www.eventials.com/locaweb/vantagens-e-desvantagens-do-rubocop/

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
418
No SlideShare
0
A partir de incorporações
0
Número de incorporações
41
Ações
Compartilhamentos
0
Downloads
1
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Tech talkrubocop

  1. 1. Code Review + Rubocop Ferramentas, mentalidade e evolução do processo
  2. 2. lucas.uyezu@locaweb.com.br Lucas Uyezu Dedicado -> IaaS -> Eng. Produto
  3. 3. Motivadores
  4. 4. ● Diluir conhecimento técnico e de negócios ● Rubberduck debugging ● 1 gem, técnica ou manha explicada num MR ensina a todos
  5. 5. Rubberduck debugging https://en.wikipedia.org/wiki/Rubber_duck_debugging
  6. 6. Rubberduck debugging
  7. 7. Evolução
  8. 8. 1o. nível
  9. 9. Primeiros code reviews focaram em: ● tabs ao invés de espaços ● alinhamento ● if ao invés de unless
  10. 10. Não há impacto/valor real no produto
  11. 11. 2o. nível
  12. 12. Com o tempo, passamos naturalmente a focar em: ● sanity check ● arquitetura ● efeitos colaterais ● performance ● segurança http://blog.fogcreek.com/effective-code-reviews-9-tips-from-a-converted-skeptic/
  13. 13. Arquitetura
  14. 14. Performance
  15. 15. Segurança
  16. 16. https://github.com/bbatsov/rubocop
  17. 17. 4 tipos principais de cops
  18. 18. LINT Possíveis erros e más práticas: ● useless_assignment ● debugger/pry
  19. 19. METRIC Métricas (configuráveis) para se aplicar ao código: ● Métrica ABC ● Complexidade Perceptível
  20. 20. http://c2.com/cgi/wiki?AbcMetric
  21. 21. RAILS Cops exclusivo para RoR: ● delegate ● scope_args: scopes que não estão encapsulados em procs/lambdas
  22. 22. scope_args
  23. 23. scope_args
  24. 24. Style Cops de estilo (duh) ● alinhamento de hash com n linhas ● Indentação
  25. 25. Plugins para Vim, Emacs, Sublime & TextMate
  26. 26. ● Todos os projetos usam o mesmo .rubocop. yml ● Antes do commit, ele passa o rubocop nos arquivos do diff. ● Se tiver erros, não rola commit.
  27. 27. Resultados (Após 1+ ano)
  28. 28. ● Conhecimento difundido: quase não existem áreas em IaaS com 'pai' ● Cloud+Dedicado+Load Balancer + Becape + Painel de IaaS + Client VLAN: 9 PRBs + 3 frozen
  29. 29. Moral da história
  30. 30. Muita gente ocupada, atribuir um Deadline ao MR e seguir em frente
  31. 31. Projetos antigos
  32. 32. rubocop -lR
  33. 33. Antes do "pente-fino"
  34. 34. Não seja xiita (rubocop não passava no nosso rubocop.yml)
  35. 35. Alarmar é mais importante do que passar tudo e ganhar estrela de bom menino
  36. 36. Dúvidas?
  37. 37. Obrigado!

×