Outils d'analyse statique Java dans Eclipse et IntelliJ IDEA

1. Vue d'ensemble

Dans notre introduction à 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 pour d'éventuels bugs, codes sous-optimaux et autres mauvaises pratiques; il examine également des métriques plus avancées telles que la complexité cyclomatique pour la base de code qu'il analyse.

2.1. Intégration avec Eclipse

Le plugin PMD peut être installé directement depuis Eclipse Marketplace. Le plugin peut également être téléchargé manuellement ici. Une fois installé, nous pouvons exécuter la vérification PMD directement à partir de l'EDI lui-même:

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

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

Nous pouvons fouiller dans les détails de chaque entrée en faisant un clic droit dessus 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:

Il est également possible de modifier la configuration de l'analyse 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, l'ensemble 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:

2.2. Intégration avec IntelliJ

Bien sûr, IntelliJ dispose d'un plugin PMD similaire - qui peut être téléchargé et installé à partir du magasin de plugins JetBrains.

De la même manière, nous pouvons exécuter le plugin directement dans l'EDI - en cliquant avec le bouton droit sur la source que nous devons analyser et en sélectionnant l'analyse PMD dans le menu contextuel:

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

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 l'ensemble de règles en chargeant un ensemble de règles personnalisées avec nos propres règles de test.

3. JaCoCo

Progresser - JaCoCo est un outil de couverture de test - utilisé pour suivre la couverture de test unitaire 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 installé directement depuis la place de marché. Un lien d'installation est également hébergé sur le site officiel disponible ici.

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

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 cas de test, nous testons uniquement le scénario où le deuxième paramètre est zéro:

Dans ce cas, nous pouvons voir que la ligne 6 est colorée en jaune. Une seule branche de la condition «si» est testée et s'exécute dans notre test simple. Par conséquent, il n'est pas complètement testé et marqué en jaune.

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

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

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 plugin séparément.

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

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

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

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é traité dans une précédente introduction à FindBugs.

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