Je n'arrive pas à comprendre ce qu'est l'indicateur "NPath Complexity".
Les quelques explication (en anglais) que j'ai trouvées ne m'ont pas aidées. Quelqu'un aurait une définition compréhensible (en français), voir un exemple ?
Je n'arrive pas à comprendre ce qu'est l'indicateur "NPath Complexity".
Les quelques explication (en anglais) que j'ai trouvées ne m'ont pas aidées. Quelqu'un aurait une définition compréhensible (en français), voir un exemple ?
En le testant sur du code, j'en conclu que, généralement, cette règle n’est pas respectée quand il y a plusieurs « if » les uns à la suite des autres (4 ou 5 peuvent suffire). Ca doit représenter l'arbre des "possibilités" d'une méthode.
The NPATH metric computes the number of possible execution paths through a function
Un autre nom pour cette mesure est la complexité cyclomatique
http://fr.wikipedia.org/wiki/Nombre_cyclomatique
Merci. Ça confirme que c'est bien le graphe de tous les cas possibles.
Bonjour,
L'article de la Wikipédia francophone nombre cyclomatique correspond à la cyclomatic complexity (et non à la NPath complexity, pour lequel il n'y a pas d'article).
Je vous recommande la lecture de http://www.codingswag.com/2013/05/cy...ity-explained/ qui illustre par deux exemples de code la complexité NPath et la complexité cyclomatique.
La complexité cyclomatique compte le nombre de chemins, en additionnant chaque boucle if/while/switch/etc.
Visuellement, sur le graphe présenté en bas de cet article, la complexité cyclomatique correspond au nombre de lignes du graphe (celles traversant le schéma de haut en bas).
La complexité NPath tente de répondre à la question « combien y-a-t-il de possibilités de chemins différents ? », en parcourant le code et en multipliant par le nombre de possibilités à l'entrée de chaque boucle (par exemple *2 pour un if, *7 pour un switch de 6 cas et un cas par défaut).
Une succession de 5 boucles if aura une complexité cyclomatique de 6 (1 pour la fonction + 5 * 1 pour chaque if), mais une complexité NPath de 32 (2^5, il y a à 5 reprises 2 possibilités).
En résumé, la complexité cyclomatique compte le nombre de chemins sur la route, la complexité NPath le nombre total de possibilités pour arriver du début à la fin de la route en empruntant ces chemins.
Contexte : je procédais justement à une amélioration de l'article Wikipédia ci-dessus, et recherchais s'il existait en français une traduction utilisée de NPath complexity. C'est durant cette recherche que j'ai découvert ce fil de discussion, et me suis inscrit sur le forum en vue de rectifier l'erreur.
Merci de m'avoir donné l'opportunité de réfléchir plus en avant sur la question de la différence ces deux mesures.
Merci pour ces précisions Dereckson.
Bonjour
Je me permets de rouvrir cette discussion car j'ai un petit souci lié à ce Npath. Je suis en train de mettre nos codes sous jenkins et j'utilise donc diférents outils comme PMD.
Jusque là je voyais bien le cyclomatique, je viens de découvrir le Npath, j'ai une méthode qui ressort du rapport. Cette méthode est un beforeFilter d'un controller AppController d'un projet cake.
En lisant les infos sur ce calcul je vois bien la logique mais je ne comprenais pas pourquoi j'obtenais une grosse valeur (1152) alors que je n'avais que quelques instructions, pas de boucle ni autre... Jai fini par commenter toute ma fonction (donc en ne laissant que la signature) et repasser dans la moulinette... et toujours le même score!!! du coup je me pose la question: est ce que ce calcul ne tient pas compte également des classes qui héritent ?
Merci d'avance à ceux qui auront des suggestions ou idée ...
Pour info le projet est sous cakephp 3
Partager