Je suis Alban, développeur au sein de l’agence Néo-Soft Bordeaux. Dans cet article, je vous explique comment, grâce à mon IDE, j’ai automatisé les tâches répétitives de mon équipe afin d’optimiser notre temps et de nous concentrer sur des actions à plus forte valeur ajoutée.
Lors de notre mission auprès de notre client, de nombreuses tâches répétitives m’ont amené à rechercher une solution afin de gagner du temps et pouvoir me consacrer à d’autres actions plus importantes. J’ai donc pris l’initiative de développer un outil de migration pour automatiser ces parties.
Une mission de dette technique nous a été confiée. Notre action consiste à migrer un grand nombre de projets de Java 4 vers Java 11, de mettre à niveau les dépendances afin de bénéficier des dernières technologies et de combler d’éventuelles failles de sécurité.
Pour chacun des projets, nous créons un nouveau projet cible, vide, configuré et structuré avec les paramètres cibles. Puis nous migrons petit à petit en découpant « en morceaux » le code afin de tester facilement la non-régression.
Pour cela, chaque développeur est assigné à une fonctionnalité et doit y effectuer une série de tâches telles que :
Seulement, réaliser ces taches devient rapidement répétitif et peu gratifiant…
En automatisant la plupart de ces tâches, les avantages sont nombreux :
Dans un premier temps, je me suis penché sur la faisabilité de cette automatisation. J’ai commencé par utiliser une librairie Java comme JavaParser, permettant de gérer du code Java plus facilement. Elle reste toutefois limitée puisque nous ne pouvons pas gérer les imports et les dépendances avec celle-ci, ni se déplacer dans le code à partir d’une référence à une autre classe.
J’ai finalement préféré me tourner vers l’IntelliJ Platform SDK¸ qui permet de développer des plugins pour IntelliJ, l’IDE utilisé au sein de notre équipe, afin de créer un outil d’automatisation sous la forme d’un plugin. En créant un plugin avec IntelliJ, nous bénéficions de « l’intelligence » de l’IDE, car la majorité des fonctions intéressantes pour l’automatisation y sont déjà intégrées.
Dans notre cas, ces fonctionnalités principales sont :
Les autres avantages d’utiliser un IDE :
Pour lancer l’automatisation, il suffit de faire un clic droit sur la classe à migrer et de choisir son profil de migration.
La gestion des FQN (Fully Qualified Name) et des imports.
FQN : Fully Qualified Name est une façon de qualifier/référencer une classe ou interface
Ex : fr.neosoft.exemple.ClasseExemple
Imaginons que nous voulons migrer une classe qui se trouve dans le package old.fr.neosoft.action, mais que sa destination se trouve dans un autre package : destination.fr.neosoft.exemple.controller
Profile
Conversion du package :
old.fr.neosoft.action –> destination.fr.neosoft.exemple.controller
Changement du suffixe du fichier :
Action –> Controller
Nous avons créé un système de profile pour savoir.
Étape 1
La qualification des références simplifie la manipulation des dépendances pour la suite des étapes, en utilisant la méthode d’IntelliJ JavaCodeStyleManager#qualifyClassReferences
Étape 2
La seconde étape consiste à copier la classe à sa destination. IntelliJ change automatiquement le nom du package comme vous pouvez le voir ci-dessous.
Nous réalisons la modification des qualifications des références de ExempleBean et nous en profitons pour modifier le nom de la classe.
Étape 3
Si nous souhaitons altérer la classe, nous le réalisons ici. Par exemple, nous décidons d’ajouter un Logger.
Étape 4
Enfin, ici nous réutilisons la classe JavaCodeStyleManager. Cette fois nous utilisons la méthode shortenClassReferences pour changer les qualifications en imports.
Dans le cadre de notre mission, développer avec l’IntelliJ Plateform SDK nous a permis de gagner du temps. Grâce aux fonctionnalités proposées dans ce SDK, nous avons pu réduire par 2 ou 3 le temps de développement.
En utilisant le plugin d’automatisation de la migration, nous gagnons environ 1 heure par tâche. Nous avons pu calculer un gain total d’environ 30 jours/homme sur nos projets. Ce montant économisé nous permet de nous concentrer sur la qualité de code ainsi que de gagner en flexibilité en prévision d’un possible retard sur d’autres parties du projet.
Pour le développeur, cela signifie également :
En prenant le réflexe d’automatiser, nous sommes aujourd’hui plus compétitifs et développons une culture d’optimisation de notre travail au sein de l’équipe. Ces expériences nous permettent d’avancer ensemble vers plus d’efficience et la recherche de solution pour améliorer la réalisation de notre projet.
Si suite à cette lecture, vous vous laissez tenter par l’automatisation avec votre IDE, voici quelques liens qui vous aideront dans votre travail :
Les plateformes autres que Jetbrains proposent aussi le développement de plugins :
Alban,
Ingénieur développeur au sein de l’agence de Bordeaux
Néo-Soft Groupe : retrouvez nos offres d’emploi sur notre page entreprise ou au sein de l’espace carrière de notre site internet. Découvrez nos articles technophiles, rédigés par nos collaborateurs, sur notre page Lab.go.
Changer d’entreprise, c’est excitant. Nouveau challenge, nouveaux collègues, nouveau café. Mais, bien souvent, on oublie…
Ça n’étonnera personne si nous affirmons que le monde du développement logiciel est en constante…
En Allemagne, le travail en tandem à temps partiel, aussi appelé « jobsharing » est…
On se retrouve comme d'habitude pour le début du classement qcm saison automne ! Mais…
La saison printemps des tests techniques WeLoveDevs s'est terminée le 31 mai, et c'est Axel…