Visualisation treemap des métriques de code
Visualisation treemap des métriques de code
Le Vue métriques dans CppDepend offre une puissante visualisation en treemap qui vous aide à comprendre votre base de code en un coup d'œil. En représentant les éléments de code sous forme de rectangles imbriqués, la treemap facilite le repérage des patterns, l'identification des zones problématiques et l'exploration visuelle de votre structure de code.
Vidéo de démarrage
Regardez la vidéo de démarrage (2:14 min)
Apprenez à utiliser la visualisation treemap pour explorer votre base de code.
Introduction
Dans le Vue métriques, la base de code est représentée par un Treemap. Le treemapping est une méthode d'affichage de données arborescentes à l'aide de rectangles imbriqués. La structure arborescente utilisée dans la treemap de CppDepend est la hiérarchie de code habituelle :
- Les projets C/C++ contiennent des espaces de noms,
- Les espaces de noms contiennent des types,
- Les types contiennent des méthodes et des champs.
Avec le treemap, les rectangles représentent les éléments de code. L'option niveau détermine le type d'élément de code représenté par les rectangles unitaires. L'option niveau peut prendre les 5 valeurs : projet, espace de noms, type, méthode et champ Les deux captures d'écran ci-dessous montrent la même base de code, représentée au niveau type à gauche et au niveau namespace à droite.

L’option Métrique de code du treemap détermine la taille des rectangles. Par exemple, si le niveau est défini sur type et la métrique est définie sur nombre de lignes de code, chaque rectangle unitaire représente un type, et la taille d'un rectangle unitaire est proportionnelle au nombre de lignes de code du type correspondant.
Si une requête PRQL est en cours d'édition, l'ensemble des éléments de code correspondant à la requête est affiché sur la treemap sous forme de rectangles bleus. Dans la capture d'écran ci-dessous, une requête PRQL correspond aux 200 plus grandes méthodes. Ici, le niveau de la treemap est méthode et la métrique est nombre de lignes de code Comme prévu, nous pouvons voir que les rectangles bleus représentent les 200 plus grands rectangles unitaires du treemap.
La capture d'écran ci-dessous montre aussi que l'élément de code actuellement pointé (ici le projet XML) est affiché comme un rectangle rouge sur la treemap.

Scénarios courants
En choisissant une combinaison appropriée de métrique et niveau valeurs, le Vue métriques aide à voir des motifs difficiles à repérer autrement.
Trop gros, trop complexe
CppDepend fournit de nombreuses métriques de code pour repérer le code trop gros et trop complexe. Les méthodes avec trop de paramètres, trop de variables, trop de lignes de code, une complexité cyclomatique trop élevée, etc... devraient être bannies. De la même manière, les types avec trop de lignes de code devraient aussi être bannis.
Sur la capture d'écran ci-dessous, le niveau du treemap est défini sur type et la métrique est nombre de lignes de code. Les grands rectangles représentent les grands types de la base de code. Survoler un rectangle avec la souris indique les valeurs des métriques du type, ici le nombre de lignes de code du type. Clairement, le treemapping de code aide non seulement à repérer les éléments de code trop grands et trop complexes, mais aussi à comparer leur taille et complexité respectives.

Localisation des défauts
Dans la capture d'écran ci-dessous, nous demandons avec une requête PRQL les méthodes ayant trop de paramètres et trop de variables. Les rectangles bleus montrent les méthodes correspondantes sur la treemap. Le point intéressant ici est que certaines méthodes correspondantes semblent groupées. Comme la treemap est une vue hiérarchique, si un ensemble d'éléments de code est groupé, cela signifie qu'ils appartiennent au même parent. Et en effet, ici les 12 méthodes groupées appartiennent au même type.
Repérer les types parents de ces 12 méthodes aurait été difficile sans le treemapping. Maintenant, le relecteur de qualité du code peut concentrer son attention sur cette région qui semble contenir plus de défauts que d'autres parties de la base de code.

Exploration du code descendante
La vue métrique treemap de CppDepend supporte le zoom avant et arrière. Cela facilite le zoom sur un projet, un namespace ou une classe en particulier. Cela peut être particulièrement utile pour explorer et comparer le volume des composants en termes de lignes de code.
La productivité ne devrait en aucun cas être mesurée en termes de lignes de code. Cependant, compter les lignes de code s'est avéré être une métrique utile pour estimer précisément un logiciel, dans le contexte donné d'une organisation. Les fonctionnalités de la base de code sont en quelque sorte réparties en assemblies, namespaces et types. Avec le treemapping, ces artefacts deviennent des rectangles côte à côte. Les surfaces des rectangles, donc le poids des fonctionnalités, peuvent être comparées visuellement. Pouvoir explorer périodiquement la taille du code via le treemapping est une façon unique de construire un sens précis du poids et du coût des fonctionnalités.
Faites l'expérience de visualiser le treemap sur une base de code que vous connaissez bien, et vous serez surpris de découvrir des tailles de fonctionnalités inattendues.

Observations sur la structure du code
En choisissant d’utiliser le Vue métriques avec une métrique différente du volume (lignes de code, nombre de paramètres pour les méthodes...) ou de la complexité, peut révéler des observations intéressantes.
Le métrique de classement est une métrique de code qui mesure la popularité d'un type ou d'une méthode dans une base de code. Utiliser le treemapping avec la métrique de ranking donne une vue claire de l'endroit où les types populaires sont déclarés. Cela donne rapidement des informations sur ce qui est important dans la base de code.
La capture d’écran ci-dessous montre les types de Microsoft DLR (Dynamic Language Runtime) base de code affichée en treemap avec la métrique de classement. Le treemap indique que CallSite et Expression sont des concepts populaires de la DLR, et c'est bien le cas ici.
Le même genre d'observations intéressantes sur la structure du code peut être fait avec des métriques de code comme Couplage afférent/efférent ou Niveau.

Essayez CppDepend aujourd'hui
Commencez votre essai gratuit de 14 jours avec accès complet à toutes les fonctionnalités de documentation. Sans carte bancaire.
