Файл: vendor/sebastian/complexity/src/Visitor/CyclomaticComplexityCalculatingVisitor.php
Строк: 49
<?php declare(strict_types=1);
/*
* This file is part of sebastian/complexity.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace SebastianBergmannComplexity;
use function get_class;
use PhpParserNode;
use PhpParserNodeExprBinaryOpBooleanAnd;
use PhpParserNodeExprBinaryOpBooleanOr;
use PhpParserNodeExprBinaryOpLogicalAnd;
use PhpParserNodeExprBinaryOpLogicalOr;
use PhpParserNodeExprTernary;
use PhpParserNodeStmtCase_;
use PhpParserNodeStmtCatch_;
use PhpParserNodeStmtElseIf_;
use PhpParserNodeStmtFor_;
use PhpParserNodeStmtForeach_;
use PhpParserNodeStmtIf_;
use PhpParserNodeStmtWhile_;
use PhpParserNodeVisitorAbstract;
final class CyclomaticComplexityCalculatingVisitor extends NodeVisitorAbstract
{
/**
* @var int
*/
private $cyclomaticComplexity = 1;
public function enterNode(Node $node): void
{
/* @noinspection GetClassMissUseInspection */
switch (get_class($node)) {
case BooleanAnd::class:
case BooleanOr::class:
case Case_::class:
case Catch_::class:
case ElseIf_::class:
case For_::class:
case Foreach_::class:
case If_::class:
case LogicalAnd::class:
case LogicalOr::class:
case Ternary::class:
case While_::class:
$this->cyclomaticComplexity++;
}
}
public function cyclomaticComplexity(): int
{
return $this->cyclomaticComplexity;
}
}