SonarQube est-il un remplacement pour Checkstyle, PMD, FindBugs?


105

Nous travaillons sur un projet Web à partir de zéro et examinons les outils d'analyse de code statique 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 flexible unique et suis tombé sur SonarQube.

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

Réponses:


99

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 la tendance . Est -ce que vous améliorerez la base de code ou que vous faites le contraire? Seul un outil avec mémoire peut vous le dire.

Vous devez 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 s'exécuter. Et vous aurez votre histoire. 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 CPD ou sauter l'analyse de la couverture du code). Et vous n'aurez pas d'histoire.

De plus, Sonar génère des rapports visuels , de style «Tableau de bord». Ce qui le rend très facile à saisir. 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 mois.


Je suis d'accord avec ces avantages dans le cadre de projets brown-field. Les projets Greenfield avec des politiques zéro défaut n'ont pas besoin de cette mémoire. Gardez simplement votre base de code propre à 100% tout le temps.
Christian Hujer

48

Sonar utilise ces 3 outils comme plugins et agrège les données des trois en donnant une valeur ajoutée en affichant des graphiques et autres à partir de ces outils. Ils sont donc complémentaires du sonar.


1
yup sonar utilise les trois
frappuccino

27
alors que c'était vrai jusqu'à la version 3.x, Sonar 4.x abandonne l'utilisation d'au moins PMD et CheckStyle au profit de son propre analyseur Squid interne, car cela leur donne plus de liberté pour étendre le jeu de règles et résoudre les problèmes qui ont été affectant ces projets pendant un certain temps. Par exemple, ils ont déjà désapprouvé plus de 150 règles PMD et finiront par les supprimer complètement.
haylem

1
Post intéressant au sujet de la raison pour laquelle ils dépréciées ces règles: sonarqube.org/... .
Jhack

33

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

SonarQube est actuellement en train de désapprouver PMD, Checkstyle et Findbugs et d'utiliser leur propre technologie pour analyser le code Java (appelé SonarJava ). Ils le font, car ils ne veulent pas passer leur temps à réparer, mettre à jour (ou attendre dessus) ces bibliothèques (par exemple pour Java 8), qui utilisent par exemple des bibliothèques obsolètes.

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


8

Sonar est génial, mais si vous souhaitez utiliser les outils mentionnés séparément tout en conservant de jolis graphiques, vous pouvez utiliser le plugin Analysis Collector dans le cadre de votre build Jenkins CI. Un léger avantage de ceci est que vous pouvez vérifier votre configuration PMD / Findbugs / Checkstyle dans votre SCM et l'intégrer dans votre build Maven, plutôt que de vous fier à un serveur Sonar séparé.


5

Sonar est bien plus que ces seuls outils. Le plus grand avantage est l'interface graphique, 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'oeil: http://nemo.sonarsource.org/


3

J'utiliserais toujours ces outils en plus du sonar car ils peuvent échouer lors de la construction du maven lorsque quelqu'un enfreint une règle. Où comme sonar est plus rétrospectif.


3

... quelques années plus tard: non, ça ne l'est pas! SonarQube suppose de pouvoir couvrir toutes les règles avec son propre analyseur, mais il existe encore des règles de PMD ou CheckStyle non couvertes par SonarQube. Voir par exemple: PMD ReturnFromFinallyBlock.


Il semble également manquer Violation PMD: utiliser la portée explicite au lieu du niveau privé du package par défaut?
user7294900


2

Eh bien au moins depuis SonarQube 6.3+, il semble que Findbugs n'est (pour le moment) plus pris en charge en tant que plugin. Sonarsource travaille sur le remplacement des règles Findbugs par son propre plugin Java.

Ils ont même une liste pour le statut de remplacement de chaque règle ici: http://dist.sonarsource.com/reports/coverage/findbugs.html

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.