/** * @param ReflectionClass $sus * @param Params $params * @param Reporter $reporter */ public function check(ReflectionClass $sus, Params $params, Reporter $reporter) { foreach ($sus->getMethods() as $method) { if ($method->getNumberOfParameters() > $params->getDependenciesLimit()) { $reporter->act($sus, self::class, "{$method->getName()} has too many dependencies ({$method->getNumberOfParameters()})", 'Dependencies size'); } } }
function it_complains_if_class_size_is_too_large(ReflectionClass $sus, Params $params, Reporter $reporter) { $sus->getEndLine()->willReturn(self::GREATER_THAN_300); $params->getClassSize()->willReturn(self::LESS_THAN_300); $sus->getName()->willReturn("Elfiggo/Brobdingnagian/Detector/ClassSize"); $reporter->act($sus, 'Elfiggo\\Brobdingnagian\\Detector\\ClassSize', 'Elfiggo/Brobdingnagian/Detector/ClassSize class size is too large (301)', 'Class size')->willThrow(ClassSizeTooLarge::class); $this->shouldThrow(ClassSizeTooLarge::class)->duringCheck($sus, $params, $reporter); }
function it_does_complain_if_the_number_of_interfaces_is_too_large(ReflectionClass $sus, Params $params, Reporter $reporter) { $params->getNumberOfInterfaces()->willReturn(self::DEFAULT_NUMBER_OF_INTERFACES); $sus->getInterfaces()->willReturn(['interface 1', 'interface 2', 'interface 3', 'interface 4']); $sus->getName()->willReturn('Enormo Class'); $reporter->act($sus, 'Elfiggo\\Brobdingnagian\\Detector\\NumberOfInterfaces', 'Enormo Class has too many interfaces (4)', 'Too many interfaces')->willThrow(TooManyInterfacesDetected::class); $this->shouldThrow(TooManyInterfacesDetected::class)->duringCheck($sus, $params, $reporter); }
function it_does_complain_if_the_number_of_traits_is_too_large(ReflectionClass $sus, Params $params, Reporter $reporter) { $params->getNumberOfTraits()->willReturn(self::DEFAULT_NUMBER_OF_TRAITS); $sus->getTraits()->willReturn(['trait 1', 'trait 2', 'trait 3', 'trait 4']); $sus->getName()->willReturn('Enormo Class'); $reporter->act($sus, 'Elfiggo\\Brobdingnagian\\Detector\\NumberOfTraits', 'Enormo Class has too many traits (4)', 'Too many traits')->willThrow(TooManyTraitsDetected::class); $this->shouldThrow(TooManyTraitsDetected::class)->duringCheck($sus, $params, $reporter); }
function it_does_complain_if_the_number_of_methods_is_too_large(ReflectionClass $sus, Params $params, Reporter $reporter) { $params->getNumberOfMethods()->willReturn(1); $sus->getMethods()->willReturn(['method 1', 'method 2']); $sus->getName()->willReturn('Enormo Class'); $reporter->act($sus, 'Elfiggo\\Brobdingnagian\\Detector\\NumberOfMethods', 'Enormo Class has too many methods (2)', 'Too many methods')->willThrow(TooManyMethodsDetected::class); $this->shouldThrow(TooManyMethodsDetected::class)->duringCheck($sus, $params, $reporter); }
/** * @param ReflectionClass $sus * @param Params $params * @param Reporter $reporter */ public function check(ReflectionClass $sus, Params $params, Reporter $reporter) { foreach ($sus->getMethods($params->getFilterMethods()) as $method) { $lineSize = $method->getEndLine() - $method->getStartLine(); if ($lineSize > $params->getMethodSize()) { $reporter->act($sus, self::class, "{$method->getName()}() size is {$lineSize} lines long", 'Method size'); } } }
function it_calculates_the_number_of_lines_in_a_method(ReflectionClass $sus, Params $params, ReflectionMethod $method, Reporter $reporter) { $method->getStartLine()->willReturn(self::START_LINE); $method->getEndLine()->willReturn(self::END_LINE); $method->getName()->willReturn('method_size_1'); $sus->getMethods(0)->willReturn([$method]); $reporter->act($sus, 'Elfiggo\\Brobdingnagian\\Detector\\MethodSize', 'method_size_1() size is 40 lines long', 'Method size')->willThrow(MethodSizeTooLarge::class); $params->getMethodSize()->willReturn(15); $this->shouldThrow(MethodSizeTooLarge::class)->duringCheck($sus, $params, $reporter); }
function it_complains_if_the_number_of_dependencies_are_high(ReflectionClass $sus, Params $params, Reporter $reporter, ReflectionMethod $reflectionMethod) { $params->getDependenciesLimit()->willReturn(self::DEPENDENCIES_LIMIT); $sus->getName()->willReturn("Elfiggo/Brobdingnagian/Detector/DependenciesSize"); $reflectionMethod->getName()->willReturn('random_method'); $reflectionMethod->getNumberOfParameters()->willReturn(20); $sus->getMethods()->willReturn([$reflectionMethod]); $reporter->act($sus, 'Elfiggo\\Brobdingnagian\\Detector\\DependenciesSize', 'random_method has too many dependencies (20)', 'Dependencies size')->willThrow(DependenciesSizeTooLarge::class); $this->shouldThrow(DependenciesSizeTooLarge::class)->duringCheck($sus, $params, $reporter); }
/** * @param ReflectionClass $sus * @param Params $param * @param Reporter $reporter */ public function check(ReflectionClass $sus, Params $param, Reporter $reporter) { if (count($sus->getTraits()) > $param->getNumberOfTraits()) { $reporter->act($sus, self::class, "{$sus->getName()} has too many traits (" . count($sus->getTraits()) . ')', 'Too many traits'); } }
/** * @param ReflectionClass $sus * @param Params $params * @param Reporter $reporter */ public function check(ReflectionClass $sus, Params $params, Reporter $reporter) { if (count($sus->getMethods($params->getFilterMethods())) > $params->getNumberOfMethods()) { $reporter->act($sus, self::class, "{$sus->getName()} has too many methods (" . count($sus->getMethods()) . ')', 'Too many methods'); } }
/** * @param ReflectionClass $sus * @param Params $params * @param Reporter $reporter */ public function check(ReflectionClass $sus, Params $params, Reporter $reporter) { if ($sus->getEndLine() > $params->getClassSize()) { $reporter->act($sus, self::class, "{$sus->getName()} class size is too large ({$sus->getEndLine()})", 'Class size'); } }