web-dev-qa-db-fra.com

Calcul de la complexité cyclomatique

Je suis au stade d'apprentissage de la complexité cyclomatique (CC). Pour la pratique, je calcule la complexité cyclomatique de 2 exemples et je veux confirmer si mes réponses sont correctes ou non ... 

En référence à wikipedia, CC est donné par M = E − N + 2P où:

  • E = le nombre d'arêtes du graphe
  • N = le nombre de nœuds du graphe
  • P = le nombre de composants connectés

S'il vous plaît aider.

Example 1

Ici, E = 8, N = 9 et P = 1. Donc M = 8 - 9 + (2x1) = 1.

Exemple 2:

Example 2

Ici E = 11, N = 10 et P = 1. D'où M = 10 - 11 + (2x1) = 1.

Par conséquent, pour les deux exemples, CC est égal à 1. Merci de me faire savoir si mon calcul est correct ou non.

23
tech_human

Vous devez prendre plus de précautions pour insérer correctement les valeurs dans la formule.

Dans l'exemple 1, vous dites 

Ici, E = 8, N = 9 et P = 1

Mais en réalité, c'est l'inverse: 9 arêtes (= E), 8 nœuds (= N), vous obtenez donc un CC de 3.

Dans l'exemple 2, vous avez les valeurs correctes: E = 11, N = 10, P = 1. Mais vous les insérez dans le mauvais ordre dans la formule; il devrait en fait être 11 - 10 + (2x1) = 3.

Raccourci: Si vous avez une image de votre graphique, vous pouvez très facilement déterminer la complexité cyclomatique. Il suffit de compter le nombre de régions dans lesquelles l’arrière-plan est divisé par les bords. Dans votre premier exemple, vous avez 2 régions intérieures (bordées par les bords) et une région environnante, ce qui donne un CC de 3. Idem pour le deuxième exemple. (Cette méthode nécessite évidemment que les arêtes ne se croisent pas.)

22
flyx

De plus, si cela aide, le nombre d'instructions conditionnelles (If, while, for) +1. Ainsi, dans l'exemple ci-dessus, il y a 2 instructions conditionnelles. donc 2 + 1 = 3. La complexité cyclomatique dans ce cas est 3

8
Neethi

Il suffit de compter le nombre de régions fermées et d’ajouter 1.

Dans votre exemple ci-dessus, nombre de régions fermées = 2, donc le CC = 2 + 1 = 3

1
Nik cool

P = le nombre de composants connectés

EN D'AUTRES TERMES

P = le nombre de nœuds qui ont des points de sortie

La source

1
Adrián Sabo