2. 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
3. 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
4. Plan
• Introduction à la qualimétrie
• Sonar in a Nutshell
• Comment ça marche
• Etendre Sonar (API)
• Fonctionnalités avancées
5. Introduction à la qualimétrie
Qu’est ce que la qualimétrie?
• C’est mesurer la qualité.
6. Introduction à la qualimétrie
Qu’est ce que la qualité d’un
logiciel ?
• Robustesse
• Maintenance
• Evolutivité
• Performance
• Sécurité
7. 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
8. 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
9. 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 ?
11. 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
12. Introduction à la qualimétrie
Résultat des tests
Solution: corriger les tests
13. Introduction à la qualimétrie
Couverture du code
par les tests
Solution:
rédiger plus de tests
21. 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 analyses
Mais aussi
• Un plugin Eclipse
• Un plugin Jenkins/Hudson
• Etc.
22. 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 dev@sonar.codehaus.org
• Maintenue par la société SonarSource
• Qui réalise le support et des plugins
commerciaux
24. 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
25. REST API
• Ressources sonar ?
• Metrics et measures ?
• Exemples de requêtes: les events
http://nemo.sonarsource.org/api/events?resource=org.codehaus.sonar:son
ar&categories=Alert,Version&fromDate=2012-07-01&toDate=2012-08-
31
27. Plugin API, server side
• Composants liés aux langages, aux règles
ProfileImporter, RulesRepository…
• GWT
Documenté mais bientôt deprecated
• RAILS
Simple, dynamique mais…
28. DI avec PICO
• Enregistrement des composants par une
classe « plugin »
• Injection par constructeur
• Utilisation d’interfaces de marquage