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
Sortie de FlexPMD 1.1 / FlexCPD 1.1 / FlexMetrics 1.1
Il y a quelques mois (6 en fait), je vous présentais des outils à la fois puissants et pratiques pour mesurer et corriger les bonnes pratiques dans votre développement. Ces outils sont développés par une petite team comprenant des français (voir le blog de Xavier Agnetti). Les trois projets sont hébergés sur le portail Open Source d'Adobe.
Est tout d'abord sorti FlexPMD permettant d'analyser votre code et d'en fait l'audit. Si vous ne vous rappelez pas, voici l'article présentant cet outil:
FlexPMD – Un outil pour faire l'audit de vos projets Flex / AS3 / Air
Est ensuite sorti, un plug-in Eclipse / Flex Builder pour vous simplifier la vie:
FlexPMD – Le plug-in Eclipse / Flex Builder 3 / Flash Builder 4 disponible
Pour la version 1.0, ils ont en même temps sorti FlexCPD, pour détecter la duplication de contenu dans votre code ainsi que FlexMetrics, qui vous permet d'avoir quelques statistiques sur votre code. Ces plugins peuvent facilement se greffer sur votre système d'intégration continue (Hudson et autres), ce n'est pas non plus le genre d'outil que l'on va utiliser pendant le dev, il permet juste de contrôler les versions release que vous allez publier tous les jours.
Pour ceux qui s'en inquiètent, ces 3 outils fonctionnent avec Flex 4 et Flash Builder 4 sans souci.
Comme l'indique le titre, les versions 1.1 de ces 3 outils sont sorties, corrigeant une bonne série de bugs (voir les release notes / bugs corrigés). N'oubliez donc pas de vous mettre à jour
La vie d'un développeur Flex
Un petit billet pour vous faire partager un excellent article écrit par David Buhler qui est paru sur mes feeds ce matin:
Become, and maybe even stay, a Flex Developer.
Dans ce (long) article, l'auteur expose les situations et les difficultés auxquelles il a été confronté dans sa carrière de développeur, notamment de développeur Flex.
Personnellement, je me suis reconnu dans de nombreuses passages de l'article (notamment dans la partie un peu "codeur-no-life-passionné"). Il parle aussi des évolutions permanentes qu'impose le métier de développeur mais aussi de les approches "Entreprise" du développement.
Quelques conseils qu'il donne pêle mêle à titre d'exemple:
- Learn a tool that makes life easier. Try Cairngorm 3 Validation
- Learn a mainstream framework. Try Parsley
- Improve the quality of your code using a Code Quality tool. Try FlexPMD
- Learn a unit-testing framework. Try FlexUnit 4
- Make all of the above work with an automated build-process. Try Ant
- Learn some Java. The support for Java and Flex integration is excellent, the language and the OOP concepts are similar to Actionscript, and the tools for Enterprise development are robust. Try a Java Tutorial.
Bref, un article très complet et intéressant que je vous recommande vivement de lire
FlexPMD – Le plug-in Eclipse / Flex Builder 3 / Flash Builder 4 disponible
Il y a quelques semaines, je vous présentais FlexPMD, un outil permettant de faire un audit de votre code ActionScript / Flex pour vos applications Adobe Flex / Adobe Air. A sa sortie, vous ne pouviez l'invoquer qu'en ligne de commande, par Ant ou par Maven. C'est plutôt pratique si vous avez déjà un système d'intégration continue ou des scripts de build en place mais sinon, cela restait un peu laborieux.
Heureusement, on apprend sur le blog de Xavier Agnetti, la sortie de FlexPMD sous forme de plug-in Flex Builder (mais aussi TextMate et FlashDevelop). Vous pourrez trouver plus d'informations sur le wiki de FlexPMD:
Wiki FlexPMD sur opensource@adobe
Notez que l'outil est compatible (testé) sur les versions de Flex Builder suivantes:
- FlashBuilder 4 Beta 2 standalone
- FlashBuilder 4 + Eclipse 3.5
- FlashBuilder 4 + Eclipse 3.4
- FlashBuilder 3 + Eclipse 3.4
Des vidéos expliquant l'utilisation de FlexPMD en plugin et sur sa configuration sont disponibles.
Au passage, Xavier annonce aussi la sortie d'autres outils pour faire l'audit de votre code (outil venant du monde Java eux aussi):
- FlexCPD (Copy & and Paste Detector): Vous indique la quantité de code dupliqué dans vos projets. Une bonne idée pour un bon refactor
- FlexMetrics (équivalent de JavaNCSS): Vous permet d'avoir des statistiques générales sur votre projet (nombre de lignes, de fonctions, etc.)
FlexPMD – Tutorial Invoquer FlexPMD avec Ant
FlexPMD, l'outil d'audit Adobe peut être appelé soit en ligne de commande, soit par Ant. Vous pouvez donc générer un rapport comme une tâche supplémentaire de votre build Ant. Dans ce tutorial, on va voir comment faire fonctionner le build Ant depuis Flex Builder.
Installer Ant dans Flex Builder
Tout d'abord, la première étape est d'installer Ant dans Flex Builder 3. Pour cela, suivez ce tutorial Flex:
Installer Ant dans Flex Builder 3
Télécharger FlexPMD pour Ant et le copier dans votre projet
Rendez vous sur la page de téléchargement de FlexPMD et téléchargez la dernière version pour Ant (les numéros de version peuvent varier par rapport au screenshot):

Dézippez l'archive que vous venez de télécharger, vous devriez y trouver une série de fichiers JAR. Dans le projet que vous souhaitez vérifier avec FlexPMD, créez un dossier "lib" à la racine:

Créer le script Ant pour FlexPMD
A la racine de votre projet, créez un nouveau fichier que l'on va nommer "antpmd.xml". C'est ce fichier qui va contenir votre script Ant. Si vous avez déjà un build Ant (build.xml) de crée, vous pouvez le réutiliser en ajoutant simplement les taskdef et target qui vont suivre.
- Allez ensuite dans le menu Run > Extenal Tools > Open External Tools Dialog…
- Cliquez sur Ant Build puis sur le bouton New (juste en haut à gauche)
- Nommez votre configuration Ant "FlexPMD" puis faites pointer le "Buildfile" vers votre fichier antpmd.xml et votre "Base Directory" vers le répertoire de votre projet. Vous devriez avoir quelque chose comme ceci:

Fermez cette fenêtre puis ouvrez le fichier antpmd.xml. N'utilisez pas le code qui se trouve sur le site officiel, il est pour l'instant buggé.
Collez le code suivant dans ce fichier:
<project name="Flex PMD example" default="flexPmdWithDefaultRuleset" >
<description>
Flex PMD example
</description>
<property name="projecthome" value="${basedir}" />
<property name="flexpmd.version" value="1.0.RC3" />
<property name="flexpmd.dir" value="${basedir}/lib" />
<property name="src.dir" value="src" />
<property name="bin.dir" value="bin" />
<!--****************************************************
FlexPMD
*****************************************************-->
<taskdef name="flexPmd"
classname="com.adobe.ac.pmd.ant.FlexPmdAntTask"
classpath="${flexpmd.dir}/flex-pmd-ant-task-${flexpmd.version}.jar">
<classpath>
<pathelement location="${flexpmd.dir}/flex-pmd-ruleset-api-${flexpmd.version}.jar"/>
<pathelement location="${flexpmd.dir}/flex-pmd-ruleset-${flexpmd.version}.jar"/>
<pathelement location="${flexpmd.dir}/flex-pmd-core-${flexpmd.version}.jar"/>
<pathelement location="${flexpmd.dir}/as3-plugin-utils-${flexpmd.version}.jar"/>
<pathelement location="${flexpmd.dir}/as3-parser-${flexpmd.version}.jar"/>
<pathelement location="${flexpmd.dir}/as3-parser-api-${flexpmd.version}.jar"/>
<pathelement location="${flexpmd.dir}/pmd-4.2.2.jar"/>
<pathelement location="${flexpmd.dir}/as3-plugin-utils-${flexpmd.version}.jar"/>
<pathelement location="${flexpmd.dir}/commons-lang-2.4.jar"/>
<pathelement location="${flexpmd.dir}/flex-pmd-files-${flexpmd.version}.jar"/>
<pathelement location="${flexpmd.dir}/plexus-utils-1.0.2.jar"/>
</classpath>
</taskdef>
<target name="flexPmdWithCustomRuleset">
<flexPmd
sourceDirectory="${src.dir}"
outputDirectory="${bin.dir}"
ruleSet="${flexpmd.dir}/pmd.xml"/>
</target>
<target name="flexPmdWithDefaultRuleset">
<flexPmd
sourceDirectory="${src.dir}"
outputDirectory="${bin.dir}"/>
</target>
</project>





