Mapper des dépendances spécifiques dans des mappages de code
Lorsque vous voulez comprendre les dépendances spécifiques présentes dans votre code, visualisez-les en créant les cartes de code (Visual Studio Ultimate uniquement). Vous pouvez alors parcourir ces relations à l'aide du mappage, qui apparaît en regard de votre code. Vous pouvez ainsi suivre votre emplacement dans le code pendant que vous travaillez.
Une flèche verte indique l'emplacement de votre curseur dans l'éditeur. Vous pouvez rédiger des notes sur une carte, comme sur du papier.
Les cartes de code vous évitent d'être perdu dans les grandes bases de code, en cas de code inconnu ou de code hérité. Par exemple, lorsque vous effectuez un débogage, il peut s'avérer nécessaire d'examiner le code sur de nombreux fichiers et projets. Les cartes de code vous aident à naviguer dans ces segments de code et de visualiser leurs relations. Vous n'êtes pas obligé de mémoriser l'intégralité du code, d'assurer le suivi des fichiers ou de dessiner un diagramme papier séparé. Si vous devez interrompre votre travail, les cartes de code vous aident à actualiser la mémoire relative au code sur lequel vous travaillez.
Ouvrir ou créer une carte de code
Pour créer une carte de code, vous avez besoin de Visual Studio Ultimate 2013 et d'une solution disposant de code Visual C# .NET, Visual Basic .NET, X++ pour Microsoft Dynamics AX ou C++ (prise en charge limitée). Pour obtenir des relations à code de couleurs, vous avez besoin de Visual Studio 2013 Update 3. Pour mapper du code X++ et du code partagé entre plusieurs applications, vous avez besoin de Visual Studio 2013 Update 2 ou version ultérieure.
Vous pouvez créer une carte de code en procédant de l'une des façons suivantes :
en cliquant avec le bouton droit sur un élément tel qu'un fichier source ou un fichier binaire dans l'Explorateur de solutions et en sélectionnant Afficher sur la carte de code. Cette opération crée une carte de code pour l'élément sélectionné ;
en faisant glisser un élément tel qu'un fichier source ou un fichier binaire à partir de l'Explorateur de solutions vers une carte de code ouverte pour inclure ou mettre en surbrillance l'élément dans la carte ;
en cliquant avec le bouton droit sur une zone vide de la fenêtre de l'éditeur, puis en sélectionnant Afficher sur la carte de code. Cette opération crée une nouvelle carte de code vide.
en cliquant avec le bouton droit sur un objet ou une classe dans la fenêtre de l'éditeur, puis en sélectionnant Afficher sur la carte de code. Cette opération crée une carte de code pour l'élément sélectionné. Ce menu permet également d'accéder à toutes les références ou d'afficher les éléments associés sur une carte du code ;
en cliquant sur le bouton Carte du code du Déboguer lorsque l'application est suspendue ;
à partir d'un fichier IntelliTrace ouvert, ou en tant que graphique de dépendance à partir du menu Architecture.
Vous pouvez afficher des cartes de code, leur apporter des modifications mineures et les parcourir à l'aide de Visual Studio Premium 2013 ou Visual Studio Professional 2013.
Avant de partager des cartes avec ceux qui utilisent les éditions Premium ou Professional, vérifiez que tous les éléments présents sur la carte sont visibles, comme les éléments masqués, les groupes développés et les liens entre les groupes.
Regardez les cartes de code en action : Présentation du code complexe avec mappage de code (Channel 9)
Comprendre le problème
Supposons qu'il existe un bogue dans un programme de dessin sur lequel vous travaillez. Pour reproduire le bogue, ouvrez la solution dans Visual Studio Ultimate et appuyez sur F5 pour démarrer le débogage.
Lorsque vous dessinez une ligne et choisissez Annuler mon dernier trait, rien ne se produit tant que vous ne dessinez pas la ligne suivante.
Vous commencez donc par rechercher la méthode Undo. Elle se trouve dans la classe PaintCanvas.
Commencer à mapper le code
Vous commencez maintenant le mappage de la méthode undo et de ses relations. Dans l'éditeur de code, ajoutez la méthode undo et les champs référencés à une nouvelle carte de code. Lorsque vous créez un mappage, l'indexation du code peut prendre un certain temps. Cela permet aux opérations ultérieures de s'exécuter plus rapidement.
Conseil
Le surlignage vert indique les derniers éléments ajoutés à la carte.La flèche verte indique la position de votre curseur dans le code.Les flèches situées entre les éléments représentent différentes relations.Vous pouvez obtenir plus d'informations sur les éléments de la carte en examinant leurs info-bulles.
Naviguer et examiner le code à partir de la carte
Pour afficher la définition du code pour chaque champ, double-cliquez sur le champ de la carte, ou choisissez le champ et appuyez sur F12. La flèche verte se déplace entre les éléments de la carte. Votre curseur dans l'éditeur de code se déplace également automatiquement.
Conseil
Vous pouvez également déplacer la flèche verte sur la table en déplaçant le curseur dans l'éditeur de code.
Comprendre les relations entre les éléments de code
Vous souhaitez maintenant déterminer quel autre code interagit avec les champs history et paintObjects. Vous pouvez ajouter toutes les méthodes qui référencent ces champs à la carte. Vous pouvez le faire à partir de la carte ou à partir du code.
Modifiez la disposition pour réorganiser le flux des relations et simplifier la lecture de la carte. Vous pouvez également déplacer des éléments sur la carte en les faisant glisser.
Conseil
Par défaut, la disposition incrémentielle est activée.Ainsi, lorsque vous ajoutez de nouveaux éléments, la carte est réorganisée au minimum.Pour réorganiser l'ensemble de la carte chaque fois que vous ajoutez de nouveaux éléments, désactivez Disposition incrémentielle.
Examinons ces méthodes. Sur la carte, double-cliquez sur la méthode PaintCanvas, ou choisissez cette méthode et appuyez sur F12. Vous apprenez que cette méthode crée history et paintObjects sous forme de listes vides.
Répétez maintenant les mêmes étapes pour examiner la définition de la méthode clear. Vous apprenez que clear effectue des tâches avec paintObjects et history. Elle appelle ensuite la méthode Repaint.
Examinez maintenant la définition de méthode addPaintObject. Elle effectue également quelques tâches avec history et paintObjects. Elle appelle également Repaint.
Rechercher le problème en examinant la carte
Il apparaît que toutes les méthodes qui modifient history et paintObjects appellent Repaint. Néanmoins la méthode undo n'appelle pas Repaint, même si undo modifie les mêmes champs. Vous pensez ainsi pouvoir résoudre ce problème en appelant Repaint depuis undo.
Si vous n'aviez pas de carte pour indiquer cet appel manquant, il aurait pu être plus difficile de rechercher ce problème, surtout avec un code plus complexe.
Partager votre découverte et étapes suivantes
Avant de corriger ce problème, vous pouvez rédiger des notes sur la carte à propos du problème et de la façon de le résoudre.
Par exemple, vous pouvez ajouter des commentaires à la carte et signaler des éléments à l'aide de couleurs.
Si vous avez installé Microsoft Outlook, vous pouvez envoyer la carte à d'autres personnes par courrier électronique. Vous pouvez également exporter la carte en tant qu'image ou dans un autre format.
Corriger le problème et afficher ce que vous avez fait
Pour corriger ce bogue, ajoutez l'appel de Repaint à undo.
Pour confirmer votre correction, redémarrez la session de débogage et essayez de reproduire le bogue. L'option Annuler mon dernier trait fonctionne désormais comme prévu et confirme que vous avez effectué la correction appropriée.
Vous pouvez mettre à jour la carte pour afficher la correction effectuée.
Votre carte affiche maintenant un lien entre undo et Repaint.
Notes
Lorsque vous mettez à jour la carte, un message peut s'afficher pour indiquer que l'index de code utilisé pour créer votre carte a été mis à jour.Cela signifie que quelqu'un a modifié le code, ce qui provoque une incompatibilité de votre carte avec le code actuel.Cela ne vous empêche pas de mettre à jour la carte, mais vous devrez peut-être la recréer pour confirmer qu'elle correspond au code.
Vous avez maintenant terminé votre examen. Vous avez trouvé et résolu avec succès le problème en mappant le code. Vous disposez également d'une carte qui vous permet de naviguer dans le code, de vous souvenir de ce que vous avez appris et d'indiquer les mesures prises pour résoudre le problème.
Voir aussi
Concepts
Mapper les méthodes sur la pile des appels tout en déboguant dans Visual Studio