web-dev-qa-db-fra.com

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

Nous travaillons sur un projet Web à partir de rien et examinons les outils d'analyse de code statique suivants.

  • Conventions (style de contrôle)
  • Mauvaises pratiques (PMD)
  • Bugs potentiels (FindBugs)

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

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

100
Johnny

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, toutefois, stocke l'historique dans une base de données. Vous pouvez alors voir le tendance. Améliorez-vous la base de code ou effectuez-vous la En face, seul un outil avec de la mémoire peut vous le dire.

Vous devez exécuter Sonar dans votre système CI afin que même les tâches qui prennent un peu de temps à exécuter (telles que le détecteur de copie par collage) soient exécutées. Et vous aurez votre histoire. Tandis 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 exécute moins de "plugins de qualité" (tels que le saut de DPC ou l'analyse de couverture de code). Et tu n'auras pas d'histoire.

En outre, Sonar génère visuel rapports, 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 derniers mois et semaines.

94
Olivier Gourment

Sonar utilise ces 3 outils sous forme de plug-ins et agrège les données des trois en donnant une valeur ajoutée en affichant des graphiques et autres à partir de ces outils. Donc, ils sont complémentaires au sonar.

45
MeBigFatGuy

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

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

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

30
keiki

Sonar est excellent, mais si vous souhaitez utiliser les outils mentionnés séparément et conserver les graphes de Nice, vous pouvez utiliser le Analysis Collector Plugin dans le cadre de la construction de votre CI Jenkins. Un léger avantage est que vous pouvez archiver votre configuration PMD/Findbugs/Checkstyle dans votre SCM et l'intégrer à votre version Maven, plutôt que de compter sur un serveur Sonar séparé.

7
artbristol

Sonar est beaucoup plus que ces outils seuls. Le principal avantage est l’interface graphique, qui vous permet de tout configurer facilement. Les statistiques qu'il offre sont très détaillées (lignes de code, etc.). Et il offre même un excellent support pour la couverture de test, etc. :)

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

5
oers

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

3
deamon

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

3
Usman Ismail

Du moins depuis SonarQube 6.3+, il semble que Findbugs ne soit plus (actuellement) supporté en tant que plugin. Sonarsource travaille sur le remplacement des règles Findbugs par son propre plug-in 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

2
Markus