115 votes

SonarQube est-il le remplaçant de Checkstyle, PMD, FindBugs ?

Nous travaillons sur un projet web en partant de zéro et nous nous intéressons aux outils d'analyse statique du code suivants.

  • Conventions (Checkstyle)
  • Mauvaises pratiques (PMD)
  • Bogues potentiels (FindBugs)

Le projet est construit sur Maven. Au lieu d'utiliser plusieurs outils à cette fin, je cherchais une solution unique et flexible et je suis tombé sur SonarQube.

Est-il vrai que nous pouvons obtenir les résultats de Checkstyle, PMD et Findbugs avec SonarQube ?

107voto

Olivier Gourment Points 503

Sonar exécutera CheckStyle, FindBugs et PMD, ainsi que quelques autres "plugins" tels que Cobertura (couverture de code) par défaut pour les projets Java. La principale valeur ajoutée, cependant, est qu'il stocke l'historique dans une base de données. Vous pouvez alors voir les tendance . Êtes-vous améliorer la base de code ou faites-vous le contraire ? Seul un outil doté de mémoire peut vous le dire.

Vous devriez exécuter Sonar dans votre système CI afin que même les choses qui prennent un certain temps à s'exécuter (comme le CPD - détecteur de copier-coller) puissent être exécutées. Et vous aurez votre historique. Alors qu'avec un plugin Eclipse, par exemple, vous détecterez les violations plus tôt - ce qui est génial - mais vous serez tenté de l'exécuter moins souvent s'il commence à prendre trop de temps, ou d'exécuter moins de "plugins de qualité" (comme sauter le CPD ou sauter l'analyse de couverture de code). Et vous n'aurez pas d'historique.

De plus, le Sonar génère visuel rapports, style "tableau de bord". Ce qui le rend très facile à appréhender. Avec Sonar dans Jenkins, vous serez en mesure de montrer aux développeurs et à votre direction les effets du travail effectué sur la qualité de la base de code au cours des dernières semaines et des derniers mois.

0 votes

Je suis d'accord avec ces avantages dans le contexte des projets de friches industrielles. Les projets Greenfield avec des politiques de zéro défaut n'ont pas besoin de cette mémoire. Il suffit de garder votre base de code propre à 100% tout le temps.

0 votes

Vous pouvez également exécuter SpotBugs and co depuis Maven et même lui dire d'échouer la construction s'il y a des erreurs (ou plus de N erreurs ...).

50voto

MeBigFatGuy Points 12489

Sonar utilise ces trois outils en tant que plugins et agrège les données des trois, ce qui donne une valeur ajoutée en affichant des graphiques et d'autres éléments provenant de ces outils. Ils sont donc complémentaires de Sonar.

29 votes

Bien que cela ait été vrai jusqu'à la version 3.x, Sonar 4.x s'éloigne de l'utilisation de PMD et CheckStyle en faveur de son propre analyseur Squid interne, parce que cela leur donne plus de liberté pour étendre le jeu de règles et corriger les problèmes qui ont affecté ces projets depuis un certain temps. Par exemple, ils ont déjà déprécié plus de 150 règles PMD, et finiront par les supprimer complètement.

2 votes

Un article intéressant sur la raison pour laquelle ces règles ont été supprimées : sonarqube.org/ .

0 votes

@haylem, avez-vous une référence à ce sujet, par exemple un lien que je peux utiliser pour trouver cette information ?

36voto

keiki Points 763

Oui et non. En plus des autres réponses.

SonarQube est actuellement en passe de déprécier PMD, Checkstyle et Findbugs et d'utiliser sa propre technologie pour analyser le code Java (appelée SonarJava ). Ils le font parce qu'ils ne veulent pas passer leur temps à réparer, mettre à niveau (ou attendre) ces bibliothèques (par exemple pour Java 8), qui utilise par exemple des bibliothèques obsolètes.

Ils ont également obtenu un nouvel ensemble de plugins pour votre IDE personnel appelé SonarLint .

9voto

artbristol Points 17755

Sonar est génial, mais si vous souhaitez utiliser les outils mentionnés séparément tout en obtenant de beaux graphiques, vous pouvez utiliser la fonction Plugin Analysis Collector dans le cadre de votre construction Jenkins CI. Un léger avantage est que vous pouvez enregistrer votre configuration PMD/Findbugs/Checkstyle dans votre SCM et l'intégrer dans votre build Maven, plutôt que de dépendre d'un serveur Sonar séparé.

5voto

oers Points 9920

Le Sonar est bien plus que ces seuls outils. Le plus grand avantage est le gui, qui vous permet de tout configurer facilement. Les statistiques qu'il propose sont très détaillées (lignes de code, etc.). Et il offre même un excellent support pour la couverture des tests, etc :)

Ici, vous pouvez jeter un bon coup d'œil : http://nemo.sonarsource.org/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X