SonarQube : une autre vision de votre logiciel



Documents pareils
TD/TP 1 Introduction au SDK d Android

Projet de développement

Projet de Java Enterprise Edition

JOnAS Day 5.1. Outils de développements

Environnement de Développement Outils Open-Source d'integration Continue. Exemple de Mise en Oeuvre

Cours Plugin Eclipse. Université Paris VI / Parcours STL / Master I Pierre-Arnaud Marcelot - Iktek - pamarcelot@iktek.com

Java à Murex: un retour d'expérience. Jean-Pierre DACHER & Craig MORRISON

Environnements de développement (intégrés)

L Intégration Continue & Agilité

Hudson Serveur d Intégration Continue. Adrien Lecharpentier IR3 Ingénieurs2000, Université de Marne la Vallée

Groupe Eyrolles, 2004 ISBN :

Loïc Rossignol Ingénieur Consultant

Gestion des utilisateurs dans un environnement hétérogène

Auto-évaluation Aperçu de l architecture Java EE

Programmation Mobile Android Master CCI

Logiciel Libre & qualité. Présentation

Développer des Applications Internet Riches (RIA) avec les API d ArcGIS Server. Sébastien Boutard Thomas David

Livrer chaque jour ce qui est prêt! Points clés du développement d un produit avec une livrasion par jour.

Journée IJD. Moussa Tari Bako Bachir. 25 juin 2012 ARLES/INRIA. Introduction Travail Chez ARLES

ÉVALUATION DE LA MAINTENABILITÉ DE S3MDSS AVEC L OUTIL SONAR

FOURNIR UN SERVICE DE BASE DE DONNÉES FLEXIBLE. Database as a Service (DBaaS)

Installation et prise en main

Plan global Outils de développement et compilation. Plan. Objectifs des outils présentés. IDE, GCC/Clang, ASAN, perf, valgrind, GDB.

Analyse comparative entre différents outils de BI (Business Intelligence) :

Vérifier la qualité de vos applications logicielle de manière continue

OUAPI Guide d installation Outil d administration de parc informatique. Documentation d installation et de paramétrage

Marie-Christine Spengler

Construction et déploiement d applications Java avec Maven, Archiva, Groovy et Jenkins

Rendez-vous la liberté avec Rational Quality Manager

BIRT (Business Intelligence and Reporting Tools)

Clément DAVID, Pierrick KNECHT, Pierre LALLEMENT, Ronan PRESLE

Valorisez vos actifs logiciels avec Rational Asset Manager. Jean-Michel Athané, Certified IT Specialist IBM Rational Software

Usine de développement : étude comparative

Formation : Langues : Types d Intervention et Secteurs d Activité :

Projet de développement. Introduction à Eclipse. Application à votre projet. Philippe Collet. Organisation. Cours 1 : principes généraux - svn

Les technologies du Big Data

AVRIL Au delà de Hadoop. Panorama des solutions NoSQL

Cours en ligne Développement Java pour le web

INGÉNIEUR - DÉVELOPPEUR EXPÉRIMENT É PHP - MAGENT O. 30 ans - 6 ans d'expérience

A R C H I VA G E / A B A S C A N

INGÉNIEUR LOGICIEL JAVAEE / GROOVY 8 ANS D EXPÉRIENCE

<Insert Picture Here>ApExposé. Cédric MYLLE 05 Février Exposé Système et Réseaux : ApEx, Application Express d Oracle

CAS, un SSO web open source. 14h35-15h25 - La Seine A

Release Notes POM v5

XP DAY mai. Erwan Alliaume Nicolas Le Coz

Piwik L'alternative Open Source en web analytique - Version numérique

Enterprise Scrum Organisation des développements chez exo. Agile Tour Rennes 2010 / 10 / 07

ECLIPSE ET PDT (Php development tools)

Dossier Technique. Détail des modifications apportées à GRR. Détail des modifications apportées à GRR Le 17/07/2008. Page 1/10

Point sur les solutions de développement d apps pour les périphériques mobiles

Catalogue Formation «Vanilla»

Table des matières Avant-propos... V Scripting Windows, pour quoi faire?... 1 Dans quel contexte?

Un serveur d'archivage

Programmation C. Apprendre à développer des programmes simples dans le langage C

les techniques d'extraction, les formulaires et intégration dans un site WEB

DEMARREZ RAPIDEMENT VOTRE EVALUATION

L'agilité appliquée à nous-mêmes. Philippe Krief, PhD Development Manager IBM France Lab

Architecture client riche Evolution ou révolution? Thomas Coustenoble IBM Lotus Market Manager

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

Tutoriel QSOS. Version /02/2013

Hassene BELGACEM. Expériences Professionnelles. JEE architect / Technical leader. Ingénieur Informatique. Cycle Préparatoire

Développement de plug-ins Eclipse en contexte agile

Construire des plug-ins pour SAS Management Console SAS 9.1

Suite Jedox La Business-Driven Intelligence avec Jedox

Cursus 2013 Déployer un Content Management System

Automatisation de l administration système

Serveur de travail collaboratif Michaël Hoste -

Programmation Web. Madalina Croitoru IUT Montpellier

Quelques mots à propos de Sage

Joomla! Création et administration d'un site web - Version numérique

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Intégration du Web 2.0 dans les solutions IBM

Plateforme de capture et d analyse de sites Web AspirWeb

FileMaker Server 12. publication Web personnalisée avec XML

IBM Tivoli Compliance Insight Manager

Introduction à. Oracle Application Express

Modèle de cahier des charges pour un appel d offres relatif à une solution de gestion des processus métier (BPM)

PRIMAVERA P6 ENTERPRISE PROJECT PORTFOLIO MANAGEMENT WEB SERVICES

NOVA BPM. «Première solution BPM intégr. Pierre Vignéras Bull R&D

Squale Le portail qualimétrie open-source

WEB15 IBM Software for Business Process Management. un offre complète et modulaire. Alain DARMON consultant avant-vente BPM

Panorama des solutions analytiques existantes

FileMaker Server 11. Publication Web personnalisée avec XML et XSLT

1 Actuate Corporation de données. + d analyses. + d utilisateurs.

DESCRIPTION DES PRODUITS ET MÉTRIQUES

Solution d intelligence marketing et CRM

Outils de traitements de logs Apache

TP WEBSERVICES. 1 Pré-requis. 1.1 L environnement de développement. 1.2 Les librairies nécessaires 1.3 SOAPUI

ANNEXE 2 DESCRIPTION DU CONTENU DE L OFFRE BUSINESS INFORMATION AND ANALYSIS PACKAGE

4. SERVICES WEB REST 46

Extensions, Documentation, Tutoriels, Astuces

Catalogue Formations Jalios

Service des stages et du placement - secteur placement ANNEE 2013 TITRES DE POSTES OFFERTS AUX DIPLOMES DE GENIE INFORMATIQUE

PHP 5.4 Développez un site web dynamique et interactif

La gestion de la performance applicative dans des environnements complexes et distribués

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Utiliser un CMS: Wordpress

Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

Serena Software. Damien Terrien Solution Architect

Chapitre I Notions de base et outils de travail

Transcription:

SonarQube : une autre vision de votre logiciel Dimitri Durieux Chef de projet Mons, 19 mars 2015 Centre d Excellence en Technologies de l Information et de la Communication

Qui suis-je? Chef de projet Master en sciences informatiques (UMons 2012) Dimitri Durieux Expertises: Analyse de logiciels & Qualité Produit Safety critical system Java & Scala Twitter : @didurieux 2

Contenu 1. Qualité logicielle 2. SonarQube en quelques mots 3. Analyse d un projet 4. Interprétation des résultats 5. Plugins et extensions 3

Qualité logicielle 4

Qualité logicielle Qualité du processus logiciel Sur base des standards de qualité (ISO 9000, ISO 15504) Quelle organisation est mise en place Quelle méthode de développement est utilisée Quels outils sont utilisés Quelles sont les bonnes pratiques mises en œuvre Quelle est la maturité de l équipe de développement Qualité du produit logiciel Sur base des standards de qualité (ISO 9126, ISO 25000) Quelles caractéristiques sont suffisamment couvertes Fiabilité? Sécurité? Maintenabilité? Transférabilité? Performance? Adéquation fonctionnelle? 5

Métrique Métriques Mesure un élément Objective ce qui est observé Comparable Appliquée au code Ex.: Nombre de lignes de code d une classe M2(B) M2(A) A M1(A) B M1(B) M1(A) < M1(B) M2(B) < M2 (A) 6

Evaluation de la qualité logicielle (SQALE) Qualité Réutilisabilité Maintenabilité Variabilité Testabilité Portabilité Sécurité Performance Fiabilité Modularité Compréhensib ilité Variabilité de l architecture Testabilité de l intégration Portabilité liée au langage Sécurité liée à l utilisateur Performance liée à la ROM Tolérance au faute Stabilité Lisibilité Variabilité de la logique Testabilité des units Portabilité liée à la time zone Sécurité liée à l OS Performance liée à la RAM Fiabilité liée à l architecture Variabilité des données Portabilité liée au hardware Sécurité liée aux instructions Performance liée à au CPU Fiabilité liée au ressource Portabilité liée au application externe Fiabilité liée à la synchronisation Portabilité liée au compilateur Fiabilité liée aux instructions Portabilité liée à l OS Fiabilité liée à la logique Fiabilité liée aux données 7

Evaluation de la qualité logicielle (SQALE) Qualité Réutilisabilité Maintenabilité Variabilité Testabilité Portabilité Sécurité Performance Fiabilité Modularité Compréhensib ilité Variabilité de l architecture Testabilité de l intégration Portabilité liée au langage Sécurité liée à l utilisateur Performance liée à la ROM Tolérance au faute Stabilité Lisibilité Variabilité de la logique Axe coût Variabilité des données Testabilité des units Portabilité liée à la time zone Portabilité liée au hardware Sécurité liée à l OS Sécurité liée aux instructions Performance liée à la RAM Axe utilisateur Performance liée à au CPU Fiabilité liée à l architecture Fiabilité liée au ressource Portabilité liée au application externe Fiabilité liée à la synchronisatio n Portabilité liée au compilateur Fiabilité liée aux instructions Portabilité liée à l OS Fiabilité liée à la logique Fiabilité liée aux données 8

Evaluation de la qualité logicielle (SQALE) Pas de double pointeur Compréhensibilité Pas de goto, break Pas de continue Indentation consistante Lisibilité Pas de code mis en commentaire Fiabilité liée aux données Pas d utilisation de variable noninitialisée Types explicitement déclaré 9

Evaluation de la qualité logicielle (SQALE) Les violations n ont pas de sens pour gérer la qualité Besoin d un point de vue : risque Besoin d agrégation Risque évalué sur base du rapport entre : Le coût de développement La dette technique 10

Dette technique Metaphor referring to the eventual consequences of poor or evolving software architecture and software development within a codebase. Technical View TD Unmanaged TD Managed Technical Debt Business View Time Direct Relationship Return On Invest TD Unmanaged TD Managed Time 11

Analyseurs de code 12

Analyseurs de code 13

SonarQube en quelques mots 14

Introduction Outil de gestion de la qualité de code Tableau de bord pas un analyseur de code FR + EN + (8 Langues) Flexible et orienté plugins 7 catégories Plus de 40 plugins officiels Open source (LGPLv3) Quelques plugins commerciaux 15

Fonctionnalités clés Possibilité élevée de personnalisation de l interface 20 langages Visualisation de l évolution Modèle de qualité et Dette technique Plan de remédiations Drilldown jusqu à la ligne 16

Langages vs TIOBE 17

Fonctionnalités Intégration dans l infrastructure : Build (Maven, Ant) IDE (Eclipse, Intellij IDEA) VCS (SVN, Git, Mercurial) Intégration continue (Jenkins, Hudson) Outils externes : Bugtracker (Mantis, Jira, Redmine) HP Fortify Utilisation de Sonar (Google Analytics et Piwik) 18

Fonctionnalités Gestion de l authentification et autorisations : LDAP Active Directory Single Sign On 2 Analyseurs disponibles : Spécifique à SonarQube : SonarQubeRunner Maven 19

Installation Télécharger les archives de SonarQube et SonarQubeRunner sur http://www.sonarqube.org/downloads/ Extraire les archives dans l endroit souhaité 20

Analyse d un projet 21

Aperçu global Nouvelle version Prétraitements des sources Configuration de l analyse Exécution Résultats dans SonarQube 22

Prétraitement des sources Le prétraitement des sources est l étape la plus importante Pour identifier les éléments susceptibles de causer des bruits dans l analyse Les éléments à identifier sont : Le code source généré Les librairies externes Les librairies intégrées 23

Configuration de l analyse Configuration de SonarQube Profils de qualité Paramètres par défaut Configuration de Sonarqube-runner Accès à la base de données Accès à la plate-forme des règles Configuration du projet Spécificité du projet Profil de qualité pour le projet 24

Configuration de l analyse La configuration d une analyse consiste en la création d un fichier «sonarproject.properties» à la racine des sources à analyser. Ce fichier contient la configuration de l analyse sur base d un ensemble de couples clé-valeur. Par exemple, pour le paramètre «sonar.projectname» valant «Nemo», on obtient : sonar.projectname=nemo Certaines valeurs peuvent être une liste de valeurs, par exemple, si «sonar.sources» vaut la liste «src/main/java» et «src/main/webapp», on obtient : sonar.sources=src/main/java,src/main/webapp 25

Paramètres de configuration Il y a des paramètres globaux et des paramètres spécifiques Les paramètres spécifiques dépendent du langage Les paramètres globaux sont soit obligatoires soit optionnels => Nous présenterons les paramètres globaux pertinents suivis des paramètres spécifiques au langage PHP 26

Exemple # Required metadata sonar.projectkey=be.cetic:qwuid sonar.projectname=quality Web Unified Interfaced Dashboard sonar.projectversion=0.1 # Comma-separated paths to directories with sources (required) sonar.sources=protected/models,protected/controlles,protected/modules/users # Language sonar.language=php # To deactivate features related to unit tests execution and coverage sonar.dynamicanalysis=false # Encoding of the source files sonar.sourceencoding=utf-8 # specific for analysers sonar.phppmd.skip=false sonar.phpcodesniffer.skip=false sonar.phpdepend.skip=false sonar.phpunit.skip=true sonar.phpunit.coverage.skip=true sonar.phppmd.analyzeonly=false sonar.phpcodesniffer.analyzeonly=false sonar.phpdepend.analyzeonly=false sonar.phpunit.analyzeonly=true 27

Exécution de l analyse Dans le répertoire contenant le fichier «sonar-project.properties», exécutez la commande suivante : sonar-runner Si l exécution se passe correctement, vous devriez voir le message suivant : INFO: ------------------------------------------------------------------------ INFO: EXECUTION SUCCESS INFO: ------------------------------------------------------------------------ Total time: 13.810s Final Memory: 7M/26M INFO: ------------------------------------------------------------------------ 28

Projet avec plusieurs modules (1) # Root project information sonar.projectkey=org.mycompany.myproject sonar.projectname=my Project sonar.projectversion=1.0 # Some properties that will be inherited by the modules sonar.sources=src # List of the module identifiers sonar.modules=module1,module2 module1.myproperty=value module2.myproperty=value 29

Projet avec plusieurs modules (2) # Root project information sonar.projectkey=org.mycompany.myproject sonar.projectname=my Project sonar.projectversion=1.0 # Some properties that will be inherited by the modules sonar.sources=src # List of the module identifiers sonar.modules=module1,module2 # Module 1 informations sonar.projectname=module 1 sonar.exclusions=blah, blah # Module 2 informations sonar.projectname=module 2 sonar.exclusions=blah, blah 30

Sous Maven La connexion à la DB sonar est réalisée dans le fichier settings.xml La configuration du projet (sonar-project.properties) est réalisée dans le fichier pom.xml Ajouter le tag «properties» Pour chaque paramètre clé-valeur (k,v), créer une balise dans le tag properties de la forme :<k>v</k> Pas besoin de copier : Le répertoire des sources Le nom du projet La clé du projet La version du projet Les modules (si Java) Lancement : mvn sonar:sonar 31

Exemple de pom.xml <?xml version="1.0" encoding="utf-8"?> <project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> </project> <modelversion>4.0.0</modelversion> <groupid>org.codehaus.sonar</groupid> <artifactid>example-java-maven</artifactid> <version>1.0-snapshot</version> <name>simple Java Maven Project</name> <properties> <project.build.sourceencoding>utf-8</project.build.sourceencoding> <sonar.language>java</sonar.language> </properties> 32

Interprétation des résultats 33

Page principale 34

Comparaison de versions ou d applications 35

Projet Apache Axis 36

Size & Complexity 37

Duplication 38

Duplication 39

Issues Drilldown 40

Issues Drilldown 41

Technical Debt 42

Technical Debt 43

TreeMap 44

TreeMap 45

TreeMap 46

Unit Tests 47

Hotspots 48

Remediation plan 49

Time Machine 50

Quality Profiles 51

Quality Profiles 52

Quality Gates 53

Quality Gates 54

Plugins et extensions 55

Plugins Définition : un plugin est un module externe enrichissant une application en fonctionnalités Il peut être activé et désactivé sans altérer les autres fonctionnalités Ce concept permet de dissocier un cœur d un ensemble de fonctionnalités périphériques et évolutives 56

Types de plugins Métriques additionnelles Cobertura, Mantis, PMD Outils du développeur Gouvernance PDF Report, SQALE Langages additionnels ABAP, C/C++, C#, Intégration Fortify, Jira, LDAP Langues Allemand, Grecque, Japonais Visualisation/reporting: SCM Stats, Tab Metric, Timeline 57

Gestionnaire de plugin 58

Exemple de plugins 59

Schéma d exécution HL Important à savoir : Le résultat est renvoyé qu à la fin! Les informations pour peupler les visualisations sont calculées lors de l analyse La suppression d une analyse ne met pas à jour les informations 60

Structure d un plugin Un plugin SonarQube est un ensemble d extensions Les extensions sont gérées dans une classe héritant de SonarPlugin Les extensions sont : ProjectBuilder : modification de la structure du projet Initializer : modification de la configuration d un module Sensor : Calcule les mesures et les violations Decorator : Extension appliquée sur chaque élément de l arbre d artefact (fichier, répertoire, module, projet) PostJob : ne modifie rien aux résultats. Pratique pour la génération de rapport Widget : Ajout de widget à l interface Autre outils notables : SourceImporter : Importation des sources dans l API Sonar SourceColorizer : Gestion de la colorization syntaxique RuleRepository : Gestion des règles additionnelles 61

Exécution d un plugin Pour chaque module : Bootstrapper Maven SonarRunner ProjectBuilders Initializer Sensors Decorators Persistance des résultats Sauvegarde des résultats sur SonarQube Postjobs 62

Ajouter une règle Ajouter une règle bête qui interdit l utilisation des méthodes Contenu du projet 63

Ajouter une règle 64

Ajouter une règle 65

Ajouter une règle 66

Ajouter une règle 67

Ajouter une règle 68

Ajouter un widget Les widgets sont des éléments Ruby On Rails Structure typique : 69

Ajouter un widget MyWidget.java My_widget.html.erb 70

Ajouter un widget 71

Ajouter un widget Exemple de requête : 72

Ajouter un widget 73

Conclusion 74

Conclusion Installation Simple Configuration l analyse dans un simple fichier Analyse 100% automatisable Dashboard riche et personnalisable Architecture flexible orientée plugin Open-Source! 75

Références http://www.sonarqube.org/ http://nemo.sonarqube.org/ http://linsolas.developpez.com/articles/java/qualite/sonar/ http://blog.xebia.fr/2008/10/29/controles-de-qualite-avec-sonar/ http://blog.excilys.com/2013/05/30/developper-ses-propres-regles-pmd-poursonar/ 76

Contacts Aéropole de Charleroi-Gosselies Bâtiment Éole Rue des Frères Wright, 29/3 B-6041 Charleroi Tel: +32.71.490.700 Fax: +32.71.490.799 info@cetic.be Dimitri Durieux R&D Engineer 071 490 767 0494 928 344 dimitri.durieux@cetic.be linkedin.com/company/cetic twitter.com/@cetic