Hands on Sonar
-
Upload
mathias-kluba -
Category
Technology
-
view
779 -
download
0
description
Transcript of Hands on Sonar
Paris Novembre 2012
Hands on Sonar
Par Alexandre Victooret Mathias Kluba
Qui sommes nous?
Mathias Kluba (FastConnect)Expert .Net et Java, créateur de NDeps ;)
@mathiaskluba
Alexandre Victoor (SGCIB) Contributeur principal du plugin Sonar pour .Net
@alex_victoor
Pourquoi Sonar
• La crise fait rage, il faut réduire les coûts
• mais souvent les projets vieillissent mal
• et accumulent de la dette technique
Plan
• Introduction à la qualimétrie• Sonar in a Nutshell• Comment ça marche• Etendre Sonar (API)• Fonctionnalités avancées
Introduction à la qualimétrie
Qu’est ce que la qualimétrie?• C’est mesurer la qualité.
Introduction à la qualimétrie
Qu’est ce que la qualité d’un logiciel ?• Robustesse• Maintenance• Evolutivité• Performance• Sécurité
Introduction à la qualimétrie
Qu’est ce que la qualité d’un logiciel ?selon SQALE (http://www.sqale.org/)• Testability• Reliability• Changeability• Efficiency• Security• Maintenability• Portability• Reusability
Introduction à la qualimétrie
Pourquoi mesurer la qualité?• Avoir plus d’information
pour prendre des décisions• Suivre son évolution:
dégradation ou amélioration• Transparence• Réduire la « dette technique »
et se fixer des objectifs réalistes• Justifier le refactoring
Introduction à la qualimétrie
Pourquoi mesurer la qualité?• On monitore l’état du logiciel en production:
– Erreurs, warnings, …– consommation CPU/RAM, …
• Et pourquoi pas monitorer l’état du logiciel avant:– Est-ce que ça compile?– Est-ce qu’il a de régressions? (tests unitaires)– Est-ce que la qualité se dégrade ?
Introduction à la qualimétrie
Comment mesurer la qualité ?
Introduction à la qualimétrie
Comment mesurer la qualité ?• Résultat des tests• Couverture du code par les tests• Duplication• Complexité cyclomatique• Convention de nommage• Bugs potentiels• Erreurs de design
Introduction à la qualimétrie
Résultat des testsSolution: corriger les tests
Introduction à la qualimétrie
Couverture du codepar les testsSolution: rédiger plus de tests
Introduction à la qualimétrie
DuplicationSolution: factoriser
Introduction à la qualimétrie
Complexité cyclomatiqueSolution: SoC, découper en plus petites méthodes
CC = 11
Introduction à la qualimétrie
Convention de nommageSolution: respecter UNE convention (peu importe laquelle)
Introduction à la qualimétrie
Bugs potentielsSolution: corriger les bugs
Introduction à la qualimétrie
Erreurs de designSolution: SRP, réduire le LCOM, découpler
Sonar le Free de la qualimétrie
Sonar in a Nutshell
Coment ça marche
Qu’est ce que Sonar ?• Un « client » qui analyse votre projet (Java,
C#, etc.)• Un portail qui affiche le résultat des
analysesMais aussi• Un plugin Eclipse• Un plugin Jenkins/Hudson• Etc.
Coment ça marche
Qu’est ce que Sonar ?• Un projet OpenSource, gratuit• Codé en Java• Disponible sur
https://github.com/SonarCommunity
• Avec une mailling-list [email protected]
• Maintenue par la société SonarSource• Qui réalise le support et des plugins
commerciaux
Coment ça marche
Etendre Sonar
• Une API REST pour– Injecter des indicateurs manuels– Ou business– générer des rapports
• Pour aller plus loin une API Plugin – Batch side: les capteurs– Server side: l’IHM– De la glue avec Pico
REST API
• Ressources sonar ?
• Metrics et measures ?
• Exemples de requêtes: les events
http://nemo.sonarsource.org/api/events?resource=org.codehaus.sonar:sonar&categories=Alert,Version&fromDate=2012-07-01&toDate=2012-08-31
Plugin API, batch side
• Sensor & SensorContext
• MavenPluginHandler
• Decorator
Plugin API, server side
• Composants liés aux langages, aux règlesProfileImporter, RulesRepository…
• GWTDocumenté mais bientôt deprecated
• RAILSSimple, dynamique mais…
DI avec PICO
• Enregistrement des composants par une classe « plugin »
• Injection par constructeur
• Utilisation d’interfaces de marquage
Fonctionnalités évoluées
• Filtres
• Dashboards
• Plans d’actions