hands on sonar
DESCRIPTION
TRANSCRIPT
![Page 1: Hands on Sonar](https://reader035.vdocuments.us/reader035/viewer/2022062307/55413342550346fc5c8b45b1/html5/thumbnails/1.jpg)
Paris Novembre 2012
Hands on Sonar
Par Alexandre Victooret Mathias Kluba
![Page 2: Hands on Sonar](https://reader035.vdocuments.us/reader035/viewer/2022062307/55413342550346fc5c8b45b1/html5/thumbnails/2.jpg)
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
![Page 3: Hands on Sonar](https://reader035.vdocuments.us/reader035/viewer/2022062307/55413342550346fc5c8b45b1/html5/thumbnails/3.jpg)
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
![Page 4: Hands on Sonar](https://reader035.vdocuments.us/reader035/viewer/2022062307/55413342550346fc5c8b45b1/html5/thumbnails/4.jpg)
Plan
• Introduction à la qualimétrie• Sonar in a Nutshell• Comment ça marche• Etendre Sonar (API)• Fonctionnalités avancées
![Page 5: Hands on Sonar](https://reader035.vdocuments.us/reader035/viewer/2022062307/55413342550346fc5c8b45b1/html5/thumbnails/5.jpg)
Introduction à la qualimétrie
Qu’est ce que la qualimétrie?• C’est mesurer la qualité.
![Page 6: Hands on Sonar](https://reader035.vdocuments.us/reader035/viewer/2022062307/55413342550346fc5c8b45b1/html5/thumbnails/6.jpg)
Introduction à la qualimétrie
Qu’est ce que la qualité d’un logiciel ?• Robustesse• Maintenance• Evolutivité• Performance• Sécurité
![Page 7: Hands on Sonar](https://reader035.vdocuments.us/reader035/viewer/2022062307/55413342550346fc5c8b45b1/html5/thumbnails/7.jpg)
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
![Page 8: Hands on Sonar](https://reader035.vdocuments.us/reader035/viewer/2022062307/55413342550346fc5c8b45b1/html5/thumbnails/8.jpg)
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
![Page 9: Hands on Sonar](https://reader035.vdocuments.us/reader035/viewer/2022062307/55413342550346fc5c8b45b1/html5/thumbnails/9.jpg)
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 ?
![Page 10: Hands on Sonar](https://reader035.vdocuments.us/reader035/viewer/2022062307/55413342550346fc5c8b45b1/html5/thumbnails/10.jpg)
Introduction à la qualimétrie
Comment mesurer la qualité ?
![Page 11: Hands on Sonar](https://reader035.vdocuments.us/reader035/viewer/2022062307/55413342550346fc5c8b45b1/html5/thumbnails/11.jpg)
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
![Page 12: Hands on Sonar](https://reader035.vdocuments.us/reader035/viewer/2022062307/55413342550346fc5c8b45b1/html5/thumbnails/12.jpg)
Introduction à la qualimétrie
Résultat des testsSolution: corriger les tests
![Page 13: Hands on Sonar](https://reader035.vdocuments.us/reader035/viewer/2022062307/55413342550346fc5c8b45b1/html5/thumbnails/13.jpg)
Introduction à la qualimétrie
Couverture du codepar les testsSolution: rédiger plus de tests
![Page 14: Hands on Sonar](https://reader035.vdocuments.us/reader035/viewer/2022062307/55413342550346fc5c8b45b1/html5/thumbnails/14.jpg)
Introduction à la qualimétrie
DuplicationSolution: factoriser
![Page 15: Hands on Sonar](https://reader035.vdocuments.us/reader035/viewer/2022062307/55413342550346fc5c8b45b1/html5/thumbnails/15.jpg)
Introduction à la qualimétrie
Complexité cyclomatiqueSolution: SoC, découper en plus petites méthodes
CC = 11
![Page 16: Hands on Sonar](https://reader035.vdocuments.us/reader035/viewer/2022062307/55413342550346fc5c8b45b1/html5/thumbnails/16.jpg)
Introduction à la qualimétrie
Convention de nommageSolution: respecter UNE convention (peu importe laquelle)
![Page 17: Hands on Sonar](https://reader035.vdocuments.us/reader035/viewer/2022062307/55413342550346fc5c8b45b1/html5/thumbnails/17.jpg)
Introduction à la qualimétrie
Bugs potentielsSolution: corriger les bugs
![Page 18: Hands on Sonar](https://reader035.vdocuments.us/reader035/viewer/2022062307/55413342550346fc5c8b45b1/html5/thumbnails/18.jpg)
Introduction à la qualimétrie
Erreurs de designSolution: SRP, réduire le LCOM, découpler
![Page 19: Hands on Sonar](https://reader035.vdocuments.us/reader035/viewer/2022062307/55413342550346fc5c8b45b1/html5/thumbnails/19.jpg)
Sonar le Free de la qualimétrie
![Page 20: Hands on Sonar](https://reader035.vdocuments.us/reader035/viewer/2022062307/55413342550346fc5c8b45b1/html5/thumbnails/20.jpg)
Sonar in a Nutshell
![Page 21: Hands on Sonar](https://reader035.vdocuments.us/reader035/viewer/2022062307/55413342550346fc5c8b45b1/html5/thumbnails/21.jpg)
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.
![Page 22: Hands on Sonar](https://reader035.vdocuments.us/reader035/viewer/2022062307/55413342550346fc5c8b45b1/html5/thumbnails/22.jpg)
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
![Page 23: Hands on Sonar](https://reader035.vdocuments.us/reader035/viewer/2022062307/55413342550346fc5c8b45b1/html5/thumbnails/23.jpg)
Coment ça marche
![Page 24: Hands on Sonar](https://reader035.vdocuments.us/reader035/viewer/2022062307/55413342550346fc5c8b45b1/html5/thumbnails/24.jpg)
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
![Page 25: Hands on Sonar](https://reader035.vdocuments.us/reader035/viewer/2022062307/55413342550346fc5c8b45b1/html5/thumbnails/25.jpg)
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
![Page 26: Hands on Sonar](https://reader035.vdocuments.us/reader035/viewer/2022062307/55413342550346fc5c8b45b1/html5/thumbnails/26.jpg)
Plugin API, batch side
• Sensor & SensorContext
• MavenPluginHandler
• Decorator
![Page 27: Hands on Sonar](https://reader035.vdocuments.us/reader035/viewer/2022062307/55413342550346fc5c8b45b1/html5/thumbnails/27.jpg)
Plugin API, server side
• Composants liés aux langages, aux règlesProfileImporter, RulesRepository…
• GWTDocumenté mais bientôt deprecated
• RAILSSimple, dynamique mais…
![Page 28: Hands on Sonar](https://reader035.vdocuments.us/reader035/viewer/2022062307/55413342550346fc5c8b45b1/html5/thumbnails/28.jpg)
DI avec PICO
• Enregistrement des composants par une classe « plugin »
• Injection par constructeur
• Utilisation d’interfaces de marquage
![Page 29: Hands on Sonar](https://reader035.vdocuments.us/reader035/viewer/2022062307/55413342550346fc5c8b45b1/html5/thumbnails/29.jpg)
Fonctionnalités évoluées
• Filtres
• Dashboards
• Plans d’actions