La dernière version, Understand 7.0, introduit des rapports interactifs qui transforment les mesures de code de base en représentations visuelles complètes et captivantes. Ces rapports sont hautement personnalisables, ce qui vous permet d’adapter l’analyse à vos besoins spécifiques et de découvrir l’histoire sous-jacente de vos efforts de codage.
Améliorer la qualité de mon code est un objectif pour cette année. Mais qu’entend-on exactement par « amélioration » ? Pour évaluer mes progrès, j’ai besoin de métriques mesurables – et c’est précisément ce que fournit la fonction « Metrics » de Understand. Understand est équipé d’un large éventail de métriques, allant du simple comptage de lignes à des mesures plus complexes telles que la complexité cyclomatique.
Cependant, les chiffres ne suffisent pas à me motiver. Le véritable défi réside dans la manière dont ces chiffres sont présentés. Je sais que manger des légumes est bon pour la santé, mais je n’y pense pas à moins qu’ils ne fassent partie d’un délicieux repas. De la même manière, les nouveaux rapports interactifs de Understand 7.0 présentent les métriques de code d’une manière à la fois perspicace et attrayante. Tout comme un chef habile prépare un plat pour attirer les sens, vous pouvez personnaliser ces rapports pour qu’ils correspondent à vos goûts. Cet article explique comment vous pouvez utiliser ces rapports personnalisables, y compris en créant vos propres plugins, pour interpréter et comprendre visuellement votre code, en allant au-delà des simples chiffres et en dévoilant les histoires détaillées que racontent vos métriques.
Inspiration pour les ingrédients
Pour cet article, je me concentre davantage sur la manière dont l’information est présentée que sur l’information elle-même. Je m’inspirerai pour le contenu des vues existantes dans Understand. Passons brièvement en revue tous les rapports et vues de métriques actuellement disponibles dans Understand :

- La page d’accueil présente un graphique de décomposition en lignes, un graphique des fonctions les plus complexes et un graphique de la structure des répertoires par lignes de code.
- La page d’accueil du projet développe ces graphiques en y ajoutant d’autres, concernant principalement les lignes de code et la complexité.
À partir de ces pages par défaut, les vues les plus importantes sont le Navigateur de métriques et l’Exportation CSV de métriques, tous deux accessibles à partir du menu Métriques. Il existe également une fonction moins connue, l’exportation HTML des métriques, accessible à partir du navigateur de métriques. Ces vues affichent de manière exhaustive toutes les métriques activées dans « Project Config » et tous les plugins de métriques activés.

Des vues métriques supplémentaires, moins connues, existent dans les rapports classiques. Bien qu’ils montrent des signes de vieillissement, ces rapports restent populaires et continuent d’être inclus dans l’application. La page d’aperçu des rapports HTML affiche des versions antérieures de graphiques similaires à ceux de la page d’accueil du projet. Il existe également cinq rapports de métriques spécifiques à mon projet OpenSSL.
Développement d’un plugin de rapport de métriques de lignes
Les lignes de code source (SLOC) et les métriques associées constituent une excellente base pour mon premier plugin. Elles sont en corrélation avec le temps, le coût et, potentiellement, la qualité du code. Voici mon raisonnement :
- Lignes, temps, argent : Plus de lignes signifie généralement plus de temps nécessaire pour comprendre, modifier, utiliser ou corriger le code, et le temps se traduit directement en argent.
- Signification des lignes et de l’architecture : Understand peut classer votre code en différentes architectures, par exemple par type de licence à l’aide d’un plugin d’architecture automatique. Cependant, ce sont les métriques de lignes qui révèlent vraiment la part de mon projet correspondant à chaque type de licence.
- Lignes et indicateurs de qualité : Les fonctions ou les fichiers extrêmement longs sont probablement difficiles à comprendre. Le rapport entre les commentaires et le code est également un indicateur de qualité.
Pour présenter les métriques des lignes, j’intégrerai des éléments provenant d’affichages existants dans Understand :
- Graphiques : J’apprécie le résumé graphique rapide fourni par le tableau de ventilation des lignes de la page d’accueil et de la page d’accueil du projet.
- Tableaux : Je préfère la vue détaillée dans les tableaux des rapports classiques, et les tableaux des rapports interactifs pourraient être améliorés avec des filtres.
- Hiérarchie : La structure arborescente de l’exportation HTML des métriques est utile, mais elle est volumineuse et trop détaillée. C’est pourquoi les rapports interactifs intègrent un système de fil d’Ariane pour faciliter la navigation.
Le plugin « Line Metric Interactive Report » qui en résulte peut être appliqué à n’importe quelle architecture (ou à un fichier spécifique ou à l’ensemble du projet), affichant un diagramme de répartition des lignes pour le niveau actuel, un tableau des éléments enfants et un système de navigation par fil d’Ariane. Ce nouveau rapport est disponible dans le gestionnaire de plugins de Understand.

Exploration des métriques de complexité
La complexité cyclomatique est une mesure essentielle pour évaluer la testabilité d’un code, car elle indique le nombre de points de décision et, par conséquent, le nombre de cas de test requis. Elle influe également sur la compréhensibilité et la maintenabilité. La métrique de complexité cyclomatique McCabe, ainsi que des normes telles que HIS Metrics, fournissent des seuils recommandés.
En modifiant mon rapport sur les métriques linéaires, je peux facilement créer un rapport sur la complexité. Je remplacerai le graphique de ventilation par ligne par le graphique « Fonctions les plus complexes » et j’échangerai les métriques de ligne contre des métriques de complexité, y compris la métrique « Complexité cognitive » en raison de sa pertinence.

Prise en compte d’autres rapports
Que faire ensuite ? Après avoir intégré les informations de trois rapports classiques et les deux tiers des graphiques de la page d’accueil, je pourrais reproduire l’exportation CSV des mesures ou le rapport HTML des mesures. Cependant, au lieu de créer des rapports surchargés et encombrés, je vais me concentrer sur la combinaison des mesures du rapport « Moyennes des fichiers ». Il s’agit de mesures de complexité et de mesures linéaires, présentées dans un graphique à bulles plat pour contraster visuellement avec un tableau carré.
