Sonar au JUGL

Freddy Mallet
http://sonar.codehaus.org
Le 2 Avril 2009
Les 7 péchés capitaux ...
Les 7 péchés capitaux ...
Appliqués au code source


Aucune convention de codage



Beaucoup de duplications



Peu de couverture par les tests unitaires



Absence de commentaires



Beaucoup de bugs potentiels



Complexité par composant importante



Design spaghetti
La mission divine de Sonar
Lutter contre l'axe du mal ... car le code source le vaut bien !
Niveau d'armement actuel
5/7, les infidèles n'ont qu'à bien se tenir


OK : Aucune convention de codage



OK : Beaucoup de duplications



OK : Peu de couverture par les tests unitaires



KO : Absence de commentaires



OK : Beaucoup de bugs potentiels



OK : Complexité par composants importante



KO : Design spaghetti
Rappel de bon sens
Un projet de qualité est :








Un projet géré sous
contrôleur de version
Un projet qui compile
(Intégration continue)
Un projet avec une
traçabilité technique /
fonctionnelle
Un projet qui n'a pas
succombé à l'un des 7
péchés capitaux
Aucune conventions de codage (1/7)
Checkstyle et PMD
Beaucoup de duplications (2/7)
PMD - CPD
Peu de couverture par les tests (3/7)
Junit, TestNG, Surfire, Clover, Cobertura
Absence de commentaires (4/7)
JavaNCSS 2 est en route






Ratio de méthode publiques hors setter/getter
avec javadoc
Ratio de classes/interfaces publiques avec
javadoc
Densité de commentaire
Beaucoup de bugs potentiels (5/7)
Findbugs

if (listeners == null)
listeners.remove(listener);
Sun java : JDK1.6.0, b105,
sun.awt.x11.XMSelection
lines 243-244
Complexité trop élevée (6/7)
JavaNCSS
Design spaghetti (7/7)
?


Les produits références du marché



SonarJ





XDepend
Structure101

Quelques librairies


JDepend



Architecture Rules



Macker
Sonar à coeur ouvert
Sonar Maven Plugin
Source
Code

Cobertura

1

JavaNCSS

Surefire

PMD

Checkstyle

Changelog
Changelog

XML
Files

Sonar
DB
4
Aggregator
& Analyser

5

1-

mvn sonar

2-

http://sonar

2
3
Sonar web interface
De quoi demain sera fait ?


Agrégation des projets techniques par
application, service, département...



Ré-écriture de JavaNCSS



Amélioration du moteur de règles



Couverture de PHP



Mécanismes de gestion des autorisations



...
Les atouts


Facilité de mise en oeuvre :
mvn org.codehaus.sonar:sonar-maven-plugin:1.7:sonar






Vue consolidée sur l'ensemble du parc
applicatif
Suivi temporel des indicateurs
Gestion centralisée de la qualité (règles,
seuils)



Client web



Activité de la communauté
Une demo vaut mieux qu'un long sermon
Questions & Réponses
& confessions

Merci
http://sonar.codehaus.org
http://www.sonarsource.com

Sonar - Freddy Mallet - April 2009

  • 1.
    Sonar au JUGL FreddyMallet http://sonar.codehaus.org Le 2 Avril 2009
  • 2.
    Les 7 péchéscapitaux ...
  • 3.
    Les 7 péchéscapitaux ... Appliqués au code source  Aucune convention de codage  Beaucoup de duplications  Peu de couverture par les tests unitaires  Absence de commentaires  Beaucoup de bugs potentiels  Complexité par composant importante  Design spaghetti
  • 4.
    La mission divinede Sonar Lutter contre l'axe du mal ... car le code source le vaut bien !
  • 5.
    Niveau d'armement actuel 5/7,les infidèles n'ont qu'à bien se tenir  OK : Aucune convention de codage  OK : Beaucoup de duplications  OK : Peu de couverture par les tests unitaires  KO : Absence de commentaires  OK : Beaucoup de bugs potentiels  OK : Complexité par composants importante  KO : Design spaghetti
  • 6.
    Rappel de bonsens Un projet de qualité est :     Un projet géré sous contrôleur de version Un projet qui compile (Intégration continue) Un projet avec une traçabilité technique / fonctionnelle Un projet qui n'a pas succombé à l'un des 7 péchés capitaux
  • 7.
    Aucune conventions decodage (1/7) Checkstyle et PMD
  • 8.
    Beaucoup de duplications(2/7) PMD - CPD
  • 9.
    Peu de couverturepar les tests (3/7) Junit, TestNG, Surfire, Clover, Cobertura
  • 10.
    Absence de commentaires(4/7) JavaNCSS 2 est en route    Ratio de méthode publiques hors setter/getter avec javadoc Ratio de classes/interfaces publiques avec javadoc Densité de commentaire
  • 11.
    Beaucoup de bugspotentiels (5/7) Findbugs if (listeners == null) listeners.remove(listener); Sun java : JDK1.6.0, b105, sun.awt.x11.XMSelection lines 243-244
  • 12.
  • 13.
    Design spaghetti (7/7) ?  Lesproduits références du marché   SonarJ   XDepend Structure101 Quelques librairies  JDepend  Architecture Rules  Macker
  • 14.
    Sonar à coeurouvert Sonar Maven Plugin Source Code Cobertura 1 JavaNCSS Surefire PMD Checkstyle Changelog Changelog XML Files Sonar DB 4 Aggregator & Analyser 5 1- mvn sonar 2- http://sonar 2 3 Sonar web interface
  • 15.
    De quoi demainsera fait ?  Agrégation des projets techniques par application, service, département...  Ré-écriture de JavaNCSS  Amélioration du moteur de règles  Couverture de PHP  Mécanismes de gestion des autorisations  ...
  • 16.
    Les atouts  Facilité demise en oeuvre : mvn org.codehaus.sonar:sonar-maven-plugin:1.7:sonar    Vue consolidée sur l'ensemble du parc applicatif Suivi temporel des indicateurs Gestion centralisée de la qualité (règles, seuils)  Client web  Activité de la communauté
  • 17.
    Une demo vautmieux qu'un long sermon
  • 18.
    Questions & Réponses &confessions Merci http://sonar.codehaus.org http://www.sonarsource.com