Вопрос

I am at learning stage of cyclomatic complexity(CC). For practise, I am calculating cyclomatic complexity of 2 examples and want to confirm if my answers are correct or not...

Referring to wikipedia, CC is given by M = E − N + 2P where:

  • E = the number of edges of the graph
  • N = the number of nodes of the graph
  • P = the number of connected components

Please help.

Example 1

Here, E = 8, N = 9 and P = 1. Hence M = 8 - 9 + (2x1) = 1.

Example 2:

Example 2

Here E = 11, N = 10 and P = 1. Hence M = 10 - 11 + (2x1) = 1.

Hence for both the examples CC is 1. Please let me know if my calculation is correct or not.

Это было полезно?

Решение

You need to take more care to correctly insert the values into the formula.

In example 1, you say

Here, E = 8, N = 9 and P = 1

But actually, it's the other way round: 9 edges (=E), 8 nodes (=N), so you get a CC of 3.

In example 2, you have the values right: E=11, N=10, P=1. But you insert them in the wrong order in the formula; it actually should be 11 - 10 + (2x1) = 3.

Shortcut: If you have a picture of your graph, you can very easily determine the cyclomatic complexity. Just count the number of regions the background is divided into by the edges. In your first example, you have 2 inner regions (bordered by the edges) and one surrounding region, giving a CC of 3. Same goes with the second example. (This method requires that edges are not crossing each other, obviously.)

Другие советы

Also if this helps, it the number of conditional (If, while, for) statements +1. So in the above example, there are 2 conditional statements . so 2+1=3. Cyclomatic complexity in this case is 3

Just count the number of closed region and add 1 to it.

In your example above, number of closed region = 2, so the CC = 2+1 = 3

P = the number of connected components

IN OTHER WORDS

P = the number of nodes that have exit points

Source

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top