#Este é um post fechado Este post está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia. Clique aqui para saber mais sobre como abrir este post!
Artigo Java Magazine 19 - Na Medida Certa
Artigo publicado pela Java Magazine 19.
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
ATENÇÃO! A exibição deste artigo foi interrompida.
#Este é um post fechado Este post está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia. Clique aqui para saber mais sobre como abrir este post!

Space do autor

Estudo comparativo entre banco de dados IBM Informix e Microsoft SQL

0
0
Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!