2010-01-15 21 views
2

Comment trouver la complexité cyclomatique d'une fonction avec plusieurs points de sortie? La page wiki indique p-s + 2 où p est le nombre de points de décision et s le nombre de points de sortie.Complexité cyclomatique d'un code avec plusieurs points de sortie

Mais les points de sortie supplémentaires ne devraient-ils pas augmenter la complexité cyclomatique, car cela pourrait conduire à des chemins plus indépendants?

Cheers,

Aman

Répondre

1

Pourquoi ne pas essayer un essai de NDepend? Il calcule la complexité cyclomatique et de nombreuses autres mesures de code.

5

CC mesure des chemins linéairement indépendants. Les points de sortie n'ajoutent pas de chemins au code, ils TERMINENT les chemins, réduisant ainsi CC (ou tout au moins, ils ne le font certainement pas augmenter CC).

En d'autres termes, la seule façon d'ajouter des points de sortie est d'ajouter plusieurs chemins (conditions comme IF). Sinon, le code situé après le point de sortie "nu" est inaccessible, ce sont donc les conditions qui ajoutent de la complexité, pas des points de sortie.

0

Merci michael. J'avais réalisé mon erreur après avoir posté la question. Mon erreur provient de l'observation que JavaNcss (qui utilise le fichier source) et Xdepend (qui utilise le fichier jar) semblent tous les deux surestimer le CC pour un morceau de code ayant plusieurs points de sortie. J'ai posté le code here. Mais en utilisant la formule p-s + 2, la réponse semble être 4. Y at-il une explication simple qui me manque?

@Richard: J'ai essayé Xdepend (la version non .NET de Ndepend). Cela ressemble à un bon outil. Mais quand il utilise des fichiers jar, il surestime le CC (qu'ils ont accepté dans leur documentation). À ce stade, j'explore différents outils. Êtes-vous au courant d'un meilleur?

Cheers.