Complexidade Ciclomática em Java

Há alguns dias o Ronaldo postou sobre conceitos de complexidade ciclomática (ótima leitura) e como analisar a complexidade ciclomática do seu código Ruby com o Saikuro e com o Flog. Este é um assunto que, dado o nome pomposo pode passar uma certa impressão de ser acadêmico de mais para o seu dia-a-dia de desenvolvedor, mas é aí que você se engana. Complexidade ciclomática é uma métrica importantíssima e muito valiosa para quem trabalha com testes, principalmente TDD/BDD e que deve sim ser levada em consideração, mas isso você pode entender lendo os posts do Ronaldo, onde está bem explicado.

E em Java existe uma excelente ferramenta para encontrar a complexidade ciclomática do seu código e de quebra ainda analisar e gerar métricas de tamanho e nível de documentação do código, esta ferramenta é o JavaNCSS, gratuita e distribuída sob a licença GPL. Com estas métricas, o trabalho de analisar e mensurar o custo de manutenção de um software, por exemplo, torna-se muito mais previsível e compreensível, pelo menos mais do que quando ele é baseado em previsões, futurologia e feeling.

O JavaNCSS pode ser usado quando você quiser, basta executar a versão com interface gráfica (junto com o jacob) e pronto! Métricas geradas sob demanda. Mas ele também pode ser usado com o Ant, existe uma task distribuída já no seu próprio pacote que permite que a geração das métricas seja incluída no build.xml e permite que o output seja um relatório em XML ou HTML, como o freguês preferir. Automatizar a geração de métricas, quer melhor isso? Melhor do que isso só se ficar no servidor de integração contínua.

Uns pares de JAR aqui, meia dúzia de linhas ali no seu build.xml e pronto, métricas importantes sendo geradas de forma automatizada para a sua aplicação, vale o esforço a brincadeira.

3 respostas para “Complexidade Ciclomática em Java”

Deixe uma resposta

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

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.