Ferramentas de análise estática Java no Eclipse e no IntelliJ IDEA

Ferramentas de análise estática Java no Eclipse e no IntelliJ IDEA

1. Visão geral

Em nossointroduction to FindBugs, vimos a funcionalidade do FindBugs como uma ferramenta de análise estática e como ele pode ser integrado diretamente em IDEs como Eclipse e IntelliJ Idea.

Neste artigo, vamos dar uma olhada em algumas das ferramentas alternativas de análise estática para Java - e como elas se integram com Eclipse e IntelliJ IDEA.

2. PMD

Vamos começar com PMD.

Essa ferramenta madura e bem estabelecida analisa o código-fonte em busca de possíveis erros, códigos abaixo do ideal e outras práticas inadequadas; ele também analisa métricas mais avançadas, como complexidade ciclomática, para a base de código que analisa.

2.1. Integração com Eclipse

O plug-in PMD pode ser instalado diretamente no Eclipse Marketplace. O plugin também pode ser baixado manualmentehere. Uma vez instalado, podemos executar a verificação PMD diretamente do próprio IDE:

image

É importante notar que podemos executar o PMD no nível do projeto ou no nível da classe individual.

Os resultados são mostrados abaixo - com cores diferentes para diferentes níveis da descoberta, que variam de "aviso" a "bloqueador" na ordem crescente de gravidade:

image

Podemos cavar os detalhes de cada entrada clicando com o botão direito do mouse e selecionando "mostrar detalhes" no menu de contexto. O Eclipse exibirá uma breve descrição do problema e possíveis soluções para resolvê-lo:

image image

Também é possível alterar a configuração da digitalização PMD - podemos fazer isso no menu, em Janela → Preferências → PMD para abrir a página de configuração. Aqui, podemos configurar parâmetros de varredura, conjunto de regras, configurações de exibição de resultados etc.

Se precisarmos desativar algumas regras específicas para o projeto - podemos simplesmente removê-las da verificação:

image

2.2. Integração com IntelliJ

Obviamente, o IntelliJ tem um plugin PMD semelhante - que pode ser baixado e instalado a partir doJetBrains plugin store.

Da mesma forma, podemos executar o plug-in diretamente no IDE - clicando com o botão direito do mouse na fonte que precisamos verificar e selecionando a verificação PMD no menu de contexto:

image

Os resultados são exibidos imediatamente, mas, ao contrário do Eclipse, se tentarmos abrir a descrição, ele abrirá um navegador com uma página da web pública para encontrar informações:

image

Podemos definir o comportamento do plugin PMD na página de configurações, indo para Arquivo → Configurações → outras configurações → PMD para ver a página de configuração. Na página de configurações, podemos configurar o conjunto de regras carregando um conjunto de regras personalizado com nossas próprias regras de teste.

3. JaCoCo

Seguindo em frente - JaCoCo é uma ferramenta de cobertura de teste - usada para acompanhar a cobertura de teste de unidade na base de código. Simplificando, a ferramenta calcula a cobertura usando várias estratégias, por exemplo: linhas, classe, métodos, etc.

3.1. Integração com Eclipse

JaCoCo pode ser instalado diretamentefrom the marketplace. Um link de instalação também está hospedado no site oficial disponívelhere.

image

A ferramenta pode ser executada do nível do projeto ao nível do método individual. O plug-in Eclipse usa esquemas de cores diferentes para identificar qual parte do código é coberta pelos casos de teste e o que não é coberto:

image

Nosso método está dividindo dois parâmetros inteiros fornecidos e retorna o resultado. Se o segundo parâmetro for zero, ele retornará um valor máximo para o tipo de dados inteiro.

Em nosso caso de teste, estamos apenas testando o cenário em que o segundo parâmetro é zero:

image

Nesse caso, podemos ver que a linha 6 é colorida em amarelo. Apenas um ramo da condição ‘se 'é testado e é executado em nosso teste simples. Portanto, não foi completamente testado e marcado em amarelo.

Além disso, a linha 7 tem cor verde - significa que foi totalmente testada. Finalmente, a linha 9 é destacada com uma cor vermelha, o que significa que essa linha não é testada pelos nossos testes de unidade.

We can see a summary of the test coverage onde exibe quanto código é coberto em testes de unidade em nível de classe e níveis de pacote:

image

3.2. Integração com IntelliJ IDEA

JaCoCo é fornecido por padrão com a distribuição IntelliJ IDEA mais recente, portanto, não há necessidade de instalar o plug-in separadamente.

Ao executar testes de unidade, podemos selecionar qual corredor de cobertura precisamos usar. Podemos executar os casos de teste no nível do projeto ou na classe:

image

Semelhante ao Eclipse, o JaCoCo exibe resultados usando diferentes esquemas de cores para a cobertura.

image

Podemos ver o resumo da cobertura do teste, onde ele mostra quanto do código é coberto nos testes de unidade nos níveis de classe e pacote.

image

4. Cobertura

Finalmente, vale a pena mencionar o Cobertura - ele é usado de forma semelhante para acompanhar a cobertura do teste de unidade na base de código.

A versão mais recente do Eclipse não oferece suporte ao plug-in Cobertura no momento da escrita; o plug-in funciona com versões anteriores do Eclipse.

Da mesma forma, o IntelliJ IDEA não possui um plugin oficial que possa executar a cobertura Cobertura.

5. Conclusão

Examinamos a integração com o Eclipse e o IntelliJ IDEA para três ferramentas de análise estática amplamente usadas. FindBug foi abordado emintroduction to FindBugs anterior.

O código-fonte deste tutorial pode ser encontrado emthe GitHub project - este é um projeto baseado em Maven, portanto, deve ser fácil de importar e executar como está.