Comment booster sa productivité ? Une extension VS Code comme outil d’automatisation
- 22 avr.
- 5 min de lecture
Dernière mise à jour : 23 avr.
Dans le cadre de mon mandat actuel pour Zentelia, effectué dans le domaine des assurances, je réalise quotidiennement des activités de vigie et d’analyse technique. Plus précisément, mon travail comprend deux tâches récurrentes : la surveillance des tests de non-régression et l’analyse des journaux d’erreurs (logs) dans Azure Log Analytics.
Ces activités exigent de nombreuses actions répétitives : extractions de données, manipulations de texte, tri d’informations, création de billets Jira et prise de notes détaillées. Rapidement, j’ai constaté que le temps consacré à ces manipulations manuelles grugeait une part importante de ma journée.
Dans cet article, je présente comment j’ai automatisé une grande partie de ces actions à l’aide d’extensions VS Code développées sur mesure, ce qui m’a permis d’améliorer substantiellement ma productivité.
Contraintes
Mon application de prédilection pour la prise de notes a longtemps été LogSeq. Toutefois, lorsque mon client a exigé que tous les logiciels utilisés soient homologués, j’ai perdu l’accès à cet outil. La liste des logiciels approuvés étant très restreinte, j’ai dû trouver une solution alternative.
Exigences fonctionnelles
Mon logiciel de prise de notes devait répondre à quatre besoins fondamentaux :

Créer rapidement une nouvelle page à partir d’un canevas.
Permettre le référencement entre pages via des liens de type wiki-links.
Offrir un moteur de recherche robuste acceptant des jokers (wildcards) ou, idéalement, des expressions régulières (Regex).
Permettre la gestion de tâches intégrées aux notes, avec une vue synthèse claire des éléments restants.
On m’a recommandé OneNote, qui semblait répondre à plusieurs critères. Après quelques jours d’utilisation, j’ai toutefois constaté certaines limites importantes :
Le moteur de recherche ne supporte ni Regex ni jokers.
Certains mots présents dans plusieurs notes ne retournent aucun résultat.
Les tâches plus anciennes sont parfois omises de la vue synthèse.
Ces contraintes rendaient l’outil inadéquat pour un contexte d’analyse technique intensive.
Choix stratégique : VS Code
Comme j’utilise déjà VS Code au quotidien, j’ai choisi de créer un espace de travail (workspace) et d’y faire ma prise de notes en format Markdown. Cette décision m’a ouvert une possibilité intéressante : enrichir mon environnement à l’aide d’extensions.
Extensions à la rescousses
Pour répondre à mes exigences, j’ai intégré des extensions à mon espace de travail. Par soucis de concision, je fournis ici des liens vers ces extensions, sans entrer dans les détails.
Markdown Notes, qui répond à 85 % de mes critères.
Todo Tree, qui permet de tenir un inventaire de mes tâches.
calc, qui permet de faire des calculs directement dans mes notes
Highlight Duplicates, qui permet de repérer rapidement des doublons dans une page
File Utils, qui permet de déplacer ou de dupliquer un fichier
markdown-formula, qui permet d’utiliser des formules de type Excel dans des tableaux Markdown (très utile pour calculer la durée de travail par mandat).
Avec cette configuration, j’arrive à travailler plus rapidement que ce que One note me permettrait. J’ai personnalisé les préférences des extensions. Todo Tree est extrêmement flexible et Markdown Notes propose une série d’ajustements à faire dans les préférences de VsCode.
Ce qui manquait encore
Malgré ces améliorations, certaines actions répétitives demeuraient.
Les extensions VS Code sont développées en JavaScript ou en TypeScript. La documentation fournie pour le développement d’une extension VS Code est très claire. L’ensemble des APIs fourni simplifie grandement le développement. De plus, puisque les extensions disponibles sur leur Marketplace sont open source, ce qui offre une quantité impressionnante d’exemples concrets. J’ai donc décidé d’écrire mes propres extensions.
Extension 1 : Génération de notes journalières et tri intelligent Markdown Notes
Cette extension coche bien des cases, mais n’offre pas la possibilité de générer une page journalière à partir d’un canevas. Je dois copier/coller le contenu de ce dernier dans mes notes journalières. Mon premier instinct a été de modifier le code de l’extension pour y ajouter ma fonctionnalité. Je me suis vite rendu compte que ce n’était pas nécessaire. Puisque les extensions peuvent être utilisées en parallèle, je peux simplement écrire ma propre extension.
L’écriture fut rapide, le code contient seulement 189 lignes et m’offre les options suivantes:
À l’ouverture de l’espace de travail, si elle n’existe pas, une page est ajoutée automatiquement. Cette page a pour titre la date du jour et contient le canevas fourni dans un fichier externe _DailyNoteTemplte.md.
Je peux insérer la date du jour, l’heure actuelle ou les deux. C’est très pratique quand je veux noter le travail accompli dans une page dédiée à un projet donné.
Trier une liste:
Exemple concret : tri lors de la vigie Lors de la vigie, je crée une liste de tests en échec. J’ajoute ensuite un lien vers le billet Jira que je viens de créer. J’obtiens une liste qui ressemble à ceci :
test-4-fonctional.json
[jira-1234](jira.com/jira-1234)
test-1-fonctional.json
[jira-1231](jira.com/jira-1235)
Si je trie cette liste avec les options de base de VS Code, j’obtiens la liste suivante :
[jira-1231](jira.com/jira-1235)
[jira-1234](jira.com/jira-1234)
test-1-fonctional.json
test-4-fonctional.json
Mon extension me permet de trier ce type de liste :
test-1-fonctional.json
[jira-1231](jira.com/jira-1235)
test-4-fonctional.json
[jira-1234](jira.com/jira-1234)
Le regroupement logique est conservé.
Extension 2 : Outil de transformation du presse-papier
Dans mon analyse, je passe beaucoup de temps à extraire des parties de texte à l’aide de multiples Regex. Pour me simplifier la vie, j’ai créé une deuxième extension permettant la transformation du contenu du presse-papier. Cette outil me permet de :
Extraire des noms de fichiers depuis un journal ou un JSON.
Insérer un URL en format Markdown et utiliser le dernier fragment comme descriptif: [publications](https://www.zentelia.com/publications).
Extraire une pile d’erreurs (stack-trace) d’un journal et les formater en plusieurs lignes.
Extraire la partie JSON d’un journal ou d’une pile d’erreurs.
Créer une liste des fichiers de tests compris dans un CSV généré par Log Analytics tout en les séparant par catégorie.
Extraire des données spécifiques d’un texte copié à même l’interface graphique de notre outil de tests maison.
Convertir une note de format Markdown en format Jira.
Et la publication?
VS Code fournit un exemple de tests unitaires en Mocha. C’est très simple de l’adapter. On peut aussi tester manuellement notre extension grâce au Extension Development Host. Il est possible de mocker les apis VS Code (j’utilise Sinon). Et pour ceux qui auraient peur de se lancer, Copilote a une bonne compréhension de l’infrastructure. Ça m’a entre autres aidé à faire un mock complexe de l’API activeTextEditor.
La publication d’une extension peut sembler intimidante. Au départ, j’ai cru qu’il fallait absolument publier dans Visual Studio Marketplace. Mon outil de presse-papier extrait des patrons bien uniques. Cet outil n’est probablement pas utile à autrui. Heureusement, je peux simplement empaqueté mon extension en format vsix et l’importer directement dans vscode: packaging-extensions
Bilan et perspectives
Ce projet n’était pas une initiative technologique en soi, mais une réponse à des irritants quotidiens. En automatisant des actions répétitives (génération de notes, tri structuré, transformations Regex) j’ai réduit significativement le temps consacré aux manipulations manuelles et amélioré la qualité de ma documentation.
L’objectif de cette démarche était avant tout de mettre en lumière la puissance des extensions VS Code et la simplicité avec laquelle il est possible de concevoir des outils sur mesure. Pour des besoins plus simples, les snippets. Ceux-ci permettent de coller des patrons de texte répétitifs et acceptent des caractères génériques (place holders).
Ce nouveau système a considérablement amélioré ma productivité, d’autant plus que chaque commande peut être associée à un raccourci clavier, ce qui accélère encore l’exécution des tâches répétitives.
Il convient toutefois de noter que certaines latences peuvent apparaître sous forte charge, notamment lorsqu’un fichier volumineux est ouvert simultanément avec plusieurs autres. Dans un contexte idéal, j’aimerais pouvoir exclure certains répertoires de l’analyse effectuée par Markdown Notes afin d’optimiser davantage les performances. Hormis cet aspect, la solution actuelle répond pleinement à mes besoins et pourrait même remplacer celle que j’utilise en dehors du travail.
En définitive, lorsqu’on maîtrise les API disponibles et qu’on comprend bien ses propres processus, il devient possible de créer des solutions simples, ciblées et hautement efficaces.



Commentaires