SlideShare une entreprise Scribd logo
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

Contenu connexe

En vedette

Evaluation question 4 (made using PIKTOCHART and presented with powerpoint)
Evaluation question 4 (made using PIKTOCHART and presented with powerpoint)Evaluation question 4 (made using PIKTOCHART and presented with powerpoint)
Evaluation question 4 (made using PIKTOCHART and presented with powerpoint)
Maia Legg
 
Gestion tecnologic a 2
Gestion tecnologic a 2Gestion tecnologic a 2
Gestion tecnologic a 2
MIGUEL ANGEL
 
Bases pedagógicas del e learning
Bases pedagógicas del e learningBases pedagógicas del e learning
Bases pedagógicas del e learning
Jorge Calvo
 
Nombres dothraki
Nombres dothrakiNombres dothraki
Nombres dothraki
kittyk4att
 
Integracion de las tic.unprg.
Integracion de las tic.unprg.Integracion de las tic.unprg.
Integracion de las tic.unprg.
nilzuhu
 
Ciencia, tecnologia y educacion para no expertos
Ciencia, tecnologia y educacion para no expertosCiencia, tecnologia y educacion para no expertos
Ciencia, tecnologia y educacion para no expertos
Camilo Cardenas
 
Contrôle ccx lutte contre fraude 11.02.14 1
Contrôle ccx lutte contre fraude 11.02.14 1Contrôle ccx lutte contre fraude 11.02.14 1
Contrôle ccx lutte contre fraude 11.02.14 1
phild68131
 
Vr100 133106 contabilidad-1
Vr100   133106 contabilidad-1Vr100   133106 contabilidad-1
Vr100 133106 contabilidad-1
karitosanta
 
Informatica
InformaticaInformatica
edhec workshopleveefonds
edhec workshopleveefondsedhec workshopleveefonds
edhec workshopleveefonds
William Caly
 
Mlearnig
MlearnigMlearnig
Mlearnig
Gamil Revilla
 
Dossier de production
Dossier de production Dossier de production
Dossier de production
Johanna Lry
 
Asignacion 3(aiza aponte)
Asignacion 3(aiza aponte)Asignacion 3(aiza aponte)
Asignacion 3(aiza aponte)
Aiza Hernández
 
Teorías de aprendizaje tic
Teorías de aprendizaje ticTeorías de aprendizaje tic
Teorías de aprendizaje tic
nilzuhu
 
Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009
Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009
Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009
JUG Lausanne
 
1302 newsletter
1302 newsletter1302 newsletter
1302 newsletter
susanabartz
 
Formations informatiques Brest
Formations informatiques BrestFormations informatiques Brest
Formations informatiques Brest
CCI Brest Formations
 
Le cinéma
Le cinémaLe cinéma
Le cinéma
jujub8d
 
Evaluation question 4
Evaluation question 4Evaluation question 4
Evaluation question 4
Maia Legg
 

En vedette (20)

Evaluation question 4 (made using PIKTOCHART and presented with powerpoint)
Evaluation question 4 (made using PIKTOCHART and presented with powerpoint)Evaluation question 4 (made using PIKTOCHART and presented with powerpoint)
Evaluation question 4 (made using PIKTOCHART and presented with powerpoint)
 
Gestion tecnologic a 2
Gestion tecnologic a 2Gestion tecnologic a 2
Gestion tecnologic a 2
 
Bases pedagógicas del e learning
Bases pedagógicas del e learningBases pedagógicas del e learning
Bases pedagógicas del e learning
 
Nombres dothraki
Nombres dothrakiNombres dothraki
Nombres dothraki
 
Integracion de las tic.unprg.
Integracion de las tic.unprg.Integracion de las tic.unprg.
Integracion de las tic.unprg.
 
Ciencia, tecnologia y educacion para no expertos
Ciencia, tecnologia y educacion para no expertosCiencia, tecnologia y educacion para no expertos
Ciencia, tecnologia y educacion para no expertos
 
Contrôle ccx lutte contre fraude 11.02.14 1
Contrôle ccx lutte contre fraude 11.02.14 1Contrôle ccx lutte contre fraude 11.02.14 1
Contrôle ccx lutte contre fraude 11.02.14 1
 
L'ecole
L'ecoleL'ecole
L'ecole
 
Vr100 133106 contabilidad-1
Vr100   133106 contabilidad-1Vr100   133106 contabilidad-1
Vr100 133106 contabilidad-1
 
Informatica
InformaticaInformatica
Informatica
 
edhec workshopleveefonds
edhec workshopleveefondsedhec workshopleveefonds
edhec workshopleveefonds
 
Mlearnig
MlearnigMlearnig
Mlearnig
 
Dossier de production
Dossier de production Dossier de production
Dossier de production
 
Asignacion 3(aiza aponte)
Asignacion 3(aiza aponte)Asignacion 3(aiza aponte)
Asignacion 3(aiza aponte)
 
Teorías de aprendizaje tic
Teorías de aprendizaje ticTeorías de aprendizaje tic
Teorías de aprendizaje tic
 
Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009
Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009
Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009
 
1302 newsletter
1302 newsletter1302 newsletter
1302 newsletter
 
Formations informatiques Brest
Formations informatiques BrestFormations informatiques Brest
Formations informatiques Brest
 
Le cinéma
Le cinémaLe cinéma
Le cinéma
 
Evaluation question 4
Evaluation question 4Evaluation question 4
Evaluation question 4
 

Similaire à Sonar - Freddy Mallet - April 2009

Sonar 2.0 au GenevaJUG par Freddy Mallet
Sonar 2.0 au GenevaJUG par Freddy MalletSonar 2.0 au GenevaJUG par Freddy Mallet
Sonar 2.0 au GenevaJUG par Freddy Mallet
GenevaJUG
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyon
Clement Bouillier
 
Java uik-chap1-intro java
Java uik-chap1-intro javaJava uik-chap1-intro java
Java uik-chap1-intro java
Amel Morchdi
 
Chap 02 poo en java
Chap 02 poo en javaChap 02 poo en java
Chap 02 poo en java
Yassine Badri
 
Maven2 - Philippe Kernevez - March 2009
Maven2 - Philippe Kernevez - March 2009Maven2 - Philippe Kernevez - March 2009
Maven2 - Philippe Kernevez - March 2009
JUG Lausanne
 
AT2010 Principes Integration Continue
AT2010 Principes Integration ContinueAT2010 Principes Integration Continue
AT2010 Principes Integration Continue
Normandy JUG
 
Formation Grails
Formation GrailsFormation Grails
Formation Grails
skeltown
 
Automatisations des tests fonctionnels avec Robot Framework
Automatisations des tests fonctionnels avec Robot FrameworkAutomatisations des tests fonctionnels avec Robot Framework
Automatisations des tests fonctionnels avec Robot Framework
laurent bristiel
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven
Arnaud Héritier
 
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdfdevoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
Jean-Michel Doudoux
 
JavaScript Devoxx France 2013
JavaScript Devoxx France 2013JavaScript Devoxx France 2013
JavaScript Devoxx France 2013
Romain Linsolas
 
Devoxx 2018 Après Java 8, Java 9 et 10
Devoxx 2018 Après Java 8, Java 9 et 10Devoxx 2018 Après Java 8, Java 9 et 10
Devoxx 2018 Après Java 8, Java 9 et 10
Jean-Michel Doudoux
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache Maven
Arnaud Héritier
 
AlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHPAlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHP
julien pauli
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
Arnaud Héritier
 
Javaday Paris 2022 - Java en 2022 : profiter de Java 17
Javaday Paris 2022 - Java en 2022 : profiter de Java 17Javaday Paris 2022 - Java en 2022 : profiter de Java 17
Javaday Paris 2022 - Java en 2022 : profiter de Java 17
Jean-Michel Doudoux
 
La Rochelle workshop 2016
La Rochelle workshop 2016La Rochelle workshop 2016
La Rochelle workshop 2016
Christian Brousseau
 
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Normandie Web Xperts
 
Back to the future of java (from 8 to 11 and beyond)
Back to the future of java (from 8 to 11 and beyond)Back to the future of java (from 8 to 11 and beyond)
Back to the future of java (from 8 to 11 and beyond)
Jérôme Tamborini
 

Similaire à Sonar - Freddy Mallet - April 2009 (20)

Sonar 2.0 au GenevaJUG par Freddy Mallet
Sonar 2.0 au GenevaJUG par Freddy MalletSonar 2.0 au GenevaJUG par Freddy Mallet
Sonar 2.0 au GenevaJUG par Freddy Mallet
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyon
 
Java uik-chap1-intro java
Java uik-chap1-intro javaJava uik-chap1-intro java
Java uik-chap1-intro java
 
Chap 02 poo en java
Chap 02 poo en javaChap 02 poo en java
Chap 02 poo en java
 
Maven2 - Philippe Kernevez - March 2009
Maven2 - Philippe Kernevez - March 2009Maven2 - Philippe Kernevez - March 2009
Maven2 - Philippe Kernevez - March 2009
 
AT2010 Principes Integration Continue
AT2010 Principes Integration ContinueAT2010 Principes Integration Continue
AT2010 Principes Integration Continue
 
Wygday 2008
Wygday 2008Wygday 2008
Wygday 2008
 
Formation Grails
Formation GrailsFormation Grails
Formation Grails
 
Automatisations des tests fonctionnels avec Robot Framework
Automatisations des tests fonctionnels avec Robot FrameworkAutomatisations des tests fonctionnels avec Robot Framework
Automatisations des tests fonctionnels avec Robot Framework
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven
 
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdfdevoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
 
JavaScript Devoxx France 2013
JavaScript Devoxx France 2013JavaScript Devoxx France 2013
JavaScript Devoxx France 2013
 
Devoxx 2018 Après Java 8, Java 9 et 10
Devoxx 2018 Après Java 8, Java 9 et 10Devoxx 2018 Après Java 8, Java 9 et 10
Devoxx 2018 Après Java 8, Java 9 et 10
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache Maven
 
AlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHPAlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHP
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
Javaday Paris 2022 - Java en 2022 : profiter de Java 17
Javaday Paris 2022 - Java en 2022 : profiter de Java 17Javaday Paris 2022 - Java en 2022 : profiter de Java 17
Javaday Paris 2022 - Java en 2022 : profiter de Java 17
 
La Rochelle workshop 2016
La Rochelle workshop 2016La Rochelle workshop 2016
La Rochelle workshop 2016
 
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
 
Back to the future of java (from 8 to 11 and beyond)
Back to the future of java (from 8 to 11 and beyond)Back to the future of java (from 8 to 11 and beyond)
Back to the future of java (from 8 to 11 and beyond)
 

Plus de JUG Lausanne

Introduction aux algorithmes génétiques
Introduction aux algorithmes génétiquesIntroduction aux algorithmes génétiques
Introduction aux algorithmes génétiques
JUG Lausanne
 
Développer un moteur d'exécution symbolique en partant de rien
Développer un moteur d'exécution symbolique en partant de rienDévelopper un moteur d'exécution symbolique en partant de rien
Développer un moteur d'exécution symbolique en partant de rien
JUG Lausanne
 
Reverse engineering Java et contournement du mécanisme de paiement inapp Android
Reverse engineering Java et contournement du mécanisme de paiement inapp AndroidReverse engineering Java et contournement du mécanisme de paiement inapp Android
Reverse engineering Java et contournement du mécanisme de paiement inapp Android
JUG Lausanne
 
Exemple d'IOT et ML avec Android, Cassandra et Spark
Exemple d'IOT et ML avec Android, Cassandra et SparkExemple d'IOT et ML avec Android, Cassandra et Spark
Exemple d'IOT et ML avec Android, Cassandra et Spark
JUG Lausanne
 
Play! chez Zaptravel - Nicolas Martignole - December 2012
Play! chez Zaptravel - Nicolas Martignole - December 2012Play! chez Zaptravel - Nicolas Martignole - December 2012
Play! chez Zaptravel - Nicolas Martignole - December 2012
JUG Lausanne
 
Playframework Realtime Web - Guillaume Bort & Sadek Drobi - December 2012
Playframework Realtime Web - Guillaume Bort & Sadek Drobi - December 2012Playframework Realtime Web - Guillaume Bort & Sadek Drobi - December 2012
Playframework Realtime Web - Guillaume Bort & Sadek Drobi - December 2012
JUG Lausanne
 
CloudBees - Sacha Labourey - May 2011
CloudBees - Sacha Labourey - May 2011CloudBees - Sacha Labourey - May 2011
CloudBees - Sacha Labourey - May 2011
JUG Lausanne
 
Apache Camel - Stéphane Kay - April 2011
Apache Camel - Stéphane Kay - April 2011Apache Camel - Stéphane Kay - April 2011
Apache Camel - Stéphane Kay - April 2011
JUG Lausanne
 
Session dédiée à l'analyse de la qualité du code Java - Cyril Picat - Februar...
Session dédiée à l'analyse de la qualité du code Java - Cyril Picat - Februar...Session dédiée à l'analyse de la qualité du code Java - Cyril Picat - Februar...
Session dédiée à l'analyse de la qualité du code Java - Cyril Picat - Februar...
JUG Lausanne
 
OpenDS - Ludovic Poitou - December 2010
OpenDS - Ludovic Poitou - December 2010OpenDS - Ludovic Poitou - December 2010
OpenDS - Ludovic Poitou - December 2010
JUG Lausanne
 
Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010
JUG Lausanne
 
Infinispan - Galder Zamarreno - October 2010
Infinispan - Galder Zamarreno - October 2010Infinispan - Galder Zamarreno - October 2010
Infinispan - Galder Zamarreno - October 2010
JUG Lausanne
 
No Sql - Olivier Mallassi - September 2010
No Sql - Olivier Mallassi - September 2010No Sql - Olivier Mallassi - September 2010
No Sql - Olivier Mallassi - September 2010
JUG Lausanne
 
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
JUG Lausanne
 
Introduction à Scala - Michel Schinz - January 2010
Introduction à Scala - Michel Schinz - January 2010Introduction à Scala - Michel Schinz - January 2010
Introduction à Scala - Michel Schinz - January 2010
JUG Lausanne
 
Introduction Groovy / Grails - Cyril Picat - December 2009
Introduction Groovy / Grails - Cyril Picat - December 2009Introduction Groovy / Grails - Cyril Picat - December 2009
Introduction Groovy / Grails - Cyril Picat - December 2009
JUG Lausanne
 
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009Initiation aux tests fonctionnels - Philippe Kernevez - October 2009
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009
JUG Lausanne
 
XML & Java - Raphaël Tagliani - March 2008
XML & Java - Raphaël Tagliani - March 2008XML & Java - Raphaël Tagliani - March 2008
XML & Java - Raphaël Tagliani - March 2008
JUG Lausanne
 
Visual Mobile Applications with Netbeans 6.0 - Cédric Tabin - February 2008
Visual Mobile Applications with Netbeans 6.0 - Cédric Tabin - February 2008Visual Mobile Applications with Netbeans 6.0 - Cédric Tabin - February 2008
Visual Mobile Applications with Netbeans 6.0 - Cédric Tabin - February 2008
JUG Lausanne
 
Scripting with Java FX - Cédric Tabin - December 2007
Scripting with Java FX - Cédric Tabin - December 2007Scripting with Java FX - Cédric Tabin - December 2007
Scripting with Java FX - Cédric Tabin - December 2007
JUG Lausanne
 

Plus de JUG Lausanne (20)

Introduction aux algorithmes génétiques
Introduction aux algorithmes génétiquesIntroduction aux algorithmes génétiques
Introduction aux algorithmes génétiques
 
Développer un moteur d'exécution symbolique en partant de rien
Développer un moteur d'exécution symbolique en partant de rienDévelopper un moteur d'exécution symbolique en partant de rien
Développer un moteur d'exécution symbolique en partant de rien
 
Reverse engineering Java et contournement du mécanisme de paiement inapp Android
Reverse engineering Java et contournement du mécanisme de paiement inapp AndroidReverse engineering Java et contournement du mécanisme de paiement inapp Android
Reverse engineering Java et contournement du mécanisme de paiement inapp Android
 
Exemple d'IOT et ML avec Android, Cassandra et Spark
Exemple d'IOT et ML avec Android, Cassandra et SparkExemple d'IOT et ML avec Android, Cassandra et Spark
Exemple d'IOT et ML avec Android, Cassandra et Spark
 
Play! chez Zaptravel - Nicolas Martignole - December 2012
Play! chez Zaptravel - Nicolas Martignole - December 2012Play! chez Zaptravel - Nicolas Martignole - December 2012
Play! chez Zaptravel - Nicolas Martignole - December 2012
 
Playframework Realtime Web - Guillaume Bort & Sadek Drobi - December 2012
Playframework Realtime Web - Guillaume Bort & Sadek Drobi - December 2012Playframework Realtime Web - Guillaume Bort & Sadek Drobi - December 2012
Playframework Realtime Web - Guillaume Bort & Sadek Drobi - December 2012
 
CloudBees - Sacha Labourey - May 2011
CloudBees - Sacha Labourey - May 2011CloudBees - Sacha Labourey - May 2011
CloudBees - Sacha Labourey - May 2011
 
Apache Camel - Stéphane Kay - April 2011
Apache Camel - Stéphane Kay - April 2011Apache Camel - Stéphane Kay - April 2011
Apache Camel - Stéphane Kay - April 2011
 
Session dédiée à l'analyse de la qualité du code Java - Cyril Picat - Februar...
Session dédiée à l'analyse de la qualité du code Java - Cyril Picat - Februar...Session dédiée à l'analyse de la qualité du code Java - Cyril Picat - Februar...
Session dédiée à l'analyse de la qualité du code Java - Cyril Picat - Februar...
 
OpenDS - Ludovic Poitou - December 2010
OpenDS - Ludovic Poitou - December 2010OpenDS - Ludovic Poitou - December 2010
OpenDS - Ludovic Poitou - December 2010
 
Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010
 
Infinispan - Galder Zamarreno - October 2010
Infinispan - Galder Zamarreno - October 2010Infinispan - Galder Zamarreno - October 2010
Infinispan - Galder Zamarreno - October 2010
 
No Sql - Olivier Mallassi - September 2010
No Sql - Olivier Mallassi - September 2010No Sql - Olivier Mallassi - September 2010
No Sql - Olivier Mallassi - September 2010
 
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
 
Introduction à Scala - Michel Schinz - January 2010
Introduction à Scala - Michel Schinz - January 2010Introduction à Scala - Michel Schinz - January 2010
Introduction à Scala - Michel Schinz - January 2010
 
Introduction Groovy / Grails - Cyril Picat - December 2009
Introduction Groovy / Grails - Cyril Picat - December 2009Introduction Groovy / Grails - Cyril Picat - December 2009
Introduction Groovy / Grails - Cyril Picat - December 2009
 
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009Initiation aux tests fonctionnels - Philippe Kernevez - October 2009
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009
 
XML & Java - Raphaël Tagliani - March 2008
XML & Java - Raphaël Tagliani - March 2008XML & Java - Raphaël Tagliani - March 2008
XML & Java - Raphaël Tagliani - March 2008
 
Visual Mobile Applications with Netbeans 6.0 - Cédric Tabin - February 2008
Visual Mobile Applications with Netbeans 6.0 - Cédric Tabin - February 2008Visual Mobile Applications with Netbeans 6.0 - Cédric Tabin - February 2008
Visual Mobile Applications with Netbeans 6.0 - Cédric Tabin - February 2008
 
Scripting with Java FX - Cédric Tabin - December 2007
Scripting with Java FX - Cédric Tabin - December 2007Scripting with Java FX - Cédric Tabin - December 2007
Scripting with Java FX - Cédric Tabin - December 2007
 

Sonar - Freddy Mallet - April 2009

  • 1. Sonar au JUGL Freddy Mallet http://sonar.codehaus.org Le 2 Avril 2009
  • 2. Les 7 péchés capitaux ...
  • 3. 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
  • 4. La mission divine de 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 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
  • 7. Aucune conventions de codage (1/7) Checkstyle et PMD
  • 8. Beaucoup de duplications (2/7) PMD - CPD
  • 9. Peu de couverture par 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 bugs potentiels (5/7) Findbugs if (listeners == null) listeners.remove(listener); Sun java : JDK1.6.0, b105, sun.awt.x11.XMSelection lines 243-244
  • 12. Complexité trop élevée (6/7) JavaNCSS
  • 13. Design spaghetti (7/7) ?  Les produits références du marché   SonarJ   XDepend Structure101 Quelques librairies  JDepend  Architecture Rules  Macker
  • 14. 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
  • 15. 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  ...
  • 16. 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é
  • 17. Une demo vaut mieux qu'un long sermon
  • 18. Questions & Réponses & confessions Merci http://sonar.codehaus.org http://www.sonarsource.com