Industrialiser vos projets Flex avec Hudson, Maven, Sonar, FlexPMD et FlexCPD
Dans le monde Java, il existe de nombreux outils permettant de vérifier l'intégrité de votre code (tests unitaires) mais aussi pour vous assurer que la qualité de votre code est respectée. Ces outils vous permettent d'assurer la robustesse des applications que vous créez.
Parmi les plus populaires, on peut compter:
- Hudson / Jenkins pour l'automatisation de build (intégration continue)
- Maven pour gérer les dépendances entre vos projet et le cycle de build
- Sonar pour tester la couverture de code et mesurer la qualité de votre code
- PMD pour vérifier la présence de mauvaise pratiques dans votre code
- SVN / Git pour la gestion du versioning de vos projets
La mise en place de ces outils est assez laborieuse, surtout si vous voulez les ajouter à un projet existant (surtout Maven) mais le jeu en vaut la chandelle. Le travail à plusieurs sur un projet et les évolutions rapides de votre projet (notamment par Spring Agile) vous obligent à mettre de tels outils en place pour vous assurer qu'aucune régression ne soit possible.
Dans le monde Flex, ces outils existent aussi. Les serveurs de Continous Integration (Hudson / Jenkins) sont agnostiques de la technologie utilisée. Vous pouvez donc lui faire lancer des builds Java ou Flex, ou les deux. Maven est disponible grâce à flex-mojos et PMD est possible avec FlexPMD.
Pour vous aider à mettre en place ces outils, j'ai trouvé un blog très intéressant qui explique la mise en place de cet outils:
- How to install Jenkins on Scientific Linux for Flex Development
- How to enable Flash/Flex project analysis in Sonar
- How to install FlexPMD in Flex Builder 4.5
- How to install FlexCPD in Flash Builder 4.5
- How to add a Hudson Status Bar to Flash Builder( or FDT)
- How to install maven in Flash Builder 4.5
- How to setup Git on Flash Builder 4.5
- How to import GitHub projects into Flash Builder
- How to install Subclipse on Flash Builder 4.5
Bonne lecture
Flash, Flex et intégration continue: Le guide complet (SVN, Maven, Hudson & co)
Si vous travaillez dans une grosse entreprise, vous avez forcement entendu parler d'intégration continue (Continuous Integration alias CI). Si vous ne connaissez pas cette technique, je vous invite vivement à vous y intéresser
.
Comme son nom l'indique, cette technique implique l'intégration continue de votre code ainsi que le lancement de tests à intervalles régulier. Le processus d'intégration continue est intimement couplé à celui du versionning (SVN par ex.) de votre code source. Ainsi, lorsqu'un utilisateur va faire un "commit" (envoi de modification vers le versionning), le processus d'intégration continue peut lancer un build pour vérifier l'intégrité du code.
Dans le même temps, si vous avez créé des tests unitaires, ceux-ci seront lancés automatiquement. Si le processus échoue, vous pouvez être averti, par mail par exemple.
L'intégration continue est souvent faite sur une machine, qui va automatiser le processus. Cette machine est souvent appelé serveur d'intégration continue. Elle va s'occuper de récupérer les sources, capter les commit, lancer les builds / test etc. Une fois le build effectué, cela vous permet aussi d'avoir un emplacement où seront placées les dernières versions de votre application (aussi appelées SNAPSHOT). Les solutions les plus connues sont Hudson et CruiseControl.
La mise en place d'un système d'intégration continue est considéré comme une bonne pratique dans le monde du développement. En effet, elle procure de nombreux avantages mais peu parfois être longue et laborieuse.
Pour vous aider dans la mise en place d'un serveur d'intégration continue, voici d'excellents articles:
- Practicing Continuous Integration on Flash Projects : What Is CI?
- Practicing Continuous Integration on Flash Projects : Project Structure
- Practicing Continuous Integration on Flash Projects : Automation
- Practicing Continuous Integration on Flash Projects : Integration Server Setup
- Practicing Continuous Integration on Flash Projects : Using Hudson
Cas réel d'utilisation chez Business Geografic
L'entreprise dans laquelle je travaille (Business Geografic) a mis en place un système d'intégration continue. Ce système est basé sur les technologies:
- SVN pour le versionning (Git pour certains)
- Maven pour la gestion des dépendances
- FlexMojos pour la compilation des projets Flex avec Maven
- Nexus comme gestionnaire de repository Maven
- Ant (pour tout ce que Maven ne sait pas faire)
- Hudson comme serveur d'intégration continue
- Redmine comme Bug Tracker
Le processus est maintenant au point mais sa mise en place a pris plusieurs mois, avec 2 personnes d'en occupant régulièrement. Il faut dire que notre cas n'est pas le plus simple car c'est un mix de nombreuses technologies avec des projets très important à gérer (en terme de volume).
FlexPMD – Un outil pour faire l'audit de vos projets Flex / AS3 / Air
Adobe a sorti hier un nouvel outil baptisé FlexPMD. Cet outil permet de faire l'audit du code de vos projets Flex / AS3 / Air. Il a été développé en interne au sein du Adobe Technical Services. FlexPMD est maintenant accessible à tous, en Open Source et de manière gratuite.
Que fait FlexPMD?
FlexPMD permet de détecter automatiquement dans votre code, les anti-pattern, et autres "Worst Practices" (mauvaises pratiques) dans votre code source Flash/Flex. FlexPMD utilise en partie PMD, l'équivalent Java. A l'origine, FlexPMD a été crée pour automatiser les audits de code bas-niveau pour que les consultants puissent se concentrer sur les problèmes de plus haut niveau. Au final, cet outil permet aussi de détecter les anti-pattern plus avancés.
Le projet contient actuellement plus de 80 règles, comme par exemple la détection de code inutilisé (dead code), les méthodes trop complexes avec référence cycliques, les variables mal nommées, mais aussi les problèmes d'architecture comme par exemple les View référencées dans les Model, … Comme le projet est Open Source, la communauté pourra créer de nouvelles règles que vous pourrez ajouter à FlexPMD. Vous pouvez aussi créer vos propres règles.
Consulter la page officielle de FlexPMD
Voir le blog de l'auteur Xavier Agnetti
Comment utiliser FlexPMD?
FlexPMD peut être invoqué de 4 manières différentes:
- Invoquer FlexPMD en ligne de commande
- Invoquer FlexPMD avec Ant
- Invoquer FlexPMD avec Maven
- Invoquer FlexPMD avec Mac OSX Automator
Des tutoriaux Flex seront bientôt publiés sur flex-tutorial, expliquant comment invoquer FlexPMD et traiter les résultats. Un plugin Flash Builder est déjà considéré par les développeurs.
Télécharger les différentes versions de FlexPMD
Comment marche FlexPMD?
FlexPMD est fourni avec un ensemble de règles pour le développement Flex/AS. Chaque fichier source passé dans FlexPMD est testé sur chacune des règles.





