Sonar 2.0 au GenevaJUG par Freddy Mallet

35
La chasse aux 7 péchés capitaux peut commencer Par Freddy Mallet [email protected] Geneva JUG le 23 Février 2010

description

Slides de la présentation de Sonar 2.0 sur les 7 péchés capitaux au GenevaJUG le 23 février 2010. La sortie de la version 2.0 de la plateforme Open Source Sonar est l'occasion de revenir et d'échanger sur l'un des plus jeunes métier du monde: Développeur logiciel. Après de nombreuses générations d'autodidactes, de passionnés, qu'est qu'être développeur professionnel aujourd'hui, quels sont nos responsabilités et nos défis ? Le principal héritage légué par un développeur et plus globalement par une équipe de développement est son code source. La principale qualité attendue d'un code source est est sa capacité à permettre d'accueillir le changement à moindre coût. Quels sont donc les critères d'évaluation de cette qualité du code source ? Présentation faite par Freddy Mallet www.sonarsource.com www.genevajug.ch

Transcript of Sonar 2.0 au GenevaJUG par Freddy Mallet

Page 1: Sonar 2.0 au GenevaJUG par Freddy Mallet

La chasse aux 7 péchés capitauxpeut commencer

Par Freddy [email protected]

Geneva JUG le 23 Février 2010

Page 2: Sonar 2.0 au GenevaJUG par Freddy Mallet

Une époque est révolue

Page 3: Sonar 2.0 au GenevaJUG par Freddy Mallet

Le savant génial

Page 4: Sonar 2.0 au GenevaJUG par Freddy Mallet

Capitaine Flam est parmi nous

Au fin fond de l'Univers, à des années et des années-lumière de la Terre,Veille celui que le gouvernement intersidéral appelle quand il n'est plusCapable de trouver une solution à ses problèmes, quand il ne reste plusAucun espoir :

le Capitaine FLAM !

Page 5: Sonar 2.0 au GenevaJUG par Freddy Mallet

C'est mon jouet !

Page 6: Sonar 2.0 au GenevaJUG par Freddy Mallet

La peur du changement…

Page 7: Sonar 2.0 au GenevaJUG par Freddy Mallet

Quand l'industrialisation s'en mêle

Projet géré sous contrôleur de version

Projet sous intégration continue

Projet avec traçabilité technique / fonctionnelle

Page 8: Sonar 2.0 au GenevaJUG par Freddy Mallet

Quel est notre mission ?

?

Page 9: Sonar 2.0 au GenevaJUG par Freddy Mallet

Faire du neuf avec du vieux

Page 10: Sonar 2.0 au GenevaJUG par Freddy Mallet

Tout est maintenance évolutive !

Création d'une application

Maintenance D'une l'application

Page 11: Sonar 2.0 au GenevaJUG par Freddy Mallet

Une époque est révolue

Page 12: Sonar 2.0 au GenevaJUG par Freddy Mallet

Développer pour les autres

Page 13: Sonar 2.0 au GenevaJUG par Freddy Mallet

Méthodologie

Page 14: Sonar 2.0 au GenevaJUG par Freddy Mallet

Transparence

Page 15: Sonar 2.0 au GenevaJUG par Freddy Mallet

Les outils évoluent tout comme nous

Makefile

Gestionnairede source

Gestionnairede projet technique

Gestionnairede tickets

IntégrationContinue

Refactoringdepuis l'IDE

VI / Emacs

Tests unitaires

InspectionContinue

Page 16: Sonar 2.0 au GenevaJUG par Freddy Mallet

Inspection Continue

« A well-written program is a program where the cost of implementing a feature

is constant throughout the program's lifetime. »

Itay Maman

Page 17: Sonar 2.0 au GenevaJUG par Freddy Mallet

Comment la mesurer cette qualité ?

Page 18: Sonar 2.0 au GenevaJUG par Freddy Mallet

La dette technique

Page 19: Sonar 2.0 au GenevaJUG par Freddy Mallet

Les 7 péchés capitauxDu développeur

Péchés

Dette technique

Page 20: Sonar 2.0 au GenevaJUG par Freddy Mallet

Les 7 péchés capitaux ?Appliqués au code source

? ? ? ? ? ? ?

Page 21: Sonar 2.0 au GenevaJUG par Freddy Mallet

Code dupliqué

Que choisir entre la peste et le choléra ?

Page 22: Sonar 2.0 au GenevaJUG par Freddy Mallet

Mauvaise distribution de la complexité

Vaut-il mieux : 1 méthode d'une complexité de 30 10 méthodes d'une complexité de 3

Page 23: Sonar 2.0 au GenevaJUG par Freddy Mallet

Mauvais design

Quel package/classe est responsable de quoi ?

Page 24: Sonar 2.0 au GenevaJUG par Freddy Mallet

Bugs potentiels

if (listeners == null) listeners.remove(listener);

Sun java : JDK1.6.0, b105, sun.awt.x11.XMSelection lines 243-244

Page 25: Sonar 2.0 au GenevaJUG par Freddy Mallet

Peu ou pas d'utilisation des tests unitaires

Merci d'ajouter un nouveau cas et d'éviter toute régression bien évidemment.

Page 26: Sonar 2.0 au GenevaJUG par Freddy Mallet

Non respect des standards

Page 27: Sonar 2.0 au GenevaJUG par Freddy Mallet

Pas ou trop de commentaires

Page 28: Sonar 2.0 au GenevaJUG par Freddy Mallet

Les 7 péchés capitauxAppliqués au code source

Mauvaise distribution de la complexité Code dupliqué Mauvais design Existence de bugs potentiels Mauvaise couverture par les tests unitaires, ...

Non respect des standards de programmation Pas ou trop de commentaires

Page 29: Sonar 2.0 au GenevaJUG par Freddy Mallet

La mission de Sonar

Permettre de déclarer ouverte la chasse aux

7 péchés capitaux

Page 30: Sonar 2.0 au GenevaJUG par Freddy Mallet

La mission de Sonar

Permettre à tous d'augmenter la capacité à faire du neuf

avec du vieux

Ou plus sérieusement

Page 31: Sonar 2.0 au GenevaJUG par Freddy Mallet

Sonar à coeur ouvert

SourceCode

SourceCode

Sonar Maven Plugin Sonar Maven Plugin

Checkstyle

Squid SurefireCobertura

PMD ChangelogFindbugs

SonarDB

Sonar web interfaceSonar web interface

Aggregator& Analyser

Aggregator& Analyser

1

23

5

1 - mvn sonar

2 - http://sonar4

Page 32: Sonar 2.0 au GenevaJUG par Freddy Mallet

Une demo

Page 33: Sonar 2.0 au GenevaJUG par Freddy Mallet

D'une plateforme à un écosystème

35 plugins Intégration avec Hudson, Bamboo, Anthillpro,

Jira, SonarJ, Structure101 Sonar IDE (Evgeny Mandrikov)

IDEA, Eclipse (, Netbeans) Gestion de la sécurité Couverture de nouveaux langages en cours ...

Page 34: Sonar 2.0 au GenevaJUG par Freddy Mallet

Pour (re)trouver le droit chemin

Page 35: Sonar 2.0 au GenevaJUG par Freddy Mallet

Questions & Réponses

Merci http://sonar.codehaus.org

http://www.sonarsource.com