1. Les "Code Snippets" : qu'est-ce que c'est ?

Microsoft fournit dans Visual Studio 2005 une fonctionnalité qui permet d'insérer en bloc des "Code Snippets" (ou "extraits de code" dans la langue de Molière) préexistants qui sont paramétrables en fonction des besoins du développeur. Concrètement, Visual Studio 2005 intègre de nombreux exemples de code, classés par thèmes, qui sont insérables et paramétrables directement dans votre application, par un simple clic droit, puis "Insérer un extrait" dans le menu contextuel; vous avez alors accès à un grand choix de codes classés par thèmes.

Microsoft .Net 2.0



Une fois le code inséré, il ne vous reste plus qu'à modifier en fonction du Snippet les champs nécessaires. Par exemple, un snippet qui permet de lire un fichier texte va vous demander de fournir le chemin du fichier, pour cela dès l'insertion de l'extrait de code, les éléments à modifier sont surlignés automatiquement, un "ToolTip" vous donne des informations quand au champ et à la valeur qu'il doit contenir lors du survol avec la souris de celui-ci.

Une bonne image valant souvent bien mieux que de longs discours, voici la preuve par l'image.

Exemple dans Visual Studio 2005
Un 'Code Snippet' dans Visual Studio 2005



Même si les Snippets fournis de base dans Visual Studio 2005 sont nombreux, il arrivera sûrement un jour où vous allez dire "un Snippet sur telle fonction que j'utilise tous les jours serait bienvenue". No problemo ! Il est tout à fait possible de créer vos propres Snippets, et de les intégrer dans Visual Studio 2005. Pour cela 2 possibilités :

  • Manuellement : les snippets étant en fait de "simples" fichiers XML il est tout à fait possible d'en créer avec votre éditeur XML favoris.
  • Semi-automatiquement : Microsoft propose pour cela un éditeur tout à fait indispensable pour les plus fainéants d'entre nous ;).

Cet outil se nomme trivialement " Code Snippet Editor ", voyons sans plus tarder ce dernier plus en détails.

2. Présentation de Microsoft Code Snippet Editor

Tout d'abord, code Snippet Editor est un projet "Shared Source", cela implique que l'on peut accéder à son code source en Visual Basic .Net, celui-ci est d'ailleurs disponible par téléchargement; si vous le souhaitez, libre à vous de lancer la chasse aux bugs.

Pour commencer, voici une capture d'écran de l'interface de Code Snippet Editor :

Code Snippet Editor
Interface graphique de Code Snippet Editor



La fonction principale de cet outil est donc de créer, de manière semi-automatique, vos propres Snippets, ou alors de modifier les Snippets existants. Pour cela, Code Snippet Editor possède une interface graphique très simple qui ne propose que les options nécessaires à cette tâche.

Code Snippet Editor propose une fenêtre principale avec, sur la gauche, un explorateur de l'arborescence de Snippets déjà intégrés dans votre Visual Studio 2005, sur la droite, une zone de texte qui permet la saisie du code, puis, en bas à droite, il y a différents onglets qui permettent de paramétrer correctement votre Snippet en signalant les Namespaces et autres références à ajouter automatiquement lors de l'utilisation de ce Snippet par le développeur. Ces onglets permettent également de définir les champs à personnaliser, ainsi que les diverses aides fournies au développeur, comme par exemple les "ToolTips" qui sont affichés au survol de la souris. Enfin, le dernier onglet permet lui de lancer la "compilation" du code pour vérifier la validité syntaxique de celui-ci, en cas de problème la sortie du compilateur est affichée et vous offre ainsi quelques informations vous guidant dans la résolution du problème.

Après avoir présenté Code Snippet Editor, passons maintenant à la réalisation d'un snippet de A à Z grâce à cet outil à mon avis bien pratique.

3. Création d'un code snippet avec Code Snippet Editor

Pour voir concrètement la simplicité d'utilisation de Code Snippet Editor, nous allons créer intégralement un petit Snippet, ici pas de code complexe, le but est de voir la méthode à suivre.

L'exemple que je vais utiliser est un code tout simple, qui d'ailleurs existe déjà dans les Snippets fournis avec Visual Studio 2005, il permet de déplacer un fichier d'un emplacement vers un autre.

Après avoir lancé Code Snippet Editor, allez dans l'explorateur de la partie gauche, sélectionner le dossier où vous souhaitez placer votre Snippet (créez en un au besoin), puis par un clic droit faites "Add new snippet", entrez alors le nom que vous souhaitez donner à ce snippet : pour moi ce sera "DeplacerFichier".

Votre Snippet apparaît alors dans l'explorateur de la partie gauche, double-cliquez sur votre nouveau Snippet, celui-ci est alors affiché dans la partie droite de l'interface utilisateur ; pour le moment la zone de code est bien évidemment totalement vide.

Saisissez le code dans la zone appropriée, je vous conseille de faire un copier/coller depuis Visual Studio, en effet quoi de mieux que notre logiciel préféré ;) pour taper du code Visual Basic .Net. Le code à copier pour cet exemple sera donc :

Code de notre Snippet
Sélectionnez

My.Computer.FileSystem.MoveFile(", ")


Maintenant nous devons saisir un certain nombre de métadonnées pour rendre notre Code Snippet plus convivial, en voici la liste pour le premier onglet.

  • Title : Déplacer des fichiers avec Visual Basic 2005 et My
  • Shortcut : filDeplacerFichier
  • Description : Ce Snippet permet de déplacer un fichier vers un nouvel emplacement.
  • Author: Moi
  • Scope : Member Body
  • Help URL : adresse qui pointe vers une documentation ou une aide en ligne.

Passons au deuxième onglet : "Replacements". Comme son nom l'indique il permet de définir les zones que le développeur devra modifier pour adapter le Snippet à son application.

Notre Snippet de par sa conception impose à l'utilisateur de saisir deux informations : le chemin source et le chemin destination. Pour faire en sorte que lors de l'utilisation de ce Snippet le développeur pense à surtout ne pas oublier de remplir les deux champs correspondant nous allons paramétrer notre Snippet pour que celui-ci surligne automatiquement les deux emplacements des chemins de fichier.

Pour ajouter un champ, il suffit de placer son curseur à l'endroit désiré dans le code (ici les paramètres de la méthode MoveFile()) du snippet, puis après un "clic droit" choisir "Add Replacement". Dès lors le champ est automatiquement ajouté et listé dans l'onglet "Replacements", ne perdons plus un instant et modifions ces champs à notre guise, voilà ce que, personnellement, j'ai modifié :

Champs à compléter par le développeur
Les deux chaînes de caractères ont été modifiées.



Je me positionne dans la liste sur le numéro 1 dans le code, celui-ci est alors surligné en orange, et je modifie les propriétés suivantes :

  • ID : cheminSource
  • Defaults to : "c:\rep\fichier.txt"
  • Type : String
  • Replacement kind : literal
  • Tooltip : Chemin complet d'origine du fichier

Propriétés du champ numéro 2 :

  • ID : cheminDest
  • Defaults to : "c:\repDest\fichier.txt"
  • Type : String
  • Replacement kind : literal
  • Tooltip : Chemin de destination du fichier à déplacer

Onglet "Reference" et onglet "Imports" : ces deux onglets ici ne sont pas utiles, ils servent respectivement à ajouter à votre projet une référence vers une dll, et à faire un Imports du ou des Namespaces nécessaires. Ici dans une situation de base nous n'en avons pas explicitement besoin.

Maintenant, nous allons faire un test de compilation de notre Snippet : pour cela, cliquez sur le bouton Test de l'onglet du même nom. Tout se passe bien, et le compilateur nous renvoie le message suivant :

Sortie du compilateur
Sélectionnez

Compilation found 0 error(s)

Compiled code:
---
Namespace aNamespace
Class aClass
Sub aMethod()
My.Computer.FileSystem.MoveFile("c:\rep\fichier.txt", "c:\repDest\fichier.txt")
End Sub
End Class
End NameSpace
---

Enfin, dernière étape, synchroniser les Snippets de Visual Studio 2005, avec les diverses modifications que nous venons de faire. Pour cela, rien de difficile, il suffit de cliquer sur le bouton prévu à cet effet qui se trouve juste au dessus du coin droit de l'onglet "Preview".

Synchronisation avec Visual Studio 2005
Synchronisation avec Visual Studio 2005



Il ne vous reste plus qu'à aller dans Visual Studio 2005 et voir que votre Snippet est bel et bien en place et fonctionnel.

Voilà, c'est tout, rien de plus compliqué, nous venons de créer un Code Snippet avec Code Snippet Editor et de l'intégrer dans Visual Studio 2005.

Le système de Snippet repose sur des fichiers XML portant l'extension .snippet. Ces fichiers (dans le cas de Snippet en Visual Basic .Net) se trouvent dans le répertoire suivant : C:\Program Files\Microsoft Visual Studio 8\VB\Snippets\1036

Et voici le fichier XML qui est généré par Code Snippet Editor :

Fichier XML contenant notre Snippet
Sélectionnez

<?xml version="1.0"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>Déplacer des fichiers avec Visual Basic 2005 et My</Title>
      <Author>Moi</Author>
      <Description>Ce Snippet permet de déplacer un fichier vers un nouvel emplacement.</Description>
      <Shortcut>filDeplacerFichier</Shortcut>
    </Header>
    <Snippet>
      <Declarations>
        <Literal>
          <ID>cheminSource</ID>
          <Type>String</Type>
          <ToolTip>Chemin complet d'origine du fichier</ToolTip>
          <Default>"c:\rep\fichier.txt"</Default>
        </Literal>
        <Literal>
          <ID>cheminDest</ID>
          <Type>String</Type>
          <ToolTip>Chemin de destination du fichier à déplacer.</ToolTip>
          <Default>"c:\repDest\fichier.txt"</Default>
        </Literal>
      </Declarations>
      <Code Language="VB" Kind="method body"><![CDATA[My.Computer.FileSystem.MoveFile($cheminSource$, $cheminDest$)]]></Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>

Comme vous pouvez le voir ce fichier XML n'est pas forcément complexe et impossible à écrire "à la main", mais quand des outils faisant cela de manière automatique existent il ne faut pas s'en priver. Je tiens aussi à préciser que notre exemple est très simple, avec un code long et complexe cela est une toute autre histoire ! :).

Il existe aussi un autre fichier XML nommé SnippetIndex.xml qui pour VB.Net est situé C:\Program Files\Microsoft Visual Studio 8\VB\Snippets\1036 qui lui reprend l'arborescence de tous les dossiers contenant des snippets. Si vous souhaitez modifier l'arborescence des snippets au niveau de la racine il vous faudra alors modifier ce fichier pour que les modifications apparaissent dans Visual Studio 2005, mais dans notre exemple cela n'est pas nécessaire.

4. Conclusion

L'outil Code Snippet Editor, fourni par Microsoft, est à mon sens très utile et excellemment simple à utiliser, en effet, il n'est pas nécessaire de se faire une entorse au cerveau avec un fichier XML un schéma XSD, tout est automatisé. Cependant, si pour diverses raisons ,il s'avérait indispensable de créer manuellement ses propres Snippets, cela resterait tout à fait possible, en effet un Snippet n'est dans l'absolu qu'un fichier XML (avec l'extension .snippet). La création manuelle de Snippet pour Visual Studio 2005 fera d'ailleurs l'objet d'un article dans les semaines à venir.

J'espère vous avoir fait découvrir et apprécier cet outil qui est, à mon goût, simple d'utilisation, pratique, et, qui plus est, sous licence "Shared Source".

Ressources

  • Télécharger Code Snippet Editor : Cliquez ici
  • Site Shared Source Initiative pour "Code Snippet Editor": Cliquez ici



Un très grand merci à Freegreg pour la relecture de cet article.