PMD, FindBugs e CheckStyle

As ferramentas PMD, FindBugs e CheckStyle vêm sendo largamente utilizadas por programadores em ambientes de codificação automatizados como suporte ao controle de código-fonte. Elas analisam estaticamente o código para prover informações a respeito de pontos de risco e pontos de melhoria que ele possua.

A prática de inspeção/auditoria/revisão de código-fonte auxilia na: 1) organização; 2) clareza; 3) facilidade de reuso e manutenção; 4)  consistência, entre outros aspectos, do software em desenvolvimento. Ambas as técnicas, PMD, FindBugs e CheckStyle podem ser combinadas para obter maior cobertura do código na inspeção. No entanto, é importante saber diferenciar a função de cada uma delas para julgar qual(is) dela(s) seja(m) a(s) mais adequada(s) ao escopo do projeto. São atividades desempenhadas por elas:

  • PMD = Analisa o código-fonte à procura de problemas potenciais (bugs e warnings), código não utilizado, código de baixa qualidade, expressões complicadas ou ilegíveis e duplicidade de código. Exemplos:
    1. variáveis e importações não utilizadas;
    2. expressões muito longas;
    3. uso do método equals() ao invés do sinal ‘==’;
    4. laços e declarações desnecessários.
  • FindBugs = Possui função similar ao PMD, no entanto, ele trabalha sobre bytecode, ao invés do código-fonte. Exemplos:
    1. uso inadequado dos métodos .equals() e .hashCode();
    2. casts inseguros/impróprios;
    3. nulidade de variáveis;
    4. possíveis estouros de memória;
    5. possíveis exceções ignoradas.
  • CheckStyle = Analisa o estilo e convenções do código-fonte. Não analisa erros e possibilidade de erros no código, como o PMD e FindBugs, mas verifica a conformidade dele em relação aos padrões estabelecidos (documentação, comentários, sintaxe). Exemplos:
    1.  JavaDoc ausente/impróprio;
    2. espaços em branco;
    3. ausência de chaves e parênteses nas variáveis e condições;
    4. extensão da expressão;
    5. outras convenções a respeito de nomenclatura. 

Tutorial a respeito do plug-in CheckStyle para a IDE Eclipse: http://www.vogella.com/tutorials/Checkstyle/article.html

Referências:
https://www.sparkred.com/blog/open-source-java-static-code-analyzers/

http://tirthalpatel.blogspot.com.br/2014/01/static-code-analyzers-checkstyle-pmd-findbugs.html

http://www.sw-engineering-candies.com/blog-1/comparison-of-findbugs-pmd-and-checkstyle