Theodo France

Theodo France

IT / Digital, Logiciels

Paris, Casablanca, London, Lyon, Nantes

Explorez leurs posts

Parcourez les posts publiés par l’entreprise pour une immersion dans leur culture et leurs domaines d’expertise.

Theodo Named 2025 Google Cloud Services Partner of the Year

Las Vegas, April 8, 2025 Theodo today announced that it has received the 2025 Google Cloud Services Partner of the Year. Theodo is being recognized for its achievements in the Goog…

04/07/2025

REX après la migration d’une feature Android/iOS vers KMP

Dans un premier article, nous avons exploré comment migrer progressivement une application native Android/iOS vers Kotlin Multiplatform (KMP). Si vous avez suivi ce guide, vous ave…

04/07/2025

ShedLock : Gérer efficacement les tâches planifiées dans une architecture multi-instances

Introduction Pour les applications d'entreprise, en 2025 l’exécution de tâches planifiées est un besoin courant : génération de rapports, traitements par lots, synchronisation de d…

04/07/2025

Comment diviser par 2 votre temps de CI grâce à ces simples astuces

Chez Theodo HealthTech, notre politique est de créer un code de qualité tout en respectant nos délais de livraison. Cependant, pendant trois sprints consécutifs, nous avons livré d…

08/04/2025

How QRQC helps me better manage bugs on my project?

As a software developer, you spend most of your time delivering code and then fixing bugs you introduced in your code. The Pareto principle is a great way to represent our day-to-d…

04/07/2025

How we migrated from AWS Glue to Snowflake and dbt

Today, I’ll tell you about our ETL migration from AWS Glue to the Snowflake and dbt modern data stack. My team’s mission is to centralize and ensure data reliability from multiple…

04/07/2025

Sécuriser les partages Notion : guide pour tous

Chez Theodo Fintech, nous avons fait de Notion notre QG digital. Documentation produit, projets tech, comptes rendus, référentiels clients ou financiers… tout y passe. Et c’est bie…

04/07/2025

Construire un produit Gen AI : le guide de survie pour les PMs

Bienvenue dans l'ère de l'IA générative, où les machines créent du contenu de manière autonome. Pour les product managers (PMs), cela représente une révolution autant qu'un défi. L…

08/04/2025

Qu’est-ce que le scaling ?

Une bonne application est une application qui tient sa charge d’utilisateurs, notamment grâce à un scaling controlé. Dans cet article nous aborderons ce sujet, et plus particulière…

04/07/2025

How LLM Monitoring builds the future of GenAI ?

Discover how Langfuse offers secure, open-source monitoring for LLM and GenAI solutions. Large Language Models (LLMs) are popping up everywhere and are more accessible than ever. W…

04/07/2025

Les annotations java custom pour respecter l’architecture hexagonale

Le problème que l’on veut résoudre Lorsque l’on développe une API avec Spring Boot, il est fréquent d’utiliser les annotations fournies par le framework, telles que @Service, @Comp…

04/07/2025

Le kit de survie du Product Manager responsable en 4 étapes

Alors que j’étais tranquillement en train de me laisser charmer par la dégustation gratuite de tofu fumé de mon Biocoop l’année dernière, une soudaine prise de conscience a heurté…

08/04/2025

Faites des Plugins pas la Guerre: REX sur ma bataille pour écrire un plugin

Imaginez commencer chaque projet avec tous les outils configurés et prêts à l’emploi. Le rêve, non ? En tant que développeur Android, j’ai toujours eu à portée de main les outils n…

04/07/2025

Don’t use Langchain anymore : Atomic Agents is the new paradigm !

Introduction Since the rise of LLMs, numerous libraries have emerged to simplify their integration into applications. Among them, LangChain quickly established itself as the go-to…

04/07/2025

Optimize Your Google Cloud Platform Costs with Physical Bytes Storage Billing

In today's data-driven world, cloud providers are essential for efficiently managing, processing, and analyzing vast amounts of data. When choosing one such provider, Google Cloud…

08/04/2025

Tech Radar Cloud

Ce Tech radar regroupe une cinquantaine de technologies Cloud et DevOps éprouvées par les experts de Theodo Cloud durant plus de 4 ans de projets. Téléchargez le 2ème volume de not…

08/04/2025

Faites des Plugins pas la Guerre: REX sur ma bataille pour écrire un plugin

Theodo France

Faites des Plugins pas la Guerre: REX sur ma bataille pour écrire un plugin

Imaginez commencer chaque projet avec tous les outils configurés et prêts à l’emploi. Le rêve, non ? En tant que développeur Android, j’ai toujours eu à portée de main les outils nécessaires pour lancer un projet rapidement et ajouter des fonctionnalités en un clin d'œil. Mais lorsque je me suis aventuré dans l’univers de Kotlin Multiplatform Mobile (KMP), le manque d’outils prêts à l'emploi m’a ralenti. Résolu à améliorer ma productivité, j’ai décidé de créer un plugin. Ce fut un parcours semé d’embûches, mais aujourd’hui, je partage mon retour d’expérience pour aider d’autres développeurs à éviter ces pièges.

Dans cet article, je parle de plugin JetBrains, les extensions pour VS Code peuvent être similaires sur certains aspects. Pour plus d'informations, rendez-vous sur le site officiel de VS Code.

Créer un plugin ou non ? Les alternatives existantes

Capture d’écran 2025-07-04 à 10.50.08.png

Créer un plugin est une démarche lourde : pour l'essayer, il faut lancer une instance séparée de l'IDE, ce qui peut être chronophage. La grande majorité des IDE JetBrains proposent déjà plusieurs outils intégrés. Selon vos besoins, certains peuvent suffire. Avant de vous lancer dans la création d'un plugin complet, considérez ces alternatives :

  • Live Template: ce sont en fait des snippets qui s’invitent dans votre code lorsque vous tapez un mot clef. Je m’en sers énormément sur Android pour écrire mon code boilerplate.

  • File Template : la même chose mais au niveau des fichiers, idéal pour créer tous les fichiers que constituent un nouvel écran. Je les utilise également très souvent.

  • Postfix Completion : ils ressemblent beaucoup aux live templates sauf qu’il peuvent imbriquer votre code dans un template. Idéal pour encapsuler votre code dans un try-catch par exemple.

  • Structural Search and Replace Inspections : vous connaissez le search and replace ? Voici sa version survitaminée, vous pouvez même automatiser des “replace”.

  • IDE Scripting Console : vous pouvez écrire des scripts avec JS, Kotlin ou Python ayant accès aux APIs de l’IDE. Ce qui fait de ces scripts une version très légère d’un plugin.

  • Flora Plugin : vous permet d’ajouter des actions, des raccourcis et des fenêtres d'outils en utilisant Kotlin et JavaScript. Un équivalent des plugins mais en plus léger.

  • LivePlugin : offrant des fonctionnalités similaires à Flora, les LivePlugins incluent également des intentions, en utilisant Groovy et Kotlin.

Un plugin vous permet cependant d’aller encore plus loin en combinant ces fonctionnalités avec l’accès aux données du projet et l’utilisation de l’API de l’IDE pour créer des actions plus complexes. Des outils externes à l’IDE, comme le Compose Multiplatform Wizard, peuvent aussi vous aider. Dans mon cas, j’ai dû aller plus loin en créant mon propre plugin.

Pourquoi un plugin peut booster votre productivité

Capture d’écran 2025-07-04 à 10.50.36.png

Un plugin peut faire bien plus que modifier l’apparence de votre outil : il transforme votre IDE en un environnement parfaitement adapté à vos besoins. Voici quelques-unes des fonctionnalités puissantes que vous pouvez intégrer :

  • Action : c’est une action rapide accessible via des menus contextuels, vous pouvez y associer un raccourci clavier. Pour mon plugin c’est ce qui était le plus adapté.

  • Intent Action : c’est une action adaptée au contexte de votre code.

  • Tool Window : on parle ici d’une interface personnalisées pour visualiser des informations précieuses liés à votre projet.

  • Editor Inspection et Highlighting : détection et correction des erreurs ou mauvaises pratiques.

  • Access to Project Data : depuis un plugin vous pouvez bien sur analyser ou transformer les données de votre projet.

  • Version Control Integration : les plugins peuvent aussi utiliser des fonctionnalités avancées pour le contrôle de version.

Créer un plugin, c’est faire un bond en avant en matière de productivité, pour les projets complexes, répétitifs et même pour démarrer un POC en un clin d’oeil.

Si vous voulez plus de documentation sur la création de plugins, je vous recommande le site officiel de JetBrains.

Quelques pièges rencontrés

Ne confondez pas un plugin Gradle avec un plugin IntelliJ

Un plugin Gradle configure votre projet (comme l’Android Gradle Plugin, AGP) et s’ajoute à vos fichiers build.gradle. Un plugin IntelliJ, comme GitHub Copilot, agit directement dans votre IDE et s’installe via le marketplace JetBrains. Il se nomme plugin “intelliJ” mais rassurez-vous, il fonctionne sur tous les IDE jetbrains qui ont accès au marketplace de plugins.

Choix de version 1.x ou 2.x

Pour construire un plugin, vous avez le choix entre deux configurations :

  • Gradle IntelliJ Plugin (1.x)

  • IntelliJ Platform Gradle Plugin (2.x)

La version 1 n’est plus maintenue. Je vous conseille donc la version 2. Si, comme moi, vous avez utilisé un template de plugin avant l’été 2024, vous avez probablement la version 1. Migrer vers la version 2 nécessite quelques ajustements dans vos fichiers Gradle. Un plugin Gradle dédié facilite cette migration.

Attention : le plugin DevKit (Plugin DevKit) est basé sur la version 1.x.

Plugins pour Fleet

Fleet est le nouvel IDE de JetBrains conçu pour le développement Kotlin Multiplatform. Le développement des plugins pour Fleet ne prend en charge que les thèmes pour le moment, sans support pour des actions personnalisées ou fenêtres d’outils. Son développement diffère des autres plugins IntelliJ.

Problèmes de compatibilité avec les mises à jour de l’IDE

Après une mise à jour de l’IDE, les actions de mon plugin avaient disparues. J’ai dû mettre à jour mon plugin pour le rendre compatible. Cela s’explique par une plage de version mal définie. En spécifiant uniquement une version minimale, vous évitez ce problème, mais prenez le risque que votre plugin plante sur les nouvelles versions de l’IDE.

La target version, un piège courant

Outre la plage de versions, vous devez spécifier la version ciblée de l’IDE. Celle-ci sert à résoudre les dépendances et à tester votre plugin en mode debug. Si vous ciblez une version incompatible (comme androidStudio("2024.2.1")), vous pourriez rencontrer des problèmes. Un workaround est disponible ici.

Les bénéfices de cette expérience

Cette aventure, en plus de m’avoir permis de créer un plugin améliorant ma devX, m’a fait découvrir des outils comme Flora, LivePlugin et le Structural Search and Replace. Ces outils augmenteront ma productivité pour mes futurs projets. Si vous voulez plus d’info sur mon plugin, n’hésitez pas à me contacter.

Conclusion

Depuis que je me concentre sur l’amélioration de ma devX, je perds beaucoup moins de temps sur les tâches répétitives du quotidien. Ce sont parfois des petites optimisations, mais elles s’accumulent : gagner 5 minutes par jour représente finalement près de 2 jours par an. Pour moi, ça a commencé par identifier les tâches les plus chronophages et chercher des moyens de les automatiser.

Bien sûr, tout n’a pas été simple : développer ce plugin m’a pris deux semaines complètes. Avec le recul, je réalise que des solutions plus simples auraient parfois suffi. Si je peux vous donner un conseil, ce serait de peser le coût et le bénéfice de chaque outil ou amélioration. L’essentiel, c’est de concentrer vos efforts là où l’impact est le plus significatif. Une devX optimisée, c’est autant de temps gagné pour se concentrer sur le code qui apporte vraiment de la valeur.

Ressources

Article rédigé par Dennis Bordet