soirée qualité logicielle avec sonar
DESCRIPTION
TRANSCRIPT
Inspection Continue La chasse aux 7 péchés capitaux dudéveloppeur peut commencer !
Par Freddy [email protected]
JUG Elsass 2012
Une époque est révolue
Le savant génial
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 !
C'est mon jouet !
La peur du changement…
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
Quel est notre mission ?
?
Faire du neuf avec du vieux
Tout est maintenance évolutive !
Création d'une application
Maintenance D'une l'application
Rien n'est plus important que le CodeMais le code n'est rien tout seul
Une époque est révolue
Développer pour les autres
Méthodologie
Transparence
Les outils évoluent tout comme nous
Makefile
Gestionnairede source
Gestionnairede projet technique
Gestionnairede tickets
IntégrationContinue
Refactoringdepuis l'IDE
VI / Emacs
Tests unitaires
InspectionContinue
Poussés par des exigencesGestionnaire de configuration
Aucune modification ne passe en production sans avoir été préalablement placée sous contrôle de version
L'ensemble cohérent des sources d'une version applicative doit pouvoir être retrouvé aisément dans le gestionnaire de source
Poussés par des exigencesIntégration continue
Le code contenu dans le gestionnaire de source doit pouvoir être compilé à tout instant et par n'importe qui
L'exécution des tests unitaires fait pleinement parti du processus de construction
La sortie du processus de construction est un livrable prêt à l'emploi
Si une des exigences n'est plus respectée, rien n'est plus important que de corriger l'anomalie
Poussés par des exigencesInspection Continue
Tout nouveau code doit être accompagné de tests unitaires
Aucune méthode ne doit excéder un seuil de complexité
Il ne doit pas exister de cycles entre packages ...
Rappel de bon sens
Assurer la traçabilité techniqueGestionnaire de configuration
Assurer la traçabilité fonctionnelle Gestionnaire de tickets
Assurer la stabilité du buildIntégration continue
Assurer la qualité du code sourceInspection Continue (Sonar)
Des étapes de maturité doivent être respectées
La fin ne justifie plus les moyens
Doing the right software
Doing the software right
Qu'est-ce qu'un code de qualité ?
« A well-written program is a program where the cost of implementing a feature
is constant throughout the program's lifetime. »
Itay Maman
Comment mesurer cette qualité ?
La dette technique
Les différents types de dette
Volontaire
Involontaire
Extrait de http://martinfowler.com/bliki/TechnicalDebtQuadrant.html
Imprudente Prudente
« C'est quoi des couches logicielles ? »
« Nous n'avons pas le tempsde faire de la conception. »
« Maintenant nous savonscomment nous aurions
du faire. »
« Nous devons livrer maintenant
et assumer les conséquences. »
Les 7 péchés capitauxdu développeur
Péchés
Dette technique
Les 7 péchés capitaux ?Appliqués au code source
? ? ? ? ? ? ?
Les 7 péchés capitauxAppliqués au code source
Duplications Mauvaise distribution de la complexité Mauvais Design Pas de tests unitaires Pas de respect des standards Bugs potentiels Pas ou trop de commentaires
Pour (re)trouver le droit chemin
Les 7 péchés capitauxAppliqués au code source
Duplications Mauvaise distribution de la complexité Mauvais Design Pas de tests unitaires Pas de respect des standards Bugs potentiels Pas ou trop de commentaires
Code dupliqué
Que choisir entre la peste et le choléra ?
Once and only once (Kent Beck)
Tout code dupliqué est une opportunité pour élever le niveau d'abstraction et étoffer la richesse
du design
Avant tout une histoire de bon sens
Avez-vous deux processus pour Passer en production une nouvelle version
applicative ? Soumettre un appel d'offre ? Recruter un collaborateur ?
Les 7 péchés capitauxAppliqués au code source
Duplications Mauvaise distribution de la complexité Mauvais Design Pas de tests unitaires Pas de respect des standards Bugs potentiels Pas ou trop de commentaires
Mauvaise distribution de la complexitéQu'est-ce que la complexité cyclomatique ?
Mauvaise distribution de la complexité
Vaut-il mieux : 1 méthode d'une complexité de 30 10 méthodes d'une complexité de 3
La complexité se gère à tous les étages
Méthode Classe Package Module
Règle d'or : Une méthode ou une classe n'est jamais trop petite
Les 7 péchés capitauxAppliqués au code source
Duplications Mauvaise distribution de la complexité Mauvais Design Pas de tests unitaires Pas de respect des standards Bugs potentiels Pas ou trop de commentaires
Mauvais design
Quel package/classe est responsable de quoi ?
Comportant deux niveaux d'abstraction
Les couches d'architectureLes cycles apparaissent comme le nez au milieu de figure
Les 7 péchés capitauxAppliqués au code source
Duplications Mauvaise distribution de la complexité Mauvais Design Pas de tests unitaires Pas de respect des standards Bugs potentiels Pas ou trop de commentaires
Peu ou pas d'utilisation des tests unitaires
Merci d'ajouter un nouveau cas et d'éviter toute régression bien évidemment...
Un code sans tests unitaires est soit
Du code jetable Du code dont le coût d'ajout d'une
fonctionnalité et des régressions associées est sans importance
Du code d'une pure application CRUD (Create Read Update Delete)
Du code legacy dont la piètre qualité entraine un coût d'écriture et de maintenance des tests unitaires trop élevé
L'effet boule de neige du TDD
Raisonnement en terme de contrat Donc en terme de responsabilité (SRP) Expressivité du vocabulaire
Approche itérative et incrémentale au niveau le plus fin Méthodes peu complexes Linéarité des développements et donc meilleuer
prédictibilité des délais
Les 7 péchés capitauxAppliqués au code source
Duplications Mauvaise distribution de la complexité Mauvais Design Pas de tests unitaires Pas de respect des standards Bugs potentiels Pas ou trop de commentaire
Non respect des standards
La gestion des exceptions
Taille verticale et horizontale d'un fichier
Quel traitement réservez-vous aux emails qui ne tiennent pas sur un écran ?
Les 7 péchés capitauxAppliqués au code source
Duplications Mauvaise distribution de la complexité Mauvais Design Pas de tests unitaires Pas de respect des standards Bugs potentiels Pas ou trop de commentaires
Bugs potentiels
if (listeners == null) listeners.remove(listener);
Sun java : JDK1.6.0, b105, sun.awt.x11.XMSelection lines 243-244
Les 7 péchés capitauxAppliqués au code source
Duplications Mauvaise distribution de la complexité Mauvais Design Pas de tests unitaires Pas de respect des standards Bugs potentiels Pas ou trop de commentaires
Pas ou trop de commentaires
Expressivité du vocabulaireVersus densité des commentaires
La javadoc : un commentaire particulier
L'utilisation doit être limitée aux API La Javadoc s'adresse en priorité à des
consommateurs et non aux équipes en charge de la maintenance évolutive
Un commentaire doit être utileOu ne pas être
Pour amplifier l'importance d'une logique
Pour apporter une vision dynamique
Quelques anti-patterns
La mission de Sonar
Permettre de déclarer ouverte la chasse aux
7 péchés capitaux
Sonar à cœur ouvert
Code source
Java,Cobol, VB,PL/SQL,Flex, C, ...
Code source
Java,Cobol, VB,PL/SQL,Flex, C, ...
Sonar Runner Sonar Runner Checkstyle
SquidJacoco
PMD / CPD
SonarDB
Sonar web interfaceSonar web interface
1
23
1-
2- http://sonar
4
Findbugs
Sonar EclipseSonar Eclipse
JUnit
mvn sonar:sonar orant sonar orsonar-runner
5
Quelques chiffres
X?,000 instances dans le monde
5,000+ téléchargements par mois
1,000+ abonnés aux mailing lists
50 plugins dans la forge
15 releases de la plateforme en 2 ans