Your SlideShare is downloading. ×
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Sonar-Hodson-Maven
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Sonar-Hodson-Maven

1,221

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,221
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
62
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. INTÉGRATION DE HUDSON, MAVEN, SUBVERSION ET SONAR1 GL5 G1_2011/2012 INSAT
  • 2. PLAN Introduction Maven Subversion Hudson Sonar Conclusion 2
  • 3. I. INTRODUCTION Les outils de gestion de la qualité tout au long du cycle de vie visent l’optimisation des performances et lefficience des entreprises dans la réussite de leurs projets. Parmi les produits les plus souvent cités, figurent ceux issus de l’Open Source, et ensuite, ceux issus des catalogues Microsoft, Mercury, IBM et Serena.. Tout au long de notre exposé, nous allons essayer d’illustrer quelques unes des fonctionnalités présentées à travers des exemples intégrant à la fois Maven 3, Hudson 2.1.2, Subversion 1.6.15 et Sonar 2.9 tantôt sur une machine windows 7 et tantôt sur une machine mac OSX SnowLeopard. A travers cet exposé nous allons tenter de mettre en exergue l’adaptabilité de ces différents outils et leurs nombreuses possibilités d’utilisation. 3
  • 4. II. MAVENPlan: Historique Principes de Maven Cycle de vie Fonctionnalités 4
  • 5. 1) HISTORIQUE DE MAVEN Maven 1est né en 2002. Il est d’abord apparu comme sous-projet du projet Jakarta Alexandria, avant de trouver refuge au sein du projet Apache Turbine. Il est devenu un projet Apache à part entière en 2003. Les défauts de Maven 1 lont empêché de véritablement percer dans le monde Java. Toutefois, Maven 1 a permis de roder les principaux mécanismes de Maven 2, et en particulier son principe de cycle de vie. Maven 2 sort en version finale à la fin de lannée 2005. Cette version apporte:  Performances  Stabilité  Fonctionnalités  etc. Maven 2 noffre toutefois aucune compatibilité avec son prédécesseur 5et oblige ainsi les équipes de développement à réécrire tout ou partie de leur fichier de configuration .
  • 6. 1) HISTORIQUE DE MAVENQuelques problèmes rencontrés avec Maven 2 :• Complexité d’intégration d’autres outils avec Maven 2• Le pom.xml est trop verbeux.• Trop grande utilisation de plugins.• Documentation "officielle" peu fournie et assez peu intuitive.• XML parfois redondant, même en utilisant lhéritage.• Support pas encore parfait dans les IDE, mais les choses saméliorent.• Développement et support des plugins "officiels" inégaux.• Manque de souplesse, de rigueur sur certains principes (difficile de sortir du cycle de vie par exemple). 6
  • 7. 1) HISTORIQUE DE MAVENLes nouveautés de Maven 3: Réécriture du coeur de Maven Rétrocompatibilité Maven apprend dautres langues Composition des pom Extensibilité de Maven Construction du plan de build Accès aux repositories et gestion des dépendances Maven Shell 7 Support des IDE, de l’intégration continue, au sein des gestionnaires de repositories
  • 8. 2) PRINCIPES DE MAVEN1. Convention over configurationPortabilité et standardisation des projetsMeilleure lisibilité et compréhensibilité des projets2. Exécution déclarativeDescription du projet (dépendances, plugins) sous forme xmlLe fichier de configuration POM.xml est déclaratif3. Réutilisation de la logique du buildEncapsulation de la logique du build dans des modules appelés pluginsExécution de ces plugins dans un ordre défini par le « build life cycle »Réutilisabilité de ces modules4. Organisation cohérente des dépendancesToute utilisation d’artéfacts dans une application Maven doit être signalée 8 dans le POM.xml.Maven se charge du management et de l’organisation de ces dépendances.
  • 9. 3) CYCLE DE VIE DE MAVEN 9
  • 10. 3) CYCLE DE VIE DE MAVENVoici les phases du cycle de vie par défaut :1. Validate: valider si le projet est correct et toutes les informations nécessaires sont disponibles2. Compile: compiler le code source du projet3. Test: test du code source compilé en utilisant un cadre approprié pour tester lunité.4. Package: prendre le code compilé et le package dans son format distribuable, comme un JAR.5. Integration-test: processus et déployer le package si nécessaire dans un environnement où les tests dintégration peuvent être exécutés6. Verify: exécuter un contrôle permettant de vérifier si le package est valable et répond aux critères de qualité7. Install: installer le paquet dans le dépôt local, pour une utilisation en tant que dépendance à dautres projets au niveau local 108. Deploy: fait dans un environnement dintégration ou de libération, des copies à lemballage final de la garde à distance pour le partage avec dautres développeurs et des projets.
  • 11. 3) CYCLE DE VIE DE MAVENIl y a deux autres phases du cycle de vie de maven :Clean life cycle : efface les anciens fichier buildés pre-clean clean post-cleanSite life cycle: génère la documentation du site pour ce projet Pre-site Site Post-site Site-deploy 11
  • 12. 4) FONCTIONNALITÉS DE MAVEN Automatisation du build Modularisation du projet Gestion des dépendances Vérification de la qualité du code source Développement piloté par les tests Automatisation des tests d’acceptation Automatisation du déploiement 12
  • 13. 4) FONCTIONNALITÉS DE MAVEN Automatisation du build:Traduire la liste des tâches quotidiennes à faire sous forme de script.Lautomatisation du build offre une gamme davantages: • laccélération du build • lélimination des mauvais builds • la normalisation dans les équipes et les organisations, • une efficacité accrue, et améliorations dans la qualité du produit. 13
  • 14. 4) FONCTIONNALITÉS DE MAVEN Automatisation du build Modularisation du projet:La modularisation du projet répond au besoin des grandes entreprises de diviser une application en plusieurs modules et ce tout en offrant la possibilité de travailler avec les mêmes ressources telles que les base de données existantes, les réseaux etc. Lorsqu’on parle de modularisation , on parle de projet parent et de projet fils et donc de fichier POM parent et de fichiers POM fils. 14
  • 15.  Exemple de fichier POM parent  Exemple de fichier POM fils<dependencyManagement> <dependency> <dependencies> <groupId>mysql</groupId> <dependency> <artifactId>mysql-connector-java</artifactId> <groupId>mysql</groupId> </dependency> <artifactId>mysql-connector-java</artifactId> <version>5.1.2</version> </dependency> <dependencies></dependencyManagement> Le fichier POM Parent contient la définition complète de la dépendance. Mais tous les modules fils qui nécessitent cette dépendance contiennent un bout de la définition de la dépendance et ce pour éviter les conflits de versions. 15
  • 16. 4) FONCTIONNALITÉS DE MAVEN Automatisation du build Modularisation du projet Gestion des dépendances:Cette fonctionnalité est universellement reconnue comme étant l’une des meilleures fonctionnalités de Maven. Il de 6 scopes possibles, à savoir: cet Les dépendances de Maven disposent serait intéressant de présenter Compile: disponible multi modulaires. aspect de Maven pour les projetspar défaut dans le classpath Provided: suppose que soit le jdk, soit l’environnement apporte cette dépendance.Dans les projets multi modulaires, les dépendances peuvent être définies dansRuntime: dépendances nécessaires lors du runtime et sont spécifiées dans le runtime le fichier POM parent et peuvent être héritées à partir des fichiers POM fils classpath. de la façon et au moment voulus. Lela compilation et l’exécution des tests. Test: Dépendances nécessaires pour fait d’avoir une seule source de définition des System: la dépendance est toujours disponible. dépendances rend le versioning des dépendances plus simple et ainsi les dépendances des grands projets sont organisées etl’élément Import: importe les dépendances spécifiées dans le POM incluse via gérables dans le temps. <dependencyManagement>. 16
  • 17. Définir la liste des dépendance Interroger s les repositories Interroger le distants.repository localpour trouver les dépendances utilisées. Télécharger depuis un Utiliser la repository distant dépendance les dépendancespour construire absentes du le projet repository local.
  • 18. 4) FONCTIONNALITÉS DE MAVEN Automatisation du build Modularisation du projet Gestion des dépendances Vérification de la qualité du code source:Le plug-in Apache Maven PMD exécute automatiquement loutil d’analyse du code sur le code source et génère un rapport de site avec des résultats. Dans une configuration typique, la génération échoue si PMD détecte les problèmes de qualité de la source. • pmd:pmd crée un site PMD de reporting basé sur les règles et la configuration du plugin. • pmd:cpd génère un rapport de l’outil CPD de détéction des copier/coller. • pmd:check vérifier si le rapport PMD est vide, sinon il fait échouer le build. • pmd:cpd-check vérifie si le rapport CPD est vide, sinon le build échoue.18
  • 19. 4) FONCTIONNALITÉS DE MAVEN Automatisation du build Modularisation du projet Gestion des dépendances Vérification de la qualité du code source Développement piloté par les tests:Pour Apache Maven les tests unitaires et les tests dintégration font partie intégrante du cycle de vie du build, permettant ainsi aux programmeurs et aux équipes de facilement mettre en œuvre la pratique du TDD (Test Driven Development). 19
  • 20. 4) FONCTIONNALITÉS DE MAVEN Automatisation du build Modularisation du projet Gestion des dépendances Vérification de la qualité du code source Développement piloté par les tests Automatisation des tests d’acceptation:Selenium est un framework dautomatisation des tests très populaire qui fonctionne avec un grand nombre de technologies, y compris Java, C #, Ruby, Groovy, Python, PHP et Perl.Afin décrire des tests dautomatisation, Selenium fournit lIDE sélénium, qui est un plugin pour Mozilla Firefox qui permet surtout denregistrer et de rejouer les tests et de les exporter dans différents langages, y compris Java. Le plugin Selenium Maven vous permet de spécifier des tests d’automatisation créé pour Selenium dans votre Projet Maven et de les 20 intégrer avec le cycle de vie du build deMaven.
  • 21. Le démarrage du serveur de Selenium nécessite la synchronisation avec la <plugins> test de pré-intégration du cycle de vie du build. phase de <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>selenium-maven-plugin</artifactId> <executions> <execution> <phase>pre-integration-test</phase> <goals> <goal>start-server</goal> </goals> <configuration> <background>true</background> </configuration> </execution> </executions> </plugin></plugins> 21
  • 22. <plugin>Cependant, pour exécuter les tests Selenium, nous aurons également besoin <groupId>org.mortbay.jetty</groupId> de démarrer le serveur dapplications Web voici un exemple avec Jetty. <artifactId>maven-jetty-plugin</artifactId> <version>6.1.10</version> <executions> <execution> <id>start-jetty</id> <phase>pre-integration-test</phase> <goals> <goal>run</goal> </goals> <configuration> <scanIntervalSeconds>0</scanIntervalSeconds> <daemon>true</daemon> </configuration> </execution> <execution> <id>stop-jetty</id> <phase>post-integration-test</phase> <goals> <goal>stop</goal> </goals> </execution> </executions> 22</plugin>
  • 23. 4) FONCTIONNALITÉS DE MAVEN Automatisation du build Modularisation du projet Gestion des dépendances Vérification de la qualité du code source Développement piloté par les tests Automatisation des tests d’acceptation Automatisation du déploiement:Le plugin Maven Deploy est utilisé pour ajouter des artefacts (s) à un repository distant pendant la phase de déploiement de cycle de vie du build.Ce plugin introduit deux objectifs: deploy: deploy: Pour déployer un projet et tous ses artefacts deploy: deploy -file: Pour déployer un seul fichier d’artefact 23
  • 24. III. SUBVERSIONPlan: Présentation SVN vs CVS 24
  • 25. 1) PRÉSENTATION DE SUBVERSION La gestion de versions est une activité qui consiste à maintenir lensemble des versions ou révisions d’un logiciel ou autre document. On peut ainsi mieux suivre et gérer le contenu, ou en restaurer une version antérieure, notamment si on fait une erreur dans la version la plus récente. Le suivi des versions est particulièrement indiqué lorsque plusieurs personnes collaborent à un projet ou lorsquun travail passe par plusieurs étapes de développement et de révision. Subversion est un logiciel de gestion de sources et de contrôle de versions.Il se veut comme successeur logique de CVS et nous provient du monde de lopen source 25
  • 26. 1) PRÉSENTATION DE SUBVERSION: INSTALLATION DE SUBVERSIONL’installation de SVN passe par plusieurs étapes: télécharger le plus récent svn-x.y.z- télécharger le plus récent setup.exe, télécharger le plus récent SVNService.zip télécharger linstalleur le plus récent de TORTOISEsvn à savoir TortoiseSVN-1.3.0.5416-svn-1.3.0.msi. 26
  • 27. 1) PRÉSENTATION DE SUBVERSION: NOTIONS DE BASE Repository:Un dépôt (Repository) Subversion est l’emplacement central où sont stockées toutes les données relatives aux projets gérés. Le dépôt est accédé via une URL locale ou distante.Le dépôt contient l’historique des versions des fichiers stockés, les logs enregistrés lors des modifications, les dates et auteurs de ces modifications, etc.Un dépôt apparaît de l’extérieur comme un système de fichiers composé de répertoires au sein desquels on peut naviguer, lire et écrire selon les permissions accordées. 27
  • 28. 1) PRÉSENTATION DE SUBVERSION: LES COMMANDES CLIENT 28
  • 29. 1) PRÉSENTATION DE SUBVERSION: GESTION DES CONFLITSil y a 4 différentes manières de résoudre ce genre de conflits: Retarder la résolution de conflit Fusionner les conflits à la main Copier un fichier dans le fichier actif Annuler les changements 29
  • 30. 2) SVN VS CVSSubversion présente les mêmes fonctionnalités de CVS, à savoir : La consultation et la possibilité de restauration des anciennes versions dun fichier. Les raisons des modifications apportées et les auteurs de celles-ci. Les modifications de versions sont stockées sous forme de delta (différence entre deux versions) pour les fichiers.Mais il a également quelques spécificités qui lui sont propres : Tracer les versions de répertoires, de fichiers et de droits sur les fichiers. Renommer un fichier ou un répertoire tout en conservant son historique. Les propagations de version (commit) sont atomiques. Une propagation réussit uniquement si tous les fichiers de la version sont correctement propagés. Les numéros de versions concernent une propagation et non les fichiers eux- mêmes. Subversion peut se coupler avec le protocole HTTP Webdav/deltaV. Les sauvegardes par delta sont aussi possibles sur les fichiers binaires. 30
  • 31. IV. HUDSONPlan: Présentation de l’intégration continue Outils de l’intégration continue Présentation de Hudson 31
  • 32. 1) PRÉSENTATION DE L’INTÉGRATION CONTINUEPour que lIntégration Continue puisse se faire correctement, il faut: Partager les sources du projet via un serveur de gestion de contrôle des sources SCM tel que CVS ou SVN. L’équipe de développement postent régulièrement les modifications apportées au code. Disposer de tests unitaires qui seront exécutés par Junit ou TestNG. 32
  • 33. 1) PRÉSENTATION DE L’INTÉGRATION CONTINUELes intérêts de l’Intégration Continue: Vérification fréquente du code, et de sa bonne compilation. Réalisation des tests unitaire et / ou fonctionnels, voire tests dintégration. Mise à disposition éventuelle dune version testable comportant les dernières modifications du code. Possibilité de créer des rapports périodiques exprimant la qualité du code, la couverture des tests, etc. Si le projet est configuré pour Maven, alors on pourra créer le site du projet qui contiendra lensemble de ces 33 rapports.
  • 34. 2) OUTILS DE L’INTÉGRATION CONTINUE Anthill Pro. Atlassian Bamboo. Build Forge. Cruise Control : lun des outils dIC les plus anciens et plutôt populaire. Apache Continuum : loutil " officiel " de la communauté Maven. Hudson Luntbuild (et Luntbuild pro). 34 JetBrains TeamCity.
  • 35. 3) PRÉSENTATION DE HUDSON: DÉFINITION Hudson est un outil open source dintégration continue, fonctionnant dans un conteneur de servlets, ou en mode autonome avec son propre serveur Web embarqué. Effectuer des builds et des tests: Ant, Maven, MSBuild, … Check out du code source: Subversion, Mercurial, … Réaliser des tests unitaires: Junit Notifier les utilisateurs: E-mail, RSS, … Gérer la qualité du code: CheckStyle 35
  • 36. 3) PRÉSENTATION DE HUDSON: FONCTIONNALITÉS PRINCIPALES Indicateurs:  Statut d’un projet  Santé d’un projet  Tendance d’un projet Maître et esclaves Matrice de configuration Gestion des utilisateurs Sécurité Rapports de tests Hudson dispose de la possibilité détendre ses capacités grâce à lajout de plugins et à la gestions de ceux-ci mais également grâce à la création de 36 nouveaux plugins
  • 37. V. SONARPlan: Présentation du contrôle de la qualité Présentation de Sonar 37
  • 38. 1) PRÉSENTATION DU CONTRÔLE DE QUALITÉ Sonar offre une solution performante du contrôle de la qualité d‘un logiciel. Dans le monde informatique en général, et en Java en particulier, la qualité dune application va être directement liée à la qualité du code  exécution de tests unitaires  analyse de la couverture du code par ces tests  vérifications du respect des règles de codage, etc. Le contrôle de la qualité va donc pousser léquipe de développement à adopter et à respecter certains standards de développement. Le but : rendre le code plus sûr, mais de permettre dy déceler les erreurs le plus rapidement possible et donc de les corriger ! 38
  • 39. 2) PRÉSENTATION DE SONAR: HISTORIQUE ET FONCTION Sonar est un outil open source initialement développé par la société suisse Hortis. Depuis novembre 2008, cest la société suisse SonarSource qui se charge du développement et du support de Sonar. Le but principal de cet outil est de fournir une analyse complète de la qualité dune application en fournissant de nombreuses statistiques (ou métriques) sur ses projets. Ces données permettent ainsi dévaluer la qualité du code, et den 39 connaître lévolution au cours du développement.
  • 40. 2) Présentation de Sonar: Architectureun exécuteur (basé le serveur web sur Maven 2/3, Ant qui permet la ou un exécuteur navigation et la Java) dont le but consultation des sera de lancer un analyses certain nombre réalisées sur lesdoutils danalyse, et projets den agréger les résultats une base de éventuellement un données, qui plugin pour stocke et Eclipse qui offre historise les une meilleure informations sur intégration des 40 les projets données de Sonar dans son outil de surveillés par développement. Sonar
  • 41. 2) PRÉSENTATION DE SONAR: PRINCIPALES FONCTIONNALITÉS Tableau de bord complet des différents projets suivis. Détection rapide du code à risque. Mesures quantitatives : nombre de classes, duplication de code, etc. Mesures qualitatives : couverture et taux de réussite des tests, complexité du code, respect des règles de codage... Historiques des statistiques Support de plus de 600 règles de qualité. Gestion de profils pour les règles de codage. Visualisation du code source, surlignant les violations des règles de codage. Fonction "Time machine" permettant de comparer plusieurs versions dune application. 41 Identification des points faibles dun projet. Support des plugins.
  • 42. 3) FONCTIONNEMENT DE SONAR: OUTILS EXTERNES Afin danalyser un projet Java, Sonar va se baser en partie sur des outils externes, dont : 42
  • 43. 3) FONCTIONNEMENT DE SONAR: VISUALISATION DES DONNÉES Liste des projets Vue le nom du projet d’un projet sa version Vue « Les la tailleDashboard» métriquesprojet du Vue « Components» le taux de du code source: Visualisation respect des règles Vue "Violations drilldown» quand a été réalisé le dernier build  Vue « Time Machine» les principaux liens (vers lapplication, le site du projet, le serveur Vue "Clouds« dintégration continue, le serveur de gestion des sources, etc.) Vue "Design« les éventuelles alertes sur le projet ; etc. Vue "Hotspots« Vue "Libraries" Vue "Settings« Vue "Project Roles" 43
  • 44. 4) INTÉGRATION DE SONAR <profile> <id>sonar</id> Si votre projet utilise déjà Maven 2 ou 3, le plus simple est de faire appel au <activation> <activeByDefault>true</activeByDefault> plugin Maven de Sonar. La première chose à faire est de définir quelques </activation> paramètres Maven à placer de préférence dans son fichier settings.xml. <properties> Nous redéfinissons là lesmysql --> <!-- example pour paramètres de connexion à la base de données, ainsi que lURL du serveur Sonar. <sonar.jdbc.url>jdbc:derby://localhost:1527/sonar;create=true </sonar.jdbc.url> Il suffit ensuite de lancer la commande suivante : mvn sonar:sonar <sonar.jdbc.driverClassName>org.apache.derby.jdbc.ClientDriver </sonar.jdbc.driverClassName>Nous venons de voir comment lancer lanalyse Sonar manuellement. Mais il est <sonar.jdbc.username>sonar</sonar.jdbc.username> bien plus profitable de faire réaliser cette tâche automatiquement, grâce à un <sonar.jdbc.password>sonar</sonar.jdbc.password> outil dintégration continue <!-- server on a remote host --> comme Hudson. <sonar.host.url>http://127.0.0.1:9000/</sonar.host.url> </properties> </profile> 44
  • 45. VII. CONCLUSION Cet exposé nous a permis de mettre en avant la mise en œuvre de la forge de développement et ce dans le but de garantir la qualité logicielle. Ces outils présentant l’avantage d’être assez faciles d’utilisation et de configuration, néanmoins plusieurs problèmes surviennent lors de leur mise en pratique et ce à cause de facteurs externes : en l’occurrence l’utilisation des serveurs d’application, l’installation de mysql.. etc 45
  • 46. Merci pour votre attention46

×