Assegure a qualidade do seu código Python – Clone Digger

AGRADEÇA AO AUTOR COMPARTILHE!

Mesmo que você possa verificar a qualidade do seu código com pep8, Pylint e Pyflakes, uma das virtudes de um projeto de software é não possuir código duplicado (leia mais sobre DRY). O fato é que tanto intencionalmente como propositalmente, podemos duplicar um trecho de código e acabar prejudicando manutenções futuras (atire a primeira pedra quem nunca deu aquele CTRL+C e CTRL+V, e prometeu um refactoring depois).

Para facilitar a busca por código duplicado, podemos utilizar uma ferramenta chamada Clone Digger. Prático, rápido e muito simples. Agora ficou fácil “caçar” código duplicado em projetos Python.

Na prática

Por tratar-se de uma ferramenta bem objetiva, não há muito o que falar sobre o Clone Digger. Então, vamos direto para a parte prática.

Para iniciar a análise, basta chamar o executável apontando para o diretório do seu projeto:

Será gerado um arquivo chamado output.html, com um relatório detalhado (como este). Serão apresentadas informações como a quantidade de arquivos analisados, quantidade de “clones”, de linhas duplicadas e um apontamento com os trechos de código que a ferramenta concluiu como “clones” (não necessariamente iguais, mas semelhantes).

Particularmente, a ferramenta me ajuda bastante a determinar se certos trechos de código não poderiam ser herdados por uma classe pai, ou algumas rotinas costumeiras não poderiam ser encapsuladas em funções.

Referências

Até a próxima…

Fonte: Klaus Laube

AGRADEÇA AO AUTOR COMPARTILHE!

Klaus Peter Laube

Mais artigos deste autor »

Tecnólogo em Análise e Desenvolvimento de Sistemas pelo Centro Universitário de Jaraguá do Sul (UNERJ). Desenvolvedor Web de longa data, apaixonado por Python e defensor dos padrões Web. Escreve quando pode no http://www.klauslaube.com.br.


Deixe seu comentário

Seu endereço de e-mail não será publicado. Campos com * são obrigatórios!

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">