ChatGPT a récemment gagné en popularité. En tant qu'équipe forte d'années d'expérience en qualité de code, nous avons décidé d'expérimenter ChatGPT en lui demandant de créer une nouvelle métrique logicielle. Avant de soumettre la requête, nous doutions d'obtenir un résultat utile — voire un résultat tout court. Nous craignions que la réponse soit du genre :
« Créer une nouvelle métrique logicielle nécessite des tests approfondis sur des projets réels pour démontrer sa fiabilité comme indicateur d'amélioration de la qualité du code. »
Cependant, à notre grande surprise, nous avons reçu une métrique :)

Mais cette métrique est-elle vraiment un indicateur fiable de maintenabilité ?
Analysons la formule : `lowCyclomaticComplexity + HighCohesion`
Le raisonnement derrière cette formule est le suivant :
- La maintenabilité dépend de la complexité des méthodes.
- La maintenabilité dépend aussi de la cohésion des types.
- Il n'y a pas de corrélation directe entre la complexité cyclomatique et la cohésion, c'est pourquoi nous avons utilisé l'opérateur `+` dans la formule.
- Pour obtenir un résultat fiable, il est préférable d'utiliser un ratio qui tient compte de la taille du code.
À première vue, cette formule semble prometteuse. Cependant, sur des projets réels, elle pose un problème significatif, en particulier concernant l'affirmation :
« Il n'y a pas de corrélation directe entre la complexité cyclomatique et la cohésion. »
Dans de tels cas, il faut vérifier si ces deux métriques sont étroitement liées ou si l'une dépasse systématiquement l'autre. Si une métrique domine constamment l'autre, cela peut rendre la métrique combinée non pertinente. Dans notre cas, la métrique lowComplexity pourrait être bien plus élevée que la métrique de cohésion, la reléguant potentiellement à l'arrière-plan et rendant la métrique globale moins significative.
Pour améliorer cette métrique, on peut introduire des opérateurs supplémentaires comme les logarithmes népériens, la multiplication, la division ou d'autres fonctions mathématiques afin d'affiner la formule et d'obtenir un résultat plus fiable, à l'image de ce qui est fait avec l'indice de maintenabilité :
`Indice de maintenabilité = 171 – 5,2 * ln(Volume de Halstead) – 0,23 * (Complexité cyclomatique) – 16,2 * ln(Lignes de code)`
Comment affine-t-on les formules de métriques logicielles ?
Il n'y a rien de magique : cela exige des tests approfondis sur des projets réels et un travail avec ces métriques pendant des mois, voire des années, pour identifier les facteurs ou les opérateurs qui conduisent à une métrique fiable.
Conclusion
Il est essentiel de se rappeler que ChatGPT, et l'IA en général, sont des outils précieux, mais qu'ils ne remplaceront pas l'expertise humaine de sitôt. La validation et la supervision humaines restent cruciales dans tous les domaines. Alors rassurez-vous : l'IA ne prendra pas votre travail — elle vous aidera à le faire mieux.
