Esse artigo faz parte da revista Java Magazine edição 19. Clique aqui para ler todos os artigos desta edição

jm19_capa.gif 

Clique aqui para ler esse artigo em PDF.imagem_pdf.jpg

Na Medida Certa

Métricas de Qualidade com JavaNCSS e JDepend

Descubra se seu código segue a arquitetura proposta e identifique possíveis problemas automaticamente

“Não é possível melhorar o que não se controla, e não é possível controlar o que não se mede”. Essa é uma das máximas da qualidade de software e a principal idéia por trás da coleta de métricas. As métricas (um termo mais técnico para "medidas") são uma forma de medir a qualidade e ajudam a obter informações como a taxa de crescimento do sistema, o local do código de maior complexidade e problemas que prejudicam a manutenção (ex.: alto acoplamento).

A qualidade do código de uma aplicação tende naturalmente a diminuir com o passar do tempo. No começo do projeto geralmente existe uma arquitetura a ser seguida e boas práticas de programação estabelecidas. Mas à medida que o projeto evolui, vêm as mudanças nos requisitos, a urgência dos prazos – e as famosas “gambiarras”.

A boa notícia é que coletar métricas pode ser tão fácil quanto clicar num botão. Essa coleta pode ser automatizada através de ferramentas como JavaNCSS e JDepend, que podem ser integradas por meio de um script do Ant, permitindo até que a obtenção de métricas faça parte do build principal da aplicação.

JavaNCSS

O JavaNCSS é uma ferramenta livre que pode ser usada para levantar métricas de tamanho, de complexidade e de nível de documentação do código, que dão uma idéia do custo de manutenção da aplicação (veja o quadro "Métricas do JavaNCSS"). A ferramenta pode ser executada de forma integrada a um script do Ant. O resultado gerado é um site HTML bem organizado, apresentando as métricas com quebras por pacotes, classes e métodos, além de um resumo geral para o projeto.

Como exemplo, vamos colher métricas do framework de persistência relacional Hibernate 2.1. A coleta de métricas do JavaNCSS é feita sobre o código fonte da aplicação. O script para obtenção de métricas tanto do JavaNCSS quanto do JDepend (que apresentaremos adiante) pode ser visto na Listagem 1.

Para executar o JavaNCSS de forma integrada ao Ant, deve ser usada a tarefa javancss. Como esta não é uma tarefa padrão do Ant é necessário defini-la no script (veja a marcação ? na Listagem 1). O próximo passo é usar a tarefa javancss para colher as métricas sobre o código fonte (marcação ). Esta tarefa pode receber os seguintes parâmetros:

§         srcdir – diretório onde estão os arquivos-fonte

§         generateReport – determina se o resultado das métricas deve ser escrito num arquivo

§         outputfile – caminho e nome do arquivo de saída, com o resultado das métricas

§         format – formato do arquivo de saída, como XML ou texto simples

 

Sendo o formato de saída especificado como XML, precisamos usar a tarefa style para fazer uma transformação em HTML, usando XSL (veja a marcação ?). A Figura 1 mostra uma parte do site resultante, contendo o resumo das métricas para o código completo do Hibernate.

JDepend

O JDepend permite coletar métricas que validam o uso adequado de alguns princípios básicos da orientação a objetos. Para executar essa ferramenta de forma automática com o Ant, é usada a tarefa jdepend (marcação ). Como essa tarefa já faz parte da distribuição do Ant, não é necessário declará-la usando taskdef.

Estes são os parâmetros da tarefa jdepend:

§         classespath – especifica o conjunto de diretórios onde está localizado o código compilado (note que, ao contrário do JavaNCSS, que analisa o código fonte, o JDepend colhe as métricas a partir do bytecode)

§         outputfile – nome do arquivo de saída, com o resultado das métricas

§         format – formato do arquivo de saída (também pode ser XML ou texto)

...

Quer ler esse conteúdo completo? Tenha acesso completo