SlideShare una empresa de Scribd logo
1 de 36
O QUE DEVO
PROCURAR EM UM
CODE REVIEW?
http://bit.ly/procurar-code-review
RODRIGO CASTRO
Desenvolvedor Android @ Concrete
Analista de Sistemas pela UFMS/CPCX.
De Coxim/MS para o mundo!
http://castrors.github.io
rodrigo.castro@concrete.com.br
@rodrigocastro_o
SUMÁRIO
•Projeto
•Legibilidade e Manutenibilidade
•Funcionalidade
•Testes
•Boas práticas de programação
•Code Review
•Ferramentas
PROJETO
O novo código...
● se adequa a arquitetura existente?
● segue SOLID, DDD ou outro paradigma de projeto que o time adota?
● utiliza padrões de projetos adequados?
● está no lugar certo?
● reutiliza algo já existente no projeto ou introduz duplicação de
código?
● adiciona complexidade desnecessária?
LEGIBILIDADE E
MANUTENIBILIDADE
LEGIBILIDADE E
MANUTENIBILIDADE
● Os nomes(campos, variáveis, parametros, métodos e classes) refletem
no que eles representam?
● É possível entender o que o código faz apenas lendo ele?
● É possível entender o que o teste faz?
● Os testes cobrem uma boa parte das classes? Ele cobre o caminho
feliz e os casos excepcionais? Existem classes que não foram
cobertas?
FUNCIONALIDADE
FUNCIONALIDADE
● O código realmente faz o que ele deveria fazer? Existem testes
automatizados para garantir se o código está correto, se os testes
realmente testam o código de acordo com os requisitos?
● O código contém algum bug, como acidentalmente trocar um ''&&''
por ''||''?
TESTES
Pergunte para si mesmo
essas perguntas:
● Existe testes para esse novo código?
● Os testes cobrem pelo menos as partes confusas ou complicadas do
código?
● Eu consigo entender os testes? (Robot Pattern - @jakewharton)
● Os testes verificam os requisitos?
● Eu consigo pensar em partes não cobertas do código que deveriam
ser testadas?
● Existem testes para aspectos de segurança?
● Existem testes de performance?
BOAS PRÁTICAS DE
PROGRAMAÇÃO
BOAS PRÁTICAS DE
PROGRAMAÇÃO
SOLID
DRY
Padrões de Projeto
Guidelines
SRP - The single responsibility principle - A class should
have one, and only one, reason to change.
OCP - The Open Closed Principle - You should be able to
extend a classes behavior, without modifying it.
LSP - The Liskov Substitution Principle - Derived
classes must be substitutable for their base classes.
ISP - The Interface Segregation Principle - Make fine
grained interfaces that are client specific.
DIP- The Dependency Inversion Principle - Depend on
abstractions, not on concretions.
BOAS PRÁTICAS DE
PROGRAMAÇÃO
SOLID
DRY
Padrões de Projeto
Guidelines
DRY – “Don’t Repeat Yourself” – suggests that writing the
same code over and over again is a bad thing.
BOAS PRÁTICAS DE
PROGRAMAÇÃO
SOLID
DRY
Padrões de Projeto
Guidelines
BOAS PRÁTICAS DE
PROGRAMAÇÃO
SOLID
DRY
Padrões de Projeto
Guidelines
"Any fool can write code that a computer can understand. Good
programmers write code that humans can understand.
MARTIN FOWLER, REFACTORING - 1999
CODE REVIEW
CODE REVIEW
WIKI
Checklist
Tenha um documento que contenha todas as práticas
adotadas no seu projeto.
É um documento vivo, que pode e deve ser alterado
constantemente, acompanhando a evolução do projeto.
Deve estar sempre disponível aos desenvolvedores e
revisores.
Wiki? Livro? Etc.
CODE REVIEW
WIKI
Checklist Categorize cada ponto que foram citados anteriormente,
e separe em uma checklist. Desta maneira facilitará tanto
a vida do desenvolvedor na hora de criar um pull request
quanto a vida do revisor ao verificar o que foi submetido.
http://www.osnews.com/story/19266/WTFs_m
FERRAMENTAS
FERRAMENTAS
Android Lint
Checkstyle
Findbugs
SonarQube
O Android Studio oferece uma ferramenta de verificação
de código denominada lint para ajudar a identificar e
corrigir problemas com a qualidade estrutural do código,
sem executar o aplicativo nem criar casos de teste.
Gera um relatório .html o qual mostra o erro, gravidade,
explicação detalhada e como corrigir.
FERRAMENTAS
Android Lint
Checkstyle
Findbugs
SonarQube
Checkstyle é uma ferramenta de desenvolvimento para
ajudar os programadores a escrever código Java que adira
a um padrão de codificação. Ele automatiza o processo de
verificação do código Java para poupar humanos dessa
tarefa chata (mas importante). Isso o torna ideal para
projetos que desejam impor um padrão de codificação.
Pontos a serem validados: Magic Number, Nomenclatura
(de métodos, variáveis, constantes), Identação, uso correto
de chaves.
FERRAMENTAS
Android Lint
Checkstyle
Findbugs
SonarQube
FindBugs é um analisador de código estático de código
aberto criado por Bill Pugh e David Hovemeyer, que
detecta possíveis erros em programas Java. Os erros
potenciais são classificados em quatro categorias: (i) mais
assustador, (ii) assustador, (iii) preocupante e (iv) de
preocupação. Esta é uma pista para o desenvolvedor
sobre o seu possível impacto ou gravidade. FindBugs
opera em bytecode Java, em vez de código fonte.
Categorias de bugs avaliadas: Bad Practice, Malicious code
vunerability, Multitheaded correctness, Performance,
Security, Dodgy code.
FERRAMENTAS
Android Lint
Checkstyle
Findbugs
SonarQube
O SonarSource oferece o que provavelmente é o melhor
analisador de código estático que você pode encontrar no
mercado para Java. Com base no nosso próprio front-end
do compilador Java, ele usa as técnicas mais avançadas
(correspondência de padrões, análise de fluxo de dados)
para analisar código e encontrar cheiros de código, bugs
e vulnerabilidades de segurança. Quanto a qualquer
produto que desenvolvamos no SonarSource, foi
construído com os seguintes princípios: profundidade,
precisão e velocidade.
CODEBASEMerge Requests /
Pull Requests
Autor
Conversa direta com o
desenvolvedor
WIKI e
Checklist
MR em avaliação
👎 ou 👍
DICAS DE LIVROS
BIBLIOGRAFIA
● https://leanpub.com/whattolookforinacodereview
● http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod
● https://martinfowler.com/books/refactoring.html
● https://www.slideshare.net/ChristianeMoraisSilv
● http://wiki.c2.com/?GangOfFour
● https://source.android.com/source/code-style
● https://android.github.io/kotlin-guides/style.html
● https://developer.android.com/studio/write/lint.html
● http://checkstyle.sourceforge.net/index.html
● https://docs.gradle.org/current/userguide/checkstyle_plugin.html
● http://findbugs.sourceforge.net/
● https://www.sonarqube.org/
OBRIGADO!
Centro
Av. Presidente Wilson,
231 - 29º andar
(21) 2240-2030
Cidade Monções
Av. Nações Unidas,
11.541 - 3º andar
(11) 4119-0449
Savassi
Av. Getúlio Vargas, 671
Sala 800 - 8º andar
(31) 3360-8900
www.concrete.com.b
r

Más contenido relacionado

La actualidad más candente

[Devs Cansados Evento 2020] Queria saber a qualidade do meu código: o que olho?
[Devs Cansados Evento 2020] Queria saber a qualidade do meu código: o que olho?[Devs Cansados Evento 2020] Queria saber a qualidade do meu código: o que olho?
[Devs Cansados Evento 2020] Queria saber a qualidade do meu código: o que olho?Weverton Timoteo
 
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreamsJacqueline Abreu
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Developer Academy
 
Revisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da culturaRevisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da culturaLeandro Parazito
 
Engenharia de Software - Unimep/Pronatec - Aula 1
Engenharia de Software - Unimep/Pronatec - Aula 1Engenharia de Software - Unimep/Pronatec - Aula 1
Engenharia de Software - Unimep/Pronatec - Aula 1André Phillip Bertoletti
 
O Programador Pragmático
O Programador PragmáticoO Programador Pragmático
O Programador PragmáticoTadeu Marinho
 
O papel e a carreira do arquiteto de software
O papel e a carreira do arquiteto de softwareO papel e a carreira do arquiteto de software
O papel e a carreira do arquiteto de softwareLeonardo Zanivan
 
Programe a eficácia do seu código
Programe a eficácia do seu códigoPrograme a eficácia do seu código
Programe a eficácia do seu códigoAna Claudia Nogueira
 
Os Rumos do Teste de Software
Os Rumos do Teste de SoftwareOs Rumos do Teste de Software
Os Rumos do Teste de Softwareandrevdrodrigues
 
Desenvolvendo BOTs com Telegram e Javascript - TDC2016
Desenvolvendo BOTs com Telegram e Javascript - TDC2016Desenvolvendo BOTs com Telegram e Javascript - TDC2016
Desenvolvendo BOTs com Telegram e Javascript - TDC2016Erick Wendel
 
Apresentacao Qualificação - João Brunet
Apresentacao Qualificação - João BrunetApresentacao Qualificação - João Brunet
Apresentacao Qualificação - João BrunetJoão Brunet
 
Design orientado a objetos com foco nos testes
Design orientado a objetos com foco nos testesDesign orientado a objetos com foco nos testes
Design orientado a objetos com foco nos testesJoão Batista Neto
 
Test-Driven Development - Introdução
Test-Driven Development - IntroduçãoTest-Driven Development - Introdução
Test-Driven Development - IntroduçãoHélio Costa e Silva
 
Engenharia de Software - Unimep/Pronatec - Aula 3
Engenharia de Software - Unimep/Pronatec - Aula 3Engenharia de Software - Unimep/Pronatec - Aula 3
Engenharia de Software - Unimep/Pronatec - Aula 3André Phillip Bertoletti
 

La actualidad más candente (20)

[Devs Cansados Evento 2020] Queria saber a qualidade do meu código: o que olho?
[Devs Cansados Evento 2020] Queria saber a qualidade do meu código: o que olho?[Devs Cansados Evento 2020] Queria saber a qualidade do meu código: o que olho?
[Devs Cansados Evento 2020] Queria saber a qualidade do meu código: o que olho?
 
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
 
Revisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da culturaRevisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da cultura
 
Código limpo php
Código limpo phpCódigo limpo php
Código limpo php
 
Bdd&tdd
Bdd&tddBdd&tdd
Bdd&tdd
 
Clean Code na prática
Clean Code na práticaClean Code na prática
Clean Code na prática
 
Engenharia de Software - Unimep/Pronatec - Aula 1
Engenharia de Software - Unimep/Pronatec - Aula 1Engenharia de Software - Unimep/Pronatec - Aula 1
Engenharia de Software - Unimep/Pronatec - Aula 1
 
O programador pragmático
O programador pragmáticoO programador pragmático
O programador pragmático
 
O Programador Pragmático
O Programador PragmáticoO Programador Pragmático
O Programador Pragmático
 
O papel e a carreira do arquiteto de software
O papel e a carreira do arquiteto de softwareO papel e a carreira do arquiteto de software
O papel e a carreira do arquiteto de software
 
Programe a eficácia do seu código
Programe a eficácia do seu códigoPrograme a eficácia do seu código
Programe a eficácia do seu código
 
Testes Unitários
Testes UnitáriosTestes Unitários
Testes Unitários
 
Os Rumos do Teste de Software
Os Rumos do Teste de SoftwareOs Rumos do Teste de Software
Os Rumos do Teste de Software
 
Desenvolvendo BOTs com Telegram e Javascript - TDC2016
Desenvolvendo BOTs com Telegram e Javascript - TDC2016Desenvolvendo BOTs com Telegram e Javascript - TDC2016
Desenvolvendo BOTs com Telegram e Javascript - TDC2016
 
Apresentacao Qualificação - João Brunet
Apresentacao Qualificação - João BrunetApresentacao Qualificação - João Brunet
Apresentacao Qualificação - João Brunet
 
Design orientado a objetos com foco nos testes
Design orientado a objetos com foco nos testesDesign orientado a objetos com foco nos testes
Design orientado a objetos com foco nos testes
 
Test-Driven Development - Introdução
Test-Driven Development - IntroduçãoTest-Driven Development - Introdução
Test-Driven Development - Introdução
 
TDD para Java EE
TDD para Java EETDD para Java EE
TDD para Java EE
 
Engenharia de Software - Unimep/Pronatec - Aula 3
Engenharia de Software - Unimep/Pronatec - Aula 3Engenharia de Software - Unimep/Pronatec - Aula 3
Engenharia de Software - Unimep/Pronatec - Aula 3
 

Similar a O que procurar em um code review: legibilidade, funcionalidade, testes e boas práticas

TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0tdc-globalcode
 
Seu código fonte é sustentável?
Seu código fonte é sustentável?Seu código fonte é sustentável?
Seu código fonte é sustentável?Isaac de Souza
 
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de SoftwarePesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de SoftwareAdolfo Neto
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptxCarlos Gonzaga
 
Desenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realDesenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realHenrique Schmidt
 
Desenvolvimento de software mundo ideal x mundo real
Desenvolvimento de software  mundo ideal x mundo realDesenvolvimento de software  mundo ideal x mundo real
Desenvolvimento de software mundo ideal x mundo realWilly Salazar
 
TDC2018SP | Trilha Prog Funcional - Programacao funcional para humanos
TDC2018SP | Trilha Prog Funcional - Programacao funcional para humanosTDC2018SP | Trilha Prog Funcional - Programacao funcional para humanos
TDC2018SP | Trilha Prog Funcional - Programacao funcional para humanostdc-globalcode
 
Arquitetura de Software e o DNAD2013
Arquitetura de Software e o DNAD2013Arquitetura de Software e o DNAD2013
Arquitetura de Software e o DNAD2013André Borgonovo
 
Sobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaSobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaRogerio Fontes
 
Programação de Elite - Requisito dado é código implementado
Programação de Elite - Requisito dado é código implementadoProgramação de Elite - Requisito dado é código implementado
Programação de Elite - Requisito dado é código implementadoSamuel David
 
DevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu Software
DevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu SoftwareDevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu Software
DevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu SoftwareAndré Dias
 
Automação de testes em projetos ágeis
Automação de testes em projetos ágeisAutomação de testes em projetos ágeis
Automação de testes em projetos ágeisCristiano Caetano
 

Similar a O que procurar em um code review: legibilidade, funcionalidade, testes e boas práticas (20)

Arquitetura Limpa em .NET Core
Arquitetura Limpa em .NET CoreArquitetura Limpa em .NET Core
Arquitetura Limpa em .NET Core
 
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
 
Clean Architecture com .NET Core
Clean Architecture com .NET CoreClean Architecture com .NET Core
Clean Architecture com .NET Core
 
Potencializando a qualidade de código
Potencializando a qualidade de códigoPotencializando a qualidade de código
Potencializando a qualidade de código
 
Seu código fonte é sustentável?
Seu código fonte é sustentável?Seu código fonte é sustentável?
Seu código fonte é sustentável?
 
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de SoftwarePesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
 
Desenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realDesenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo real
 
Desenvolvimento de software mundo ideal x mundo real
Desenvolvimento de software  mundo ideal x mundo realDesenvolvimento de software  mundo ideal x mundo real
Desenvolvimento de software mundo ideal x mundo real
 
Macro Arquitetura de Software
Macro Arquitetura de SoftwareMacro Arquitetura de Software
Macro Arquitetura de Software
 
jCompany X Geradores de Códigos
jCompany X Geradores de CódigosjCompany X Geradores de Códigos
jCompany X Geradores de Códigos
 
Qualidade no desenvolvimento de softwre
Qualidade no desenvolvimento de softwreQualidade no desenvolvimento de softwre
Qualidade no desenvolvimento de softwre
 
Programação Funcional para Humanos
Programação Funcional para HumanosProgramação Funcional para Humanos
Programação Funcional para Humanos
 
TDC2018SP | Trilha Prog Funcional - Programacao funcional para humanos
TDC2018SP | Trilha Prog Funcional - Programacao funcional para humanosTDC2018SP | Trilha Prog Funcional - Programacao funcional para humanos
TDC2018SP | Trilha Prog Funcional - Programacao funcional para humanos
 
Arquitetura de Software e o DNAD2013
Arquitetura de Software e o DNAD2013Arquitetura de Software e o DNAD2013
Arquitetura de Software e o DNAD2013
 
Sobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaSobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis Uberlândia
 
Programação de Elite - Requisito dado é código implementado
Programação de Elite - Requisito dado é código implementadoProgramação de Elite - Requisito dado é código implementado
Programação de Elite - Requisito dado é código implementado
 
DevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu Software
DevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu SoftwareDevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu Software
DevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu Software
 
BDD com Xamarin UI Test e Specflow
BDD com Xamarin UI Test e SpecflowBDD com Xamarin UI Test e Specflow
BDD com Xamarin UI Test e Specflow
 
Automação de testes em projetos ágeis
Automação de testes em projetos ágeisAutomação de testes em projetos ágeis
Automação de testes em projetos ágeis
 

O que procurar em um code review: legibilidade, funcionalidade, testes e boas práticas

  • 1.
  • 2. O QUE DEVO PROCURAR EM UM CODE REVIEW? http://bit.ly/procurar-code-review
  • 3. RODRIGO CASTRO Desenvolvedor Android @ Concrete Analista de Sistemas pela UFMS/CPCX. De Coxim/MS para o mundo! http://castrors.github.io rodrigo.castro@concrete.com.br @rodrigocastro_o
  • 6. O novo código... ● se adequa a arquitetura existente? ● segue SOLID, DDD ou outro paradigma de projeto que o time adota? ● utiliza padrões de projetos adequados? ● está no lugar certo? ● reutiliza algo já existente no projeto ou introduz duplicação de código? ● adiciona complexidade desnecessária?
  • 8. LEGIBILIDADE E MANUTENIBILIDADE ● Os nomes(campos, variáveis, parametros, métodos e classes) refletem no que eles representam? ● É possível entender o que o código faz apenas lendo ele? ● É possível entender o que o teste faz? ● Os testes cobrem uma boa parte das classes? Ele cobre o caminho feliz e os casos excepcionais? Existem classes que não foram cobertas?
  • 10. FUNCIONALIDADE ● O código realmente faz o que ele deveria fazer? Existem testes automatizados para garantir se o código está correto, se os testes realmente testam o código de acordo com os requisitos? ● O código contém algum bug, como acidentalmente trocar um ''&&'' por ''||''?
  • 12. Pergunte para si mesmo essas perguntas: ● Existe testes para esse novo código? ● Os testes cobrem pelo menos as partes confusas ou complicadas do código? ● Eu consigo entender os testes? (Robot Pattern - @jakewharton) ● Os testes verificam os requisitos? ● Eu consigo pensar em partes não cobertas do código que deveriam ser testadas? ● Existem testes para aspectos de segurança? ● Existem testes de performance?
  • 14. BOAS PRÁTICAS DE PROGRAMAÇÃO SOLID DRY Padrões de Projeto Guidelines SRP - The single responsibility principle - A class should have one, and only one, reason to change. OCP - The Open Closed Principle - You should be able to extend a classes behavior, without modifying it. LSP - The Liskov Substitution Principle - Derived classes must be substitutable for their base classes. ISP - The Interface Segregation Principle - Make fine grained interfaces that are client specific. DIP- The Dependency Inversion Principle - Depend on abstractions, not on concretions.
  • 15. BOAS PRÁTICAS DE PROGRAMAÇÃO SOLID DRY Padrões de Projeto Guidelines DRY – “Don’t Repeat Yourself” – suggests that writing the same code over and over again is a bad thing.
  • 18. "Any fool can write code that a computer can understand. Good programmers write code that humans can understand. MARTIN FOWLER, REFACTORING - 1999
  • 20. CODE REVIEW WIKI Checklist Tenha um documento que contenha todas as práticas adotadas no seu projeto. É um documento vivo, que pode e deve ser alterado constantemente, acompanhando a evolução do projeto. Deve estar sempre disponível aos desenvolvedores e revisores. Wiki? Livro? Etc.
  • 21. CODE REVIEW WIKI Checklist Categorize cada ponto que foram citados anteriormente, e separe em uma checklist. Desta maneira facilitará tanto a vida do desenvolvedor na hora de criar um pull request quanto a vida do revisor ao verificar o que foi submetido.
  • 22.
  • 25. FERRAMENTAS Android Lint Checkstyle Findbugs SonarQube O Android Studio oferece uma ferramenta de verificação de código denominada lint para ajudar a identificar e corrigir problemas com a qualidade estrutural do código, sem executar o aplicativo nem criar casos de teste. Gera um relatório .html o qual mostra o erro, gravidade, explicação detalhada e como corrigir.
  • 26. FERRAMENTAS Android Lint Checkstyle Findbugs SonarQube Checkstyle é uma ferramenta de desenvolvimento para ajudar os programadores a escrever código Java que adira a um padrão de codificação. Ele automatiza o processo de verificação do código Java para poupar humanos dessa tarefa chata (mas importante). Isso o torna ideal para projetos que desejam impor um padrão de codificação. Pontos a serem validados: Magic Number, Nomenclatura (de métodos, variáveis, constantes), Identação, uso correto de chaves.
  • 27. FERRAMENTAS Android Lint Checkstyle Findbugs SonarQube FindBugs é um analisador de código estático de código aberto criado por Bill Pugh e David Hovemeyer, que detecta possíveis erros em programas Java. Os erros potenciais são classificados em quatro categorias: (i) mais assustador, (ii) assustador, (iii) preocupante e (iv) de preocupação. Esta é uma pista para o desenvolvedor sobre o seu possível impacto ou gravidade. FindBugs opera em bytecode Java, em vez de código fonte. Categorias de bugs avaliadas: Bad Practice, Malicious code vunerability, Multitheaded correctness, Performance, Security, Dodgy code.
  • 28. FERRAMENTAS Android Lint Checkstyle Findbugs SonarQube O SonarSource oferece o que provavelmente é o melhor analisador de código estático que você pode encontrar no mercado para Java. Com base no nosso próprio front-end do compilador Java, ele usa as técnicas mais avançadas (correspondência de padrões, análise de fluxo de dados) para analisar código e encontrar cheiros de código, bugs e vulnerabilidades de segurança. Quanto a qualquer produto que desenvolvamos no SonarSource, foi construído com os seguintes princípios: profundidade, precisão e velocidade.
  • 29.
  • 30.
  • 31.
  • 32. CODEBASEMerge Requests / Pull Requests Autor Conversa direta com o desenvolvedor WIKI e Checklist MR em avaliação 👎 ou 👍
  • 34. BIBLIOGRAFIA ● https://leanpub.com/whattolookforinacodereview ● http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod ● https://martinfowler.com/books/refactoring.html ● https://www.slideshare.net/ChristianeMoraisSilv ● http://wiki.c2.com/?GangOfFour ● https://source.android.com/source/code-style ● https://android.github.io/kotlin-guides/style.html ● https://developer.android.com/studio/write/lint.html ● http://checkstyle.sourceforge.net/index.html ● https://docs.gradle.org/current/userguide/checkstyle_plugin.html ● http://findbugs.sourceforge.net/ ● https://www.sonarqube.org/
  • 36. Centro Av. Presidente Wilson, 231 - 29º andar (21) 2240-2030 Cidade Monções Av. Nações Unidas, 11.541 - 3º andar (11) 4119-0449 Savassi Av. Getúlio Vargas, 671 Sala 800 - 8º andar (31) 3360-8900 www.concrete.com.b r