Code Diff in CppDepend
Maîtriser les différences de code source avec CppDepend
Ce document explique comment utiliser les fonctionnalités de comparaison de builds de CppDepend, dans le contexte de l’UI interactive. Le document Rapport de Code Diff explique comment utiliser les fonctionnalités de comparaison de builds de CppDepend, dans le contexte du reporting.
Vidéo de démarrage (2:30 min)
Regardez la vidéo de démarrage (2:30 min)
Apprenez à utiliser les fonctionnalités de diff de code de CppDepend.
Introduction
L'évolution et la maintenance du code font partie des caractéristiques les plus marquantes du génie logiciel.
CppDepend propose des fonctionnalités avancées d'évolution et de diff de code depuis mi-2009. L'un des résultats les plus intéressants de CppDepend intégré dans Visual Studio est que le développeur bénéficie désormais de plusieurs fonctionnalités de diff de code fines, à un clic de son environnement de développement naturel. Présentons 3 scénarios typiques de diff de code.
Diff de code depuis VisualCppDepend
Ainsi, par exemple, on peut faire un clic droit sur un projet dans le Code Browser et demander Sélectionnez les méthodes (du projet) dont le code a changé.

Cela génère une requête CQLinq qui Sélectionnez les méthodes (du projet) dont le code a changé Naturellement, pour chaque méthode listée, on peut sauter directement à la déclaration dans le code source ou demander un diff.

Revue des changements de code via le panneau de recherche
Le panneau Search Change est en fait juste un générateur de requêtes CQLinq lié aux changements de code. Par exemple, dans la capture d'écran ci-dessous, nous pouvons voir que demander Method + Change + Code was Changed or was Added génère la requête CQLinq :
1from m in Application.Methods23where m.CodeWasChanged() || m.WasAdded()45select new { m, m.NbLinesOfCode }
Le résultat affiché est idéal pour faire efficacement Revue des changements de code : non seulement tous les changements de code sont joliment organisés en un coup d'œil, mais pour chaque méthode refactorisée, le développeur n'est qu'à un clic d'observer le diff dans les fichiers sources.

Les options du panneau Search Change offrent diverses possibilités pour explorer les diffs, notamment la recherche d'éléments de code où seul le code (pas le commentaire) a été modifié ou où seul le commentaire a été modifié, où la visibilité a été changée, qui ont été ajoutés ou supprimés, etc....
Une option bonus consiste à rechercher les diffs dans le code tiers, comme demander quels types de bibliothèque ne sont plus utilisés.
Typiquement, les développeurs aiment écrire des tests pour tester automatiquement le code refactorisé et nouveau. Une autre option bonus intéressante est de rechercher le diff couplé au ratio de couverture de code par les tests, comme demander les méthodes dont le code a été modifié (c.-à-d. les méthodes refactorisées) et qui ne sont pas réellement bien couvertes par les tests.
Diff de code depuis Visual Studio
Comme nous venons de le voir, il y a un menu CppDepend dans le menu contextuel du code source, mais il y a aussi un menu CppDepend dans l'éditeur de code source de Visual Studio. Comme CppDepend reconnaît l'élément de code actuellement édité dans la source, l'utilisateur peut, par exemple, faire un clic droit sur une méthode et voir si elle a été modifiée. Si le code de la méthode a effectivement été modifié, plusieurs options apparaissent dans le menu contextuel CppDepend. L'une des options est Comparer l’ancienne et la nouvelle version du fichier source, ce qui ouvre une application de diff textuel pour voir les changements

Voici par exemple le outil de diff d’extension VS 2012 ouvert en cliquant sur Comparer l’ancienne et la nouvelle version du fichier source sur le NUnit v2.4.8 vs. v2.5.3 méthode IsPlatformSupported().

Revenez à la première capture d'écran ci-dessus, et vous verrez plusieurs autres options intéressantes, notamment Ouvrir ma déclaration dans l’ancien code source.
Précisons que non seulement les changements de méthodes sont pris en compte, mais aussi les changements de namespaces, de types et de champs. Par exemple, on peut faire un clic droit sur une déclaration de code source de namespace et demander les types ou méthodes du namespace qui ont été refactorisés ou ajoutés.
À ce stade, vous vous demandez peut-être comment CppDepend/Visual Studio connaît la version précédente du code avec laquelle comparer (ce qu'on appelle la baseline de comparaison). Ce concept est expliqué plus loin dans cet article, passons au deuxième scénario de diff de code.
Définition de la baseline de comparaison
Plus haut dans cet article, nous avons introduit le concept de Baseline de comparaison. Cela représente la version snapshot précédente de la base de code par rapport à laquelle la comparaison est effectuée. Typiquement, la baseline de comparaison représente la dernière version du code en production.
La baseline de comparaison peut être spécifiée via le menu : Diff > Define The Two Snapshots to Diff > Define the project's Baseline for Comparison. La boîte de dialogue ci-dessous apparaît et permet de choisir parmi différentes options pour définir la baseline. L'option Baseline for Comparison est ensuite conservée dans le fichier projet CppDepend.

Enfin, tout outil de diff peut être branché via le menu Diff > Outils de comparaison de fichiers sources.
Essayez CppDepend aujourd'hui
Commencez votre essai gratuit de 14 jours avec accès complet à toutes les fonctionnalités de documentation. Sans carte bancaire.
