Outils d’analyse statique Java dans Eclipse et IntelliJ IDEA

Outils d'analyse statique Java dans Eclipse et IntelliJ IDEA

1. Vue d'ensemble

Dans nosintroduction to FindBugs, nous avons examiné la fonctionnalité de FindBugs en tant qu'outil d'analyse statique et comment il peut être directement intégré dans des IDE comme Eclipse et IntelliJ Idea.

Dans cet article, nous allons examiner quelques-uns des outils d'analyse statique alternatifs pour Java - et comment ceux-ci s'intègrent à Eclipse et IntelliJ IDEA.

2. PMD

Commençons par PMD.

Cet outil mature et bien établi analyse le code source à la recherche de bogues, de codes non optimaux et d’autres mauvaises pratiques; il se penche également sur des mesures plus avancées, telles que la complexité cyclomatique, pour la base de code analysée.

2.1. Intégration avec Eclipse

Le plugin PMD peut être directement installé à partir du marché Eclipse. Le plugin peut également être téléchargé manuellementhere. Une fois installé, nous pouvons exécuter le contrôle PMD directement à partir de l'EDI lui-même:

image

Il convient de noter que nous pouvons exécuter PMD au niveau du projet ou au niveau de chaque classe.

Les résultats sont présentés ci-dessous - avec des couleurs différentes pour différents niveaux de résultats, allant de «warning» à «bloqueur» dans l'ordre croissant de gravité:

image

Nous pouvons approfondir les détails de chaque entrée en cliquant dessus avec le bouton droit de la souris et en sélectionnant «Afficher les détails» dans le menu contextuel. Eclipse affichera une brève description du problème et des solutions possibles pour le résoudre:

image image

Il est également possible de modifier la configuration du scan PMD - nous pouvons le faire dans le menu, sous Fenêtre → Préférences → PMD pour lancer la page de configuration. Ici, nous pouvons configurer les paramètres d'analyse, le jeu de règles, les paramètres d'affichage des résultats, etc.

Si nous devons désactiver certaines règles spécifiques pour le projet, nous pouvons simplement les supprimer de l'analyse:

image

2.2. Intégration avec IntelliJ

Bien sûr, IntelliJ a un plugin PMD similaire - qui peut être téléchargé et installé à partir desJetBrains plugin store.

Nous pouvons également exécuter le plug-in directement dans l'EDI - en cliquant avec le bouton droit de la souris sur la source à analyser et en sélectionnant Analyse PMD dans le menu contextuel:

image

Les résultats sont affichés immédiatement mais, contrairement à Eclipse, si nous essayons d'ouvrir la description, un navigateur contenant une page Web publique sur la recherche d'informations s'ouvrira.

image

Nous pouvons définir le comportement du plugin PMD à partir de la page des paramètres, en allant dans Fichier → Paramètres → autres paramètres → PMD pour afficher la page de configuration. À partir de la page des paramètres, nous pouvons configurer le jeu de règles en chargeant un jeu de règles personnalisé avec nos propres règles de test.

3. JaCoCo

Moving on - JaCoCo est un outil de couverture de tests - utilisé pour suivre la couverture de tests unitaires dans la base de code. En termes simples, l’outil calcule la couverture en utilisant un certain nombre de stratégies, par exemple: lignes, classe, méthodes, etc.

3.1. Intégration avec Eclipse

JaCoCo peut être directement installéfrom the marketplace. Un lien d'installation est également hébergé sur le site officiel disponiblehere.

image

L'outil peut être exécuté du niveau projet au niveau méthode individuel. Le plugin Eclipse utilise différents schémas de couleurs pour déterminer quelle partie du code est couverte par les scénarios de test et ce qui n’est pas couvert:

image

Notre méthode divise deux paramètres entiers fournis et renvoie le résultat. Si le deuxième paramètre est zéro, il renverra une valeur maximale pour le type de données entier.

Dans notre scénario de test, nous testons uniquement le scénario où le deuxième paramètre est zéro:

image

Dans ce cas, nous pouvons voir que la ligne 6 est colorée en jaune. Une seule branche de la condition ‘if’ est testée et est exécutée dans notre test simple. Par conséquent, il n’est pas complètement testé et marqué en jaune.

De plus, la ligne 7 a une couleur verte - cela signifie qu'elle a été entièrement testée. Enfin, la ligne 9 est mise en évidence en rouge, ce qui signifie que cette ligne n’est pas testée du tout par nos tests unitaires.

We can see a summary of the test coverage où il affiche la quantité de code couverte par les tests unitaires au niveau de la classe et au niveau du package:

image

3.2. Intégration avec IntelliJ IDEA

JaCoCo est fourni par défaut avec la dernière distribution IntelliJ IDEA, il n'est donc pas nécessaire d'installer le plug-in séparément.

Lors de l'exécution de tests unitaires, nous pouvons sélectionner le programme de couverture à utiliser. Nous pouvons exécuter les cas de test soit au niveau du projet, soit au niveau de la classe:

image

Semblable à Eclipse, JaCoCo affiche les résultats en utilisant différents schémas de couleurs pour la couverture.

image

Nous pouvons voir le résumé de la couverture de test où il affiche la quantité de code couverte par les tests unitaires au niveau classe et au niveau du package.

image

4. Cobertura

Enfin, il convient de mentionner Cobertura - il est également utilisé pour suivre la couverture des tests unitaires dans la base de code.

La dernière version d'Eclipse ne prend pas en charge le plugin Cobertura au moment de la rédaction; le plugin fonctionne avec les versions antérieures d'Eclipse.

De même, IntelliJ IDEA n'a pas de plugin officiel qui peut exécuter la couverture Cobertura.

5. Conclusion

Nous avons examiné l'intégration avec Eclipse et IntelliJ IDEA pour trois outils d'analyse statique largement utilisés. FindBug a été couvert dans un précédentintroduction to FindBugs.

Le code source de ce didacticiel se trouve dansthe GitHub project - il s'agit d'un projet basé sur Maven, il devrait donc être facile à importer et à exécuter tel quel.