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:
$ clonedigger meuprojeto/
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
- Clone Digger: Discovers duplicate code in Python and Java
- Andrews Medina: Análise de código em Python
Até a próxima…
Fonte: Klaus Laube