SlideShare uma empresa Scribd logo
Qualidade de código

PEP8, Pylint, Pyflakes e CloneDigger
Amigos do desenvolvedor Python !
PEP8 – O que é
PEP - Python Enhancement Proposal São documentos que geralmente abordam alguma nova
funcionalidade da linguagem, propósitos, procedimentos ou ambiente. Em
suma, são “guidelines” que te orientam num melhor uso da linguagem e
suas funcionalidades, bem como podem ajudar em questões como
arquitetura, ambiente ou processos de sua aplicação.
(Escrita por Guido Van Rossum e Barry Warsaw)

●

pep8 - é uma ferramenta simples (e muito eficaz) que analisa o seu
código Python segundo as convenções de código descritas na PEP 8 (
http://www.python.org/dev/peps/pep-0008/)
Pylint – O que é
●

Pylint – lint's São ferramentas de checagem estática de códigos.
O Pylint é uma ferramenta de lint para o Python. O Pylint analisa de
forma minuciosa o código do seu projeto Python, lhe retornando uma
variedade de relatórios, sobre todo o tipo de problema que ele encontra,
indo de incoerências com a PEP 8, até nome de variáveis.
Pyflakes – O que é
●

Pyflakes – é um pylint mais resumido, que aponta direto o erro.
CloneDigger – O que é
●

CloneDigger – Ferramenta que detecta duplicação de código python.
Como instalar
●

●

●

●

PEP8:
PEP8
pip install pep8
Pylint:
Pylint
pip install pylint
Pyflakes:
Pyflakes
pip install pyflakes
CloneDigger:
CloneDigger
pip install clonedigger
PEP8 – Dicas de Utilização
$ pep8 models.py
models.py:42:65: W291 trailing whitespace
models.py:62:1: E302 expected 2 blank lines, found 1
models.py:105:80: E501 line too long (89 characters)

$ pep8 models.py --show-source --show-pep8
models.py:105:80: E501 line too long (89 characters)
return '/weblog/%s/%s/' % (self.pub_date.strftime('%Y/%m/%d').lower(), self.slug)
^
Limit all lines to a maximum of 79 characters.

Configuração:
As configurações são lidas no diretório ~/.config/pep8 . Exemplo de configuração:
[pep8]
ignore = E226,E302,E41
max-line-length = 160
Os erros E226, E302 e E41 serão ignorados.
autopep8
●

https://github.com/hhatto/autopep8
Ferramenta que “auto-aplica” correções no arquivo .py
Instalação:
pip install --upgrade autopep8 (requer pep8 instalado).
Uso:
autopep8 --in-place --aggressive <filename>
Ob: Vale a pena uma leitura na documentação na página
do projeto.
Pylint
pylint arquivo.py
C: 1: Missing docstring
Os tipos de mensagens:
[R]efactor for a "good practice" metric violation
[C]onvention for coding standard violation
[W]arning for stylistic problems, or minor programming issues
[E]rror for important programming issues (i.e. most probably bug)
[F]atal for errors which prevented further processing
Com alguma personalização:
$ pylint aquivo.py --reports=n --include-ids=y –disable=W0232
Primeiro, com o parâmetro –-reports=n dizemos que não queremos aquele relatório gigantesco no final da análise.
O –-include-ids=y exibe para gente os ids das mensagens de erros do Pylint. É útil, pois todas as mensagens que você julgar
desnecessárias para a análise você adiciona no parâmetro -–disable (separadas por vírgula).
Gerar arquivo pylintrc com suas configurações personalizadas:
$ pylint --reports=n --include-ids=y --disable=W0232 --generate-rcfile > ~/.pylintrc
Para utlizar o arquivo de configurações personalizadas ao executar o pylint:
pylint --rcfile=pylintrc.rc arquivo.py
Para entender as mensagens de erro do pylint:
pylint –help-msg=R0904
Pyflakes

pyflakes arquivo.py
arquivo.py:3: 'EmptyPage' imported but unused
arquivo.py:3: 'InvalidPage' imported but unused
PEP8 e Pyflakes juntos: flake8

$ pip install flake8
CloneDigger

clonedigger meuprojeto/
Ele irá gerar um arquivo output.html
E neste relatório ele mostrará os trechos de códigos repitidos por
arquivo e irá destacar em vermelho as linhas que não se repetem.
PEP8, Pylint e Pyflakes, comparação:
$ pep8 admin.py
admin.py:37:14: E124 closing bracket does not match visual indentation
$ pylint admin.py
No config file found, using default configuration
************* Module demo_passo_a_passo.admin
C: 15,0: Invalid name "site" for type constant (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
C: 18,0:BookmarkAdmin: Missing docstring
R: 21,4:BookmarkAdmin.FormWizard: Too many ancestors (9/7)
C: 21,4:BookmarkAdmin.FormWizard: Missing docstring
E: 23,19:BookmarkAdmin.FormWizard.done: Undefined variable 'HttpResponse'
R: 21,4:BookmarkAdmin.FormWizard: Too many public methods (31/20)
R: 18,0:BookmarkAdmin: Too many public methods (60/20)
W: 5,0: Unused import admin
W: 6,0: Unused import BookmarksWizard
$ pyflakes admin.py
admin.py:5: 'admin' imported but unused
admin.py:6: 'BookmarksWizard' imported but unused
admin.py:23: undefined name 'HttpResponse'
E uma IDE ?

http://ninja-ide.org (do acrônimo recursivo: "Ninja-IDE Is Not Just Another IDE"), é
uma IDE multi-plataforma de desenvolvimento integrado. NINJA-IDE é executado
em Linux/X11, Mac OS X e sistemas operacionais de desktop Windows, e permite
aos desenvolvedores criarem aplicações para diversas finalidades, utilizando todas
as ferramentas e utilitários de NINJA-IDE, tornando a tarefa de escrever software
mais fácil e agradável.

Mais conteúdo relacionado

PDF
PDF
Testes unitários como ferramentas de design de código
PDF
Testes unitários como ferramentas de design de código
PDF
Testes automáticos
PPT
Aop Aspect J 1.5.4 Capitulo 02
PDF
TDD - Workshop Pyladies SP
PDF
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
PDF
TDD em django sem desculpas versao fisl
Testes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de código
Testes automáticos
Aop Aspect J 1.5.4 Capitulo 02
TDD - Workshop Pyladies SP
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
TDD em django sem desculpas versao fisl

Mais procurados (18)

ODP
Mini aula de teste de software
PDF
Trabalho sobre a linguagem Python
PPTX
O compilador dev c++
ODP
PHPUnit e teste de software
PDF
Sprint cPython at Globo.com
ODP
Desenvolvendo aplicações web com python e web2py
PDF
Introdução à Linguagem de Programação GO
PDF
Tdd em django sem desculpas versao final
PDF
Introdução a Programação Orientada a testes
ODP
Especificação e Verificação de Programas
PPTX
Unit Testing
PDF
Mutant Testing: um mundo para um X-Testing.
PDF
Tutorial dev cpp 001 - criação, leitura e alteração de arquivos
PDF
Linguagem c wellington telles - aula 02
PDF
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
PDF
Tutorial Django + Python
PDF
Paradigmas de Linguagens de Programação - Escopo estático/dinâmico
PPT
Testes de Sofware
Mini aula de teste de software
Trabalho sobre a linguagem Python
O compilador dev c++
PHPUnit e teste de software
Sprint cPython at Globo.com
Desenvolvendo aplicações web com python e web2py
Introdução à Linguagem de Programação GO
Tdd em django sem desculpas versao final
Introdução a Programação Orientada a testes
Especificação e Verificação de Programas
Unit Testing
Mutant Testing: um mundo para um X-Testing.
Tutorial dev cpp 001 - criação, leitura e alteração de arquivos
Linguagem c wellington telles - aula 02
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
Tutorial Django + Python
Paradigmas de Linguagens de Programação - Escopo estático/dinâmico
Testes de Sofware
Anúncio

Destaque (6)

ODP
Slide PyQt versus Pyside
PDF
Pylint : 10 ans, état des lieux
PDF
Aprendendo Git
PDF
Static Code Analysis
PDF
Python Tricks That You Can't Live Without
PDF
Python - code quality and production monitoring
Slide PyQt versus Pyside
Pylint : 10 ans, état des lieux
Aprendendo Git
Static Code Analysis
Python Tricks That You Can't Live Without
Python - code quality and production monitoring
Anúncio

Semelhante a Pep8 pylint (6)

PDF
Análise estática de código Python
PDF
PDF
Python - Programando em alto nível
PPTX
Palestra Apresentando Python e Suas Aplicações
DOCX
Python, CPython, Pythonico, Cython
KEY
Introdução ao Python & Web Services
Análise estática de código Python
Python - Programando em alto nível
Palestra Apresentando Python e Suas Aplicações
Python, CPython, Pythonico, Cython
Introdução ao Python & Web Services

Último (11)

PPTX
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
PPTX
Utilizando code blockes por andre backes
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Manejo integrado de pragas na cultura do algodão
PPTX
Design - Introdução a Gestalt e teoria das formas
PPTX
Tipos de servidor em redes de computador.pptx
PPTX
Eng. Software - pontos essenciais para o início
PDF
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
PPTX
Arquitetura de computadores - Memórias Secundárias
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
Utilizando code blockes por andre backes
Viasol Energia Solar -Soluções para geração e economia de energia
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Manejo integrado de pragas na cultura do algodão
Design - Introdução a Gestalt e teoria das formas
Tipos de servidor em redes de computador.pptx
Eng. Software - pontos essenciais para o início
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
Arquitetura de computadores - Memórias Secundárias
Termos utilizados na designação de relação entre pessoa e uma obra.pdf

Pep8 pylint

  • 1. Qualidade de código PEP8, Pylint, Pyflakes e CloneDigger Amigos do desenvolvedor Python !
  • 2. PEP8 – O que é PEP - Python Enhancement Proposal São documentos que geralmente abordam alguma nova funcionalidade da linguagem, propósitos, procedimentos ou ambiente. Em suma, são “guidelines” que te orientam num melhor uso da linguagem e suas funcionalidades, bem como podem ajudar em questões como arquitetura, ambiente ou processos de sua aplicação. (Escrita por Guido Van Rossum e Barry Warsaw) ● pep8 - é uma ferramenta simples (e muito eficaz) que analisa o seu código Python segundo as convenções de código descritas na PEP 8 ( http://www.python.org/dev/peps/pep-0008/)
  • 3. Pylint – O que é ● Pylint – lint's São ferramentas de checagem estática de códigos. O Pylint é uma ferramenta de lint para o Python. O Pylint analisa de forma minuciosa o código do seu projeto Python, lhe retornando uma variedade de relatórios, sobre todo o tipo de problema que ele encontra, indo de incoerências com a PEP 8, até nome de variáveis.
  • 4. Pyflakes – O que é ● Pyflakes – é um pylint mais resumido, que aponta direto o erro.
  • 5. CloneDigger – O que é ● CloneDigger – Ferramenta que detecta duplicação de código python.
  • 6. Como instalar ● ● ● ● PEP8: PEP8 pip install pep8 Pylint: Pylint pip install pylint Pyflakes: Pyflakes pip install pyflakes CloneDigger: CloneDigger pip install clonedigger
  • 7. PEP8 – Dicas de Utilização $ pep8 models.py models.py:42:65: W291 trailing whitespace models.py:62:1: E302 expected 2 blank lines, found 1 models.py:105:80: E501 line too long (89 characters) $ pep8 models.py --show-source --show-pep8 models.py:105:80: E501 line too long (89 characters) return '/weblog/%s/%s/' % (self.pub_date.strftime('%Y/%m/%d').lower(), self.slug) ^ Limit all lines to a maximum of 79 characters. Configuração: As configurações são lidas no diretório ~/.config/pep8 . Exemplo de configuração: [pep8] ignore = E226,E302,E41 max-line-length = 160 Os erros E226, E302 e E41 serão ignorados.
  • 8. autopep8 ● https://github.com/hhatto/autopep8 Ferramenta que “auto-aplica” correções no arquivo .py Instalação: pip install --upgrade autopep8 (requer pep8 instalado). Uso: autopep8 --in-place --aggressive <filename> Ob: Vale a pena uma leitura na documentação na página do projeto.
  • 9. Pylint pylint arquivo.py C: 1: Missing docstring Os tipos de mensagens: [R]efactor for a "good practice" metric violation [C]onvention for coding standard violation [W]arning for stylistic problems, or minor programming issues [E]rror for important programming issues (i.e. most probably bug) [F]atal for errors which prevented further processing Com alguma personalização: $ pylint aquivo.py --reports=n --include-ids=y –disable=W0232 Primeiro, com o parâmetro –-reports=n dizemos que não queremos aquele relatório gigantesco no final da análise. O –-include-ids=y exibe para gente os ids das mensagens de erros do Pylint. É útil, pois todas as mensagens que você julgar desnecessárias para a análise você adiciona no parâmetro -–disable (separadas por vírgula). Gerar arquivo pylintrc com suas configurações personalizadas: $ pylint --reports=n --include-ids=y --disable=W0232 --generate-rcfile > ~/.pylintrc Para utlizar o arquivo de configurações personalizadas ao executar o pylint: pylint --rcfile=pylintrc.rc arquivo.py Para entender as mensagens de erro do pylint: pylint –help-msg=R0904
  • 10. Pyflakes pyflakes arquivo.py arquivo.py:3: 'EmptyPage' imported but unused arquivo.py:3: 'InvalidPage' imported but unused
  • 11. PEP8 e Pyflakes juntos: flake8 $ pip install flake8
  • 12. CloneDigger clonedigger meuprojeto/ Ele irá gerar um arquivo output.html E neste relatório ele mostrará os trechos de códigos repitidos por arquivo e irá destacar em vermelho as linhas que não se repetem.
  • 13. PEP8, Pylint e Pyflakes, comparação: $ pep8 admin.py admin.py:37:14: E124 closing bracket does not match visual indentation $ pylint admin.py No config file found, using default configuration ************* Module demo_passo_a_passo.admin C: 15,0: Invalid name "site" for type constant (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$) C: 18,0:BookmarkAdmin: Missing docstring R: 21,4:BookmarkAdmin.FormWizard: Too many ancestors (9/7) C: 21,4:BookmarkAdmin.FormWizard: Missing docstring E: 23,19:BookmarkAdmin.FormWizard.done: Undefined variable 'HttpResponse' R: 21,4:BookmarkAdmin.FormWizard: Too many public methods (31/20) R: 18,0:BookmarkAdmin: Too many public methods (60/20) W: 5,0: Unused import admin W: 6,0: Unused import BookmarksWizard $ pyflakes admin.py admin.py:5: 'admin' imported but unused admin.py:6: 'BookmarksWizard' imported but unused admin.py:23: undefined name 'HttpResponse'
  • 14. E uma IDE ? http://ninja-ide.org (do acrônimo recursivo: "Ninja-IDE Is Not Just Another IDE"), é uma IDE multi-plataforma de desenvolvimento integrado. NINJA-IDE é executado em Linux/X11, Mac OS X e sistemas operacionais de desktop Windows, e permite aos desenvolvedores criarem aplicações para diversas finalidades, utilizando todas as ferramentas e utilitários de NINJA-IDE, tornando a tarefa de escrever software mais fácil e agradável.