Mesure de métriques McCabe avec Testwell CMT++ et CMTJava (Outils de mesure de complexité)But et origineLa complexité "Cyclomatic" (également référée comme complexité de programme ou complexité de McCabe) est le membre le plus largement répandu des métriques statiques. Il peut être considéré comme une large mesure de solidité et de confiance pour un programme. Interprétation des métriques McCabeLe nombre Cyclomatic de McCabe v(G) montre la complexité du flux de la commande par un morceau de code. Pour une fonction seule; v(G) est un moins le nombre de points de branchements conditionnels dans la fonction. Lorsque le test est concerné, le nombre cyclomatic v(G) est l'une des plus importantes mesures de complexité. Le nombre cyclomatic d'une fonction devrait être inférieur à 15. Si une fonction a un nombre cyclomatic de 15, il y a au moins 15 (mais probablement plus) chemins d'exécution dans son contenu. Un nombre Cyclomatic limite raisonnable maximum d'un fichier est de 100. Comment les métriques McCabe sont calculés avec CMT++Le nombre cyclomatic McCabe v(G) est calculé à partir des définitions de fonctions (ou membres) et des déclarations de classes/structures. Il est calculé sur le fichier source en entier. Chaque "if-statement" introduit une nouvelle branche au programme et, par conséquent, incrémente v(G). Il faut noter que v(G) est insensible aux branches inconditionnelles comme goto-, return-, et les "break-statements" bien qu'ils augmentent sûrement la complexité. Dans CMT++ les branches générées par les directives de compilation conditionnelles sont alors comptées à v(G). Même si les directives de compilation conditionnelles n'ajoutent pas des branches au flux de commandes du programme exécutable, ils augmentent la complexité du fichier programme que l'utilisateur voit et édite. En résumé, les constructions de langage suivants incrémentent le nombre cyclomatic : if (...), for (...), while (...), case ...:, catch (...), &&, ||, ?, #if, #ifdef, #ifndef, #elif. Davantage d'informations sur nos outils de mesure de complexité : Testwell CMT++/CMTJava last updated: 05.06.2010 © 2006-2010 Testwell Oy / Verifysoft Technology GmbH |