Sexta-feira, Dezembro 29, 2006

PMD in Action

Em NetBeans, Matisse e Web Services talvez você tenha percebido estranhas linhas amarelas no código-fonte do método searchIP.

Tratá-se do PMD em ação. PMD é mais uma das ferramentas utilizadas para ajudar programadores a tornarem o código-fonte de seus softwares mais seguros, eficientes e livre de erros.

Outras ferramentas utilizadas para o mesmo fim são FindBugs e Jackpot.

Instalação

Embora seja possível utilizar o PMD stand-alone, é mais interessante fazê-lo como plugin de sua IDE favorita. Para tê-lo como plugin no NetBeans, configure-o para poder baixar plugins diretamente do site nbextras.org. As instruções estão aqui.

Na wizard Update Center, procure pelo PMD em NBExtras Update Center e instale o módulo.

Também é possível instalar a partir de um arquivo .nbm contendo apenas o módulo PMD. Se optar por instalar dessa forma, veja como aqui.

Configuração

Configure o PMD em Tools -> Options -> Basic Options -> Miscellaneous -> PMD. (Veja figura 1.)


Se quiser analisar o código ao mesmo tempo em que programa (foi o que eu fiz em NetBeans, Matisse e Web Services), clique na caixa Enable scan.

Há uma série de regras (rules) que o PMD usa para decidir o que deve relatar como advertência e quais sugestões apontar. Não é um bom negócio deixar todas as regras ativas - linhas amarelas apareceriam por todo o código-fonte, sendo algumas de importância mínima ou relativa, desviando o foco do que realmente tem impacto na qualidade do software.

Por exemplo, no conjunto de regras controversas há regras polêmicas, onde não existe consenso entre programadores, como OnlyOneReturnPoint - a regra Highlander, pois só pode haver um (ponto de retorno num método). Talvez você não concorde com essa regra e queira usar múltiplos pontos de retorno dentro de um método.

Clique em Manage rules... para configurar o conjunto de regras que o PMD levará em considereção enquanto escaneia o código-fonte de seu programa.


Run PMD

Outra forma de escanear o código-fonte, é clicar com o botão direito do mouse no projeto, package ou arquivo na janela Project, e selecionar Tools -> Run PMD. Na janela Output, aparecerá a aba PMD Output com o relatório gerado pelo PMD. Cada linha é um link para o ponto onde há uma advertência - linha amarela.


Rules - Sugestões

As regras CloseResource, CompareObjectsWithEquals, ConstructorCallsOverridableMethod, FinalFieldCouldBeStatic e UnusedImports são fortemente recomendáveis.

ImmutableField, LocalVariableCouldBeFinal, MethodArgumentCouldBeFinal marcam presença. Ajudam a distinguir campos (fields) de variáveis (variables) tornando o código mais legível para quem o lê e também mais seguro, pois fica garantido que um campo não tenha seu valor alterado.

Essa garantia, no entanto, é parcial. Objetos qualificados com final têm apenas as referências que lhe são atribuídas como final (constantes), e não o seu valor.

2 comentários:

Elias disse...

Legal teu "mini tutorial" do PMD no Netbeans...
Eu utilizo ele há um bocado de tempo, baseio minhas regras de lógica muito nele.
Parabens!

Rafael Fiume disse...

Obrigado pelo comentário, Elias. Feedback é sempre bem-vindo.

O PMD tem me ajudado a desenvolver softwares com mais qualidade, por isso escrevi esse tutorial.