Hands on Sonar

29
Paris Novembre 2012 Hands on Sonar Par Alexandre Victoor et Mathias Kluba

description

 

Transcript of Hands on Sonar

Page 1: Hands on Sonar

Paris Novembre 2012

Hands on Sonar

Par Alexandre Victooret Mathias Kluba

Page 2: Hands on Sonar

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

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

Plan

• Introduction à la qualimétrie• Sonar in a Nutshell• Comment ça marche• Etendre Sonar (API)• Fonctionnalités avancées

Page 5: Hands on Sonar

Introduction à la qualimétrie

Qu’est ce que la qualimétrie?• C’est mesurer la qualité.

Page 6: Hands on Sonar

Introduction à la qualimétrie

Qu’est ce que la qualité d’un logiciel ?• Robustesse• Maintenance• Evolutivité• Performance• Sécurité

Page 7: Hands on Sonar

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

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

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

Introduction à la qualimétrie

Comment mesurer la qualité ?

Page 11: Hands on Sonar

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

Introduction à la qualimétrie

Résultat des testsSolution: corriger les tests

Page 13: Hands on Sonar

Introduction à la qualimétrie

Couverture du codepar les testsSolution: rédiger plus de tests

Page 14: Hands on Sonar

Introduction à la qualimétrie

DuplicationSolution: factoriser

Page 15: Hands on Sonar

Introduction à la qualimétrie

Complexité cyclomatiqueSolution: SoC, découper en plus petites méthodes

CC = 11

Page 16: Hands on Sonar

Introduction à la qualimétrie

Convention de nommageSolution: respecter UNE convention (peu importe laquelle)

Page 17: Hands on Sonar

Introduction à la qualimétrie

Bugs potentielsSolution: corriger les bugs

Page 18: Hands on Sonar

Introduction à la qualimétrie

Erreurs de designSolution: SRP, réduire le LCOM, découpler

Page 19: Hands on Sonar

Sonar le Free de la qualimétrie

Page 20: Hands on Sonar

Sonar in a Nutshell

Page 21: Hands on Sonar

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

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

Coment ça marche

Page 24: Hands on Sonar

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

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

Plugin API, batch side

• Sensor & SensorContext

• MavenPluginHandler

• Decorator

Page 27: Hands on Sonar

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

DI avec PICO

• Enregistrement des composants par une classe « plugin »

• Injection par constructeur

• Utilisation d’interfaces de marquage

Page 29: Hands on Sonar

Fonctionnalités évoluées

• Filtres

• Dashboards

• Plans d’actions