Métriques de qualité du code

Le rôle de la qualité du code : les mesures critiques et leur impact

IN-COM Le 2 juin 2026 ,

La qualité du code est mesurable. Cette affirmation paraît évidente jusqu'à ce qu'on tente de répondre à la question que se pose un directeur technique avant d'acquérir un logiciel, ou un responsable technique avant de s'engager dans un programme de refactoring : comment savoir si le code est bon ? « Il fonctionne » n'est pas une réponse. « L'équipe l'a revu » n'est pas une réponse non plus. La réponse exige des mesures objectives appliquées de manière cohérente : complexité cyclomatique par fonction, indice de maintenabilité par module, densité de défauts pour mille lignes, couverture de test par composant, taux de modification du code par fichier et par sprint. Chacune de ces mesures est quantifiée. Ces valeurs peuvent être analysées, comparées à des références et exploitées.

La compréhension du code commence ici

SMART TS XL calcule les indicateurs de qualité pour chaque langue et plateforme de votre environnement.

Cliquez ici

Le problème est que les indicateurs de qualité du code ne sont ni interchangeables ni universellement interprétables. Un indice de maintenabilité élevé dans un programme COBOL n'a pas la même signification que le même score dans un script Python. Une complexité cyclomatique de 15 est acceptable pour une machine à états bien testée, mais constitue un problème sérieux pour une fonction de validation. Une densité de défauts de 2 bogues par kiloligne de code est excellente en programmation système et alarmante pour une application embarquée critique. Pour que ces indicateurs soient utiles, il est essentiel de comprendre ce que chacun mesure, les facteurs qui l'influencent et les seuils appropriés au contexte. La suite de cet article répond précisément à ces questions.

Qu'est-ce que la qualité du code ?

La qualité du code correspond au degré auquel le code source satisfait un ensemble de propriétés mesurables qui le rendent correct, maintenable, lisible, efficace, sécurisé et testable. Aucune propriété, prise isolément, ne définit la qualité. Un code qui s'exécute correctement mais est illisible voit sa qualité se dégrader à chaque modification, car les développeurs qui ne le comprennent pas ne peuvent pas le modifier en toute sécurité. Un code lisible mais non testé recèle des défauts cachés. Un code testé mais structurellement complexe accumule davantage de défauts à mesure qu'il évolue, car la complexité multiplie la probabilité qu'une modification donnée provoque un dysfonctionnement inattendu.

La norme ISO/IEC 25010 définit formellement huit caractéristiques de qualité logicielle : l’adéquation fonctionnelle, l’efficacité des performances, la compatibilité, la facilité d’utilisation, la fiabilité, la sécurité, la maintenabilité et la portabilité. Concernant le code source, les caractéristiques mesurables directement à partir du code lui-même, et non à partir du comportement à l’exécution, sont la maintenabilité, la fiabilité (approximée par des indicateurs de défauts et de complexité), la sécurité (via l’analyse statique) et l’adéquation fonctionnelle (via la couverture des tests). Les autres caractéristiques nécessitent l’exécution du code pour être mesurées. Les indicateurs de qualité du code couvrent donc un sous-ensemble défini et important de la qualité logicielle, mais pas la totalité.

Pourquoi la qualité du code est importante

Les équipes techniques savent pourquoi la qualité du code est essentielle. Pour les décideurs et les équipes qui doivent convaincre en interne, le lien se fait par le biais des coûts et des délais. Des études menées par McKinsey et le Consortium for IT Software Quality (CISQ) montrent régulièrement que les développeurs consacrent entre 30 et 40 % de leur temps à contourner la dette technique existante plutôt qu'à développer de nouvelles fonctionnalités. Une mauvaise qualité du code est le mécanisme par lequel la dette technique s'accumule : chaque défaut non détecté à temps, chaque fonction plus complexe que nécessaire, chaque bloc de logique dupliqué nécessitant une maintenance séparée, augmente le coût de la modification suivante. Une qualité de code élevée réduit ce coût de manière continue, avec des économies cumulatives tout au long du cycle de vie du système.

Métriques de qualité du code : Référence complète

Les indicateurs ci-dessous couvrent toutes les grandes catégories de mesure de la qualité du code. Pour chaque indicateur, la définition, la méthode de mesure, la plage acceptable et l'interprétation sont expliquées. Les seuils du tableau ci-dessous correspondent aux normes industrielles largement reconnues ; les équipes travaillant dans des environnements critiques ou réglementés doivent appliquer des seuils plus stricts.

Mesures de complexité

Complexité cyclomatique Elle mesure le nombre de chemins linéairement indépendants à travers une fonction ou une méthode. Introduite par Thomas McCabe en 1976, elle reste la mesure de complexité la plus utilisée. La formule compte les points de décision. if, else if, switch cas, conditions de boucle, catch blocs, et opérateurs conditionnels, et ajoute 1. Une fonction sans branches a une complexité cyclomatique de 1.

Complexité cyclomatiqueInterprétation
1-5Simple, facile à tester
6-10Modéré, gérable
11-20Complexe, les tests deviennent difficiles
21-50Risque très élevé, refactorisation recommandée
50Impossible à tester, quasi certain de contenir des défauts

Une complexité cyclomatique élevée est fortement corrélée à la densité de défauts. Une étude publiée dans IEEE Transactions on Software Engineering a révélé que les fonctions dont la complexité cyclomatique est supérieure à 10 présentent des taux de défauts significativement plus élevés que les fonctions plus simples. analyse de complexité cyclomatique Dans les bases de code héritées, le problème est de trouver des fonctions qui ont accumulé une logique de décision au fil des années de maintenance sans que personne n'ait jamais remanié la structure globale.

Complexité Npath La complexité NPath compte le nombre de chemins d'exécution uniques au sein d'une fonction, y compris ceux créés par des conditions imbriquées et des boucles. Alors que la complexité cyclomatique compte les branches linéairement, la complexité NPath les multiplie : une fonction comportant trois blocs if-else séquentiels a une complexité cyclomatique de 4, mais une complexité NPath de 8, car chaque condition peut être vraie ou fausse indépendamment. La complexité NPath croît exponentiellement avec l'imbrication. Une valeur supérieure à 200 indique une fonction qui nécessiterait un nombre de cas de test trop important pour qu'une équipe puisse raisonnablement les écrire.

Complexité cognitive Introduit par SonarSource, cet indicateur mesure la difficulté de compréhension du code plutôt que le nombre de chemins d'accès qu'il contient. Il pénalise davantage l'imbrication que les embranchements linéaires. if Dans un while à l'intérieur d'un autre if scores supérieurs à trois séquences if Les instructions présentant la même complexité cyclomatique sont comparées à d'autres méthodes. La complexité cognitive correspond mieux à la difficulté réelle rencontrée par les développeurs lors de la lecture du code. Une complexité cognitive supérieure à 15 par méthode est généralement signalée pour une révision ; supérieure à 25, elle indique une fonction que la plupart des développeurs auront réellement du mal à comprendre.

Métriques Halstead Halstead déduit une famille de mesures à partir de quatre décomptes dans le code source : opérateurs distincts (n1), opérandes distincts (n2), nombre total d’opérateurs (N1) et nombre total d’opérandes (N2). À partir de ces données, il calcule :

  • Volume (N × log2(n)) : la taille de l'implémentation en contenu informationnel
  • Difficulté (n1/2 × N2/n2) : une estimation de la difficulté d'écriture ou de compréhension du code.
  • Effort (Volume × Difficulté) : l'effort mental total estimé pour implémenter ou comprendre le code

Les métriques de Halstead sont particulièrement utiles pour comparer des fonctions de complexité cyclomatique similaire et déterminer laquelle est la plus difficile à comprendre. Une fonction comportant 10 branches sur des variables clairement nommées présente une difficulté de Halstead inférieure à celle d'une fonction comportant 10 branches sur des indices calculés et des identificateurs d'un seul caractère.

Métriques de maintenabilité

Indice de maintenabilité Il s'agit d'une métrique composite initialement développée par Paul Oman et Jack Hagemeister, puis adoptée par Microsoft Visual Studio comme mesure standard de maintenabilité. Elle combine le volume de Halstead, la complexité cyclomatique et le nombre de lignes de code en un score unique.

La formule de Visual Studio produit un score de 0 à 100 :

Indice de maintenabilitéNote
20-100Durable (vert)
10-19Préoccupation modérée en matière d'entretien (jaune)
0-9Difficile à entretenir (rouge)

L'indice de maintenabilité est une statistique synthétique. Il est surtout utile pour identifier les valeurs aberrantes, c'est-à-dire les fichiers ou modules dont le score est faible (zone rouge), plutôt que pour une comparaison fine entre les modules de niveau élevé (zone verte). En Python, radon La bibliothèque calcule directement l'indice de maintenabilité. Dans Visual Studio, il apparaît dans la fenêtre Métriques du code. analyse de code statique Sur les plateformes, l'indice de maintenabilité est généralement l'un des résultats standard, au même titre que la complexité cyclomatique et le nombre de lignes de code.

Lignes de code (LOC) et KLOC Mesurez la taille du code en lignes ou en milliers de lignes. Le nombre de lignes de code (LOC) seul ne donne aucune indication sur la qualité, mais il fournit des dénominateurs essentiels pour d'autres métriques : la densité de défauts correspond au nombre de bogues par kiloligne de code (KLOC), la densité de commentaires au nombre de commentaires par ligne de code (LOC) et la densité de tests au nombre d'assertions de tests par ligne de code (LOC). Le LOC permet également d'évaluer le coût de la complexité : une fonction de 500 lignes avec une complexité cyclomatique de 20 représente un problème bien plus important qu'une fonction de 50 lignes avec la même complexité.

Détournement de code Le taux de modification du code au fil du temps est mesuré en additionnant le nombre de lignes ajoutées, supprimées et modifiées par fichier et par unité de temps. Un taux de modification élevé indique une instabilité : un code qui change fréquemment peut être dû à une conception initiale erronée, à des exigences instables ou à des bogues nécessitant des correctifs constants. Une étude de Microsoft a révélé que les fichiers appartenant aux 10 % de code les plus modifiés contenaient cinq fois plus de défauts que les fichiers moins modifiés. Le suivi du taux de modification du code, associé à celui des taux de défauts, permet de déterminer si les modifications fréquentes améliorent la qualité ou engendrent de nouveaux problèmes.

Mesures de couverture du code

Couverture des tests unitaires Le taux de couverture correspond au pourcentage de lignes, de branches ou de conditions du code exécuté par les tests unitaires. La forme la plus pertinente est la couverture de branches : elle vérifie si chaque décision du code peut être atteinte par au moins un test, aussi bien pour le résultat vrai que pour le résultat faux. La couverture de lignes est plus facile à manipuler : un test qui exécute chaque ligne sans rien vérifier atteint 100 % de couverture de lignes et ne détecte aucun test.

Normes sectorielles pour la couverture des tests unitaires :

  • En dessous de 50 % : insuffisant, la plupart des défauts ne seront pas détectés par les tests.
  • 50-75 % : modéré, les principaux chemins sont couverts, les cas limites sont probablement omis.
  • 75-90 % : convient à la plupart des codes d'application
  • Supérieur à 90 % : convient aux systèmes critiques pour la sécurité ou à haute fiabilité

Couverture du code dans les applications critiques pour la sécurité Les normes sont plus strictes. Les normes DO-178C pour les logiciels aéronautiques et IEC 61508 pour la sécurité fonctionnelle spécifient des exigences de couverture (couverture MC/DC pour les niveaux de criticité les plus élevés) qui vont au-delà des tests unitaires standard. Améliorer la qualité du code dans les applications critiques pour la sécurité exige des outils de couverture qui suivent la couverture des conditions et des décisions et peuvent produire les preuves formelles requises par les organismes de certification.

Densité de test L'indicateur de couverture complète le tableau en mesurant le nombre d'assertions de test par rapport à la taille du code de production. Une couverture élevée associée à une faible densité de tests peut indiquer des tests qui exécutent du code sans vérifier significativement le comportement. À l'inverse, une forte densité de tests associée à une faible couverture indique des tests concentrés dans une petite partie du code.

Métriques des défauts

Densité des bogues La densité de défauts (ou indice de défauts) correspond au nombre de défauts confirmés pour mille lignes de code (KLOC). C'est la mesure quantitative la plus directe de la qualité du code. Les benchmarks du CISQ indiquent que les logiciels commerciaux prêts à l'emploi présentent en moyenne 15 à 50 défauts par KLOC avant les tests ; après les tests et la mise en production, les logiciels commerciaux de haute qualité affichent généralement moins d'un défaut par KLOC.

Résultats de l'analyse statique Estimer la densité des défauts avant leur confirmation par des tests ou en production. Des outils comme SonarQube, Checkmarx et SMART TS XL L'analyse du code source permet d'identifier les schémas associés aux classes de défauts et de vulnérabilités connues, et de recenser les problèmes potentiels classés par niveau de gravité. Le ratio entre les problèmes critiques et bloquants et le nombre de lignes de code (LOC) fournit une première indication de la qualité du code avant même les tests.

Densité de l'odeur du code Ce système comptabilise la présence d'anti-modèles, de code dupliqué, de fonctions excessivement longues, de couplage excessif entre classes, de fonctionnalités superflues et d'objets omniprésents, par kiloligne de code (KLOC). Les anomalies de code ne provoquent pas de défaillances immédiates, mais permettent d'anticiper les défauts futurs et les coûts de maintenance. Dans un code source présentant une forte densité d'anomalies de code, le coût de chaque modification ultérieure est accru, car chaque changement doit composer avec les problèmes structurels accumulés.

Métriques de lisibilité et de style

Densité des commentaires Le ratio entre le nombre de lignes de commentaires et le nombre de lignes de code est important. Les valeurs optimales varient selon le langage et les conventions d'équipe, mais se situent généralement entre 10 et 30 %. Un ratio inférieur à 10 % peut indiquer un code insuffisamment documenté ; un ratio supérieur à 50 % peut indiquer un code si complexe qu'il nécessite des explications détaillées de sa logique non évidente. La qualité des commentaires prime sur la quantité : un commentaire qui explique ce que fait le code (// increment i by 1) n'ajoute rien, tandis qu'un commentaire expliquant pourquoi un algorithme spécifique a été choisi apporte une valeur ajoutée significative.

Conformité aux conventions d'appellation Cette mesure indique le pourcentage d'identificateurs (variables, fonctions, classes) conformes aux conventions de nommage du projet. Les outils automatisés peuvent imposer ces conventions lors de la configuration de l'analyse statique du code. Une nomenclature cohérente est l'une des améliorations les plus importantes en termes de lisibilité, car elle permet aux développeurs de deviner la fonction d'un identificateur à partir de son seul nom, réduisant ainsi la charge cognitive liée à la lecture de code inconnu.

Taux de duplication des codes Ce paramètre mesure le pourcentage de code dupliqué sur plusieurs emplacements. Une duplication supérieure à 5 % est généralement signalée. Le code dupliqué multiplie les efforts de maintenance : un bogue dans la logique dupliquée doit être trouvé et corrigé dans chaque copie, et les modifications de comportement doivent être appliquées de manière cohérente à toutes les copies. La duplication masque également la taille réelle du code : un système qui semble comporter 100 000 lignes peut contenir 40 000 lignes de logique unique et 60 000 lignes de copies.

Indicateurs de sécurité et de dette technique

Ratio de dette technique SonarQube définit le ratio de dette technique comme le rapport entre le coût estimé de la correction et le coût estimé du développement du code source. Un ratio inférieur à 5 % indique un code source propre ; un ratio supérieur à 20 % révèle une dette technique accumulée importante qui ralentira considérablement les développements futurs.

Densité des points d'accès de sécurité Ce compteur recense le nombre de points critiques de sécurité (modèles de code nécessitant une analyse de sécurité, et non des vulnérabilités confirmées) par kiloligne de code (KLOC). Parmi les exemples, citons les requêtes SQL non paramétrées, l'utilisation de fonctions cryptographiques obsolètes et la gestion des entrées non validées. Les outils d'analyse statique identifient ces modèles et les signalent comme des éléments nécessitant une analyse de sécurité manuelle.

Densité de vulnérabilité Ce chiffre correspond au nombre de vulnérabilités de sécurité confirmées par kiloligne de code (KLOC), généralement classées selon leur niveau de gravité CVSS. Cette métrique est particulièrement pertinente dans le cadre d'audits de sécurité post-déploiement ou de processus de surveillance continue de la sécurité.

Comment mesurer la qualité du code : une approche pratique

L'évaluation de la qualité du code n'est pas une action ponctuelle, mais une pratique continue intégrée au processus de développement. Une approche pragmatique en quatre phases est particulièrement adaptée aux équipes travaillant à partir d'une base de code non évaluée.

Phase 1 : Établir une base de référence. Effectuez une analyse statique complète du code source avant toute modification. Notez les valeurs actuelles de la distribution de la complexité cyclomatique, de l'indice de maintenabilité par fichier, de la densité des défauts, de la couverture et du taux de duplication. Cette base de référence servira de point de départ pour toutes les mesures ultérieures. Sans elle, il est impossible de déterminer si les modifications améliorent ou dégradent la qualité.

Phase 2 : Définir les seuils. Définissez des seuils acceptables pour chaque indicateur, adaptés au contexte. Les seuils appropriés diffèrent entre une application web commerciale et un dispositif médical critique. Documentez ces seuils dans les normes de qualité du projet et assurez-vous qu'ils soient accessibles à toute l'équipe.

Phase 3 : Intégration dans CI/CD. Configurez le pipeline CI pour calculer les indicateurs clés à chaque commit ou pull request. Signalez les modifications qui font sortir un indicateur de sa plage acceptable. Bloquez les fusions qui introduisent du code dont la complexité cyclomatique dépasse le seuil, qui réduisent la couverture en dessous du seuil ou qui révèlent des anomalies critiques lors de l'analyse statique. Ainsi, les seuils des indicateurs deviennent des normes contraignantes.

Phase 4 : Analyser les tendances, et non les instantanés. Une mesure ponctuelle est informative ; une tendance permet d’agir. Une augmentation du taux de renouvellement du code dans un module spécifique, une diminution de la couverture de code au cours du cycle de publication ou une baisse de l’indice de maintenabilité pour un fichier particulier signalent des problèmes qu’une mesure ponctuelle pourrait ne pas détecter. Analysez les tendances des indicateurs lors de chaque rétrospective de sprint.

Métriques de qualité du code dans les contextes d'entreprise, agiles et critiques pour la sécurité

Métriques de qualité du code dans le développement agile

Les équipes agiles sont confrontées à un défi particulier concernant les indicateurs de qualité du code : l’accent mis sur la livraison rapide de logiciels fonctionnels peut engendrer une pression pour une mise en production avant la résolution des problèmes de qualité. La solution n’est pas d’abandonner les indicateurs, mais de les intégrer à la définition de « terminé ». Une user story n’est pas considérée comme terminée lorsque la fonctionnalité est opérationnelle ; elle l’est lorsque la fonctionnalité est opérationnelle et que le nouveau code répond aux critères de qualité de l’équipe.

Dans un contexte agile, les indicateurs avancés, qui permettent d'anticiper les problèmes futurs avant qu'ils ne se manifestent, incluent le taux de modification du code, la dette technique introduite par sprint et l'évolution du nombre d'anomalies détectées lors de l'analyse statique par version. Les indicateurs retardés, qui mesurent les résultats déjà obtenus, incluent la densité des défauts détectés lors des tests, le temps consacré à la maintenance par rapport au développement de nouvelles fonctionnalités et le taux d'incidents en production par version.

Qualité du code pour la vérification préalable technique

Dans le cadre des opérations de fusions-acquisitions, de la sélection des fournisseurs et des processus d'acquisition de systèmes, l'audit technique préalable exige une évaluation structurée de la qualité du code sur l'ensemble de la base de code. Les indicateurs les plus pertinents dans ce contexte sont :

  • distribution de l'indice de maintenabilité: quel pourcentage du code source se trouve dans les zones rouges, jaunes et vertes
  • ratio de dette technique: quel est le coût estimé de la remise en état par rapport au coût du développement
  • Densité de défauts: combien de défauts connus existent par KLOC, et comment cela se compare-t-il aux normes de l'industrie ?
  • Couverture de test: quel pourcentage du code source est couvert par des tests automatisés, et à quel niveau (ligne, branche, condition) ?
  • Santé dépendante: combien de dépendances externes existent, combien sont obsolètes ou abandonnées, et à quel point l'architecture est profondément couplée
  • Duplication de code: quelle fraction du code source est dupliquée, indiquant le risque de maintenance

Comme examiné dans le contexte de analyse d'impact pour l'évaluation du code d'entrepriseIl est essentiel, pour une vérification préalable précise, de comprendre non seulement le score de chaque composant en matière de qualité, mais aussi la façon dont les composants dépendent les uns des autres : un module de faible qualité isolé peut représenter un coût de correction gérable, tandis que le même module au centre d’un graphe de dépendance dense représente un risque beaucoup plus important.

Qualité du code dans les applications critiques pour la sécurité et les applications fintech

Les applications critiques pour la sécurité dans les secteurs de l'aéronautique, de l'automobile, des dispositifs médicaux et du contrôle industriel exigent des normes de qualité de code supérieures à celles des logiciels commerciaux classiques. Principales différences :

  • Les limites de complexité cyclomatique sont généralement fixées à 10 ou moins, et les exceptions nécessitent une justification formelle.
  • Les exigences en matière de couverture utilisent la couverture MC/DC (couverture par condition/décision modifiée) plutôt que la couverture par ligne ou par succursale.
  • L'analyse statique doit être réalisée avec des outils certifiés et les infractions doivent être documentées et résolues ou formellement acceptées.
  • Le taux de modification du code est surveillé comme indicateur de sécurité : des taux de modification élevés dans les modules critiques pour la sécurité déclenchent un examen et une revalidation supplémentaires.

Les applications fintech subissent des pressions similaires de la part des cadres réglementaires. La norme PCI DSS impose des standards de codage sécurisés et des processus de revue de code. La conformité SOX pour les systèmes d'information financière exige une traçabilité documentée, des exigences au code, jusqu'aux tests. Les indicateurs de qualité du code fournissent la preuve objective du bon fonctionnement de ces processus : les rapports de couverture attestent de l'existence des tests, les rapports d'analyse statique prouvent que les vulnérabilités connues ont été vérifiées et les rapports de complexité démontrent que les relecteurs ont pu évaluer le code de manière raisonnable.

Métriques de qualité du code par langage

Métriques de qualité du code Python peut être calculé en utilisant radon (indice de complexité cyclomatique et de maintenabilité), pylint (mauvaises pratiques et violations de style), coverage.py (couverture des tests), bandit (problèmes de sécurité), et mypy or pyright (exactitude du type). L'indice de maintenabilité dans radon Utilise une formule de Halstead modifiée et calibrée pour Python. La note A est supérieure à 20, la note B est comprise entre 10 et 20, et la note C est inférieure à 10.

Qualité du code RPG Sur IBM i, des outils spécialisés sont nécessaires car les outils standard de mesure de la qualité n'analysent pas la syntaxe RPG. SMART TS XL Il fournit une analyse de la complexité cyclomatique, des lignes de code et des dépendances pour les programmes RPG, ce qui est particulièrement précieux pour les entreprises IBM i gérant de grandes bases de code héritées où la mesure de la qualité était auparavant impossible à automatiser.

Métriques de revue de code

La revue de code est une activité de contrôle qualité dont l'efficacité peut être mesurée :

  • Examiner la couverture: pourcentage de code validé ayant fait l'objet d'une revue formelle avant la fusion
  • Défauts constatés par avis: le nombre de défauts détectés lors de la revue par rapport à la taille de l'ensemble de modifications examiné.
  • délai de traitement des avis: le délai entre l'ouverture d'une demande de fusion et son examen et sa fusion
  • Taux de résolution des commentaires: le pourcentage de commentaires de révision qui entraînent une modification du code par rapport à ceux qui sont rejetés

Les équipes les plus performantes affichent généralement un taux de couverture des revues supérieur à 90 %, une moyenne de 1 à 3 défauts détectés par revue pour 100 lignes examinées, et des délais de traitement courts. Les indicateurs de revue permettent de déterminer si la revue de code constitue un véritable contrôle qualité ou une simple formalité.

Surveillance continue de la qualité du code

Une mesure ponctuelle de la qualité du code est bien moins pertinente qu'une surveillance continue. La qualité du code n'est pas une propriété fixe ; elle évolue à chaque commit. Un code performant aujourd'hui peut se dégrader considérablement en trois sprints de développement précipités si les indicateurs de qualité ne sont pas suivis en permanence.

Un suivi efficace et continu de la qualité du code comprend :

  • Calcul des indicateurs par engagement: résultats de l'analyse de complexité cyclomatique et de l'analyse statique calculés à chaque poussée
  • Tableaux de bord de tendances: visualisations des indicateurs clés au fil du temps, mises à jour quotidiennement ou à chaque mise à jour
  • Contrôles qualité dans l'intégration continue/déploiement continu (CI/CD): application automatisée des seuils minimaux pour les indicateurs ayant une incidence sur la maintenabilité, la sécurité et le risque de défaut
  • Détection de régression: alertes lorsqu'une métrique évolue significativement dans la mauvaise direction entre deux versions

Les principaux indicateurs d'amélioration de la qualité du code, ceux qui permettent de prédire si la qualité sera meilleure ou moins bonne lors de la prochaine version, sont la tendance de la couverture de code, la complexité nouvelle introduite par sprint et le ratio entre les anomalies de code corrigées et celles introduites. Lorsque ces indicateurs évoluent dans le bon sens, la qualité s'améliore. Dans le cas contraire, la détérioration est prévisible avant même qu'elle ne se produise pleinement.

Comment SMART TS XL Mesure et améliore la qualité du code

SMART TS XL calcule l'ensemble des indicateurs de qualité du code décrits dans cet article pour chaque langage et plateforme de l'environnement de développement : COBOL, JCL, Java, .NET, Python, JavaScript, TypeScript, RPG, SQL, et autres. Alors que la plupart des outils de qualité fonctionnent sur un seul langage à la fois, SMART TS XL Il permet de construire un modèle de qualité unifié de l'ensemble du système, ce qui rend possible la comparaison de la qualité entre les langages, le suivi des indicateurs au niveau du système plutôt qu'au niveau du fichier, et l'identification des problèmes de qualité inter-composants que les outils mono-langage ne peuvent pas détecter.

Pour les grandes entreprises disposant de vastes bases de code multilingues, analyse de code statique capacité de SMART TS XL Elle fournit la mesure de référence dont ont besoin la vérification préalable technique, la planification de la modernisation des systèmes existants et l'amélioration continue de la qualité. mappage des dépendances Cette capacité étend l'évaluation de la qualité aux aspects structurels : quels composants sont les plus importants, quels changements ont le plus grand impact et quelles zones du code source représentent le risque de maintenance le plus élevé lorsque les indicateurs de qualité sont combinés à la centralité des dépendances.

SMART TS XLLes indicateurs de qualité du code de [Nom de l'entreprise] s'intègrent aux pipelines DevOps via son API, permettant ainsi des contrôles qualité au niveau CI/CD. Lorsqu'un commit introduit une fonction dont la complexité cyclomatique dépasse le seuil défini, ou réduit la couverture de code en dessous du minimum configuré, ou encore introduit une anomalie critique lors de l'analyse statique, le pipeline peut faire échouer la compilation en fournissant un diagnostic précis indiquant au développeur exactement ce qui a été mesuré et pourquoi le seuil a été dépassé. Ce mécanisme déplace le contrôle qualité des audits post-déploiement vers un retour d'information en cours de développement, réduisant ainsi le coût des problèmes de qualité en les détectant au moment où leur correction est la plus économique.

La qualité du code est une discipline d'équipe, pas un rapport.

La valeur des indicateurs de qualité du code dépend entièrement de l'usage qu'en font les équipes. Un rapport trimestriel sur la qualité du code qui reste lettre morte est pire que l'absence de rapport, car il donne l'illusion d'une gestion de la qualité alors que le code se dégrade sans contrôle. Les indicateurs deviennent précieux lorsqu'ils induisent des actions concrètes : lorsqu'un pic de complexité cyclomatique dans une nouvelle fonction déclenche une discussion sur sa refactorisation avant sa fusion ; lorsqu'une baisse de la couverture de code dans un module entraîne un sprint de tests ; lorsqu'une augmentation de la densité des défauts dans un composant spécifique provoque une revue formelle de sa conception.

Instaurer cette culture exige de rendre les indicateurs visibles au bon moment, pendant le développement et non après la mise en production, et de les relier à des engagements concrets de l'équipe. Les équipes qui analysent les tendances de la qualité de leur code à chaque rétrospective de sprint, qui intègrent des seuils de qualité dans leur définition de « terminé » et qui traitent une régression d'indicateur avec autant de sérieux qu'une régression de fonctionnalité, développent des bases de code moins coûteuses à maintenir et générant moins d'incidents en production sur le long terme. La mesure est le point de départ. La discipline, quant à elle, produit le résultat.