Hands on Sonar

930 vues

Publié le

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
930
Sur SlideShare
0
Issues des intégrations
0
Intégrations
9
Actions
Partages
0
Téléchargements
30
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Hands on Sonar

  1. 1. Paris Novembre 2012 Hands on Sonar Par Alexandre Victoor et Mathias Kluba
  2. 2. Qui sommes nous?Mathias Kluba (FastConnect)Expert .Net et Java, créateur de NDeps ;)@mathiasklubaAlexandre Victoor (SGCIB)Contributeur principal du plugin Sonar pour .Net@alex_victoor
  3. 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. 4. Plan• Introduction à la qualimétrie• Sonar in a Nutshell• Comment ça marche• Etendre Sonar (API)• Fonctionnalités avancées
  5. 5. Introduction à la qualimétrieQu’est ce que la qualimétrie?• C’est mesurer la qualité.
  6. 6. Introduction à la qualimétrieQu’est ce que la qualité d’unlogiciel ?• Robustesse• Maintenance• Evolutivité• Performance• Sécurité
  7. 7. Introduction à la qualimétrieQu’est ce que la qualité d’un logiciel ?selon SQALE (http://www.sqale.org/)• Testability• Reliability• Changeability• Efficiency• Security• Maintenability• Portability• Reusability
  8. 8. Introduction à la qualimétriePourquoi 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. 9. Introduction à la qualimétriePourquoi 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 ?
  10. 10. Introduction à la qualimétrieComment mesurer la qualité ?
  11. 11. Introduction à la qualimétrieComment 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. 12. Introduction à la qualimétrieRésultat des testsSolution: corriger les tests
  13. 13. Introduction à la qualimétrieCouverture du codepar les testsSolution:rédiger plus de tests
  14. 14. Introduction à la qualimétrieDuplicationSolution: factoriser
  15. 15. Introduction à la qualimétrieComplexité cyclomatiqueSolution: SoC, découper en plus petites méthodes CC = 11
  16. 16. Introduction à la qualimétrieConvention de nommageSolution: respecter UNE convention(peu importe laquelle)
  17. 17. Introduction à la qualimétrieBugs potentielsSolution: corriger les bugs
  18. 18. Introduction à la qualimétrieErreurs de designSolution: SRP, réduire le LCOM, découpler
  19. 19. Sonar le Free de la qualimétrie
  20. 20. Sonar in a Nutshell
  21. 21. Coment ça marcheQu’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.
  22. 22. Coment ça marcheQu’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
  23. 23. Coment ça marche
  24. 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. 25. REST API• Ressources sonar ?• Metrics et measures ?• Exemples de requêtes: les eventshttp://nemo.sonarsource.org/api/events?resource=org.codehaus.sonar:son ar&categories=Alert,Version&fromDate=2012-07-01&toDate=2012-08- 31
  26. 26. Plugin API, batch side• Sensor & SensorContext• MavenPluginHandler• Decorator
  27. 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. 28. DI avec PICO• Enregistrement des composants par une classe « plugin »• Injection par constructeur• Utilisation d’interfaces de marquage
  29. 29. Fonctionnalités évoluées• Filtres• Dashboards• Plans d’actions

×