Slide 1

Slide 1 text

foolab.ca | @foolabca Cyclomatic Complexity Bulgaria PHP, Sofia - October 8, 2016

Slide 2

Slide 2 text

Execution Paths public function getShipping() { if ($this->subtotal >= 40) { return 0; } return $this->standardShipping; } 2

Slide 3

Slide 3 text

Execution Paths public function getShipping() { if ($this->subtotal >= 40) { return 0; } return $this->standardShipping; } 3 Path 1 Path 2

Slide 4

Slide 4 text

Decision Branches 4 start product loop free shipping? end

Slide 5

Slide 5 text

Decision Branches 5 start product loop free shipping? end

Slide 6

Slide 6 text

Cyclomatic complexity = edges − nodes +
 2 * connected components

Slide 7

Slide 7 text

Decision Branches 7 start product loop free shipping? end ◦ Edges ◦ Nodes ◦ Connected components.

Slide 8

Slide 8 text

Decision Branches 8 start product loop free shipping? end ◦ Edges ◦ Nodes ◦ Connected components.

Slide 9

Slide 9 text

Decision Branches 9 start product loop free shipping? end ◦ Edges ◦ Nodes ◦ Connected components.

Slide 10

Slide 10 text

Cyclomatic complexity = 9 − 8 + 2 * 1 = 3

Slide 11

Slide 11 text

Zero Times foreach ($products as $product) { $total = $product->price * $product->quantity; } $tax = $total * ... 11

Slide 12

Slide 12 text

Multiple Times $total = 0; foreach ($products as $product) { $total = $product->price * $product->quantity; } $tax = $total * ... 12

Slide 13

Slide 13 text

Multiple Times $total = 0; foreach ($products as $product) { $total += $product->price * $product->quantity; } $tax = $total * ... 13

Slide 14

Slide 14 text

@afilina afilina.com