Assegure a qualidade do seu código Python - pep8

Código-fonte Python Convenções de código! Já tive a oportunidade de escrever sobre elas no Profissionais TI. Benção ou maldição? Há quem goste, há quem ache uma perda de tempo…

Acredito muito que a organização e a qualidade do código são benéficas para qualquer projeto, principalmente para aqueles que possuem alta rotatividade de profissionais. Padrões de projetos, padrões estruturais e de escrita facilitam a “assimilação” do que já foi produzido, facilita a manutenção e “orienta” as novas produções.

Se você tem problemas em decorar convenções e boas práticas, não desanime! O Python possui algumas ferramentas “bacanudas” que vão te auxiliar a deixar o software mais próximo do “estado da arte”, seja garantindo as convenções de código, seja avaliando a qualidade do mesmo.

Python Enhancement Proposals

As “PEPs“ (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.

Para saber mais sobre PEPs, acesse a PEP 1 que é justamente um documento explicando o que são e o que fazem as Python Enhancement Proposals.

pep8

O 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.

Vamos analisar o código do Django Brasil (você não sabia? O site é open source!), mais especificamente o arquivo models.py da app blog:

$ pep8 src/djangobrasil/apps/blog/models.py

src/djangobrasil/apps/blog/models.py:42:65: W291 trailing whitespace
src/djangobrasil/apps/blog/models.py:62:1: E302 expected 2 blank lines, found 1
src/djangobrasil/apps/blog/models.py:105:80: E501 line too long (89 characters)

Como podemos ver, a ferramenta nos mostra a linha e coluna onde o problema foi encontrado, apresentando uma breve descrição da incoerência que estamos cometendo em relação às recomendações da PEP 8.

Para obter uma resposta mais “verbose“, podemos passar alguns parâmetros para o pep8:

$ pep8 src/djangobrasil/apps/blog/models.py --show-source --show-pep8

Viu só?! Dessa forma podemos aprender sobre a PEP 8 enquanto “ferimos” as convenções de código em nossos projetos :D

Para finalizar, podemos contar as ocorrências de problemas com a PEP 8 em determinada região do projeto:

$ pep8 src/djangobrasil/apps/blog/ --statistics -qq --filename=*.py

1       E225 missing whitespace around operator
7       E302 expected 2 blank lines, found 1
1       E303 too many blank lines (2)
11      E501 line too long (89 characters)
4       W291 trailing whitespace
2       W391 blank line at end of file

Nenhum problema muito grave de convenções de código na app blog do DjangoBrasil ;)

Confira: pep8 – Python style guide checker.

Referências

Nos próximos posts, vamos dar uma pincelada no pylint, pyflakes e clone digger.

Até a próxima…