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:
É 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:
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:
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:
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:
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:
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.
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:
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:
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:
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:
Semelhante ao Eclipse, o JaCoCo exibe resultados usando diferentes esquemas de cores para a cobertura.
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.
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á.