diff --git a/src/Analyzer/FileVisitor.php b/src/Analyzer/FileVisitor.php index 7ffedda9..c627fea7 100644 --- a/src/Analyzer/FileVisitor.php +++ b/src/Analyzer/FileVisitor.php @@ -247,6 +247,10 @@ private function handleTypedProperty(Node $node): void return; } + if (FullyQualifiedClassName::isNotAValidFqcn($type->toString())) { + return; + } + $this->classDescriptionBuilder ->addDependency(new ClassDependency($type->toString(), $node->getLine())); } @@ -314,6 +318,10 @@ private function handleReturnTypeDependency(Node $node): void return; } + if (FullyQualifiedClassName::isNotAValidFqcn($returnType->toString())) { + return; + } + $this->classDescriptionBuilder ->addDependency(new ClassDependency($returnType->toString(), $returnType->getLine())); } @@ -330,6 +338,10 @@ private function handleAttributeNode(Node $node): void return; } + if (FullyQualifiedClassName::isNotAValidFqcn($nodeName->toString())) { + return; + } + $this->classDescriptionBuilder ->addAttribute($node->name->toString(), $node->getLine()); } @@ -346,6 +358,10 @@ private function addParamDependency(Node\Param $node): void return; } + if (FullyQualifiedClassName::isNotAValidFqcn($type->toString())) { + return; + } + $this->classDescriptionBuilder ->addDependency(new ClassDependency($type->toString(), $node->getLine())); } diff --git a/src/Analyzer/FullyQualifiedClassName.php b/src/Analyzer/FullyQualifiedClassName.php index 7fcf185b..ad7926ee 100644 --- a/src/Analyzer/FullyQualifiedClassName.php +++ b/src/Analyzer/FullyQualifiedClassName.php @@ -27,7 +27,7 @@ public function toString(): string public function classMatches(string $pattern): bool { - if ($this->isNotAValidPattern($pattern)) { + if (self::isNotAValidFqcn($pattern)) { throw new InvalidPatternException("'$pattern' is not a valid class or namespace pattern. Regex are not allowed, only * and ? wildcard."); } @@ -36,7 +36,7 @@ public function classMatches(string $pattern): bool public function matches(string $pattern): bool { - if ($this->isNotAValidPattern($pattern)) { + if (self::isNotAValidFqcn($pattern)) { throw new InvalidPatternException("'$pattern' is not a valid class or namespace pattern. Regex are not allowed, only * and ? wildcard."); } @@ -69,12 +69,12 @@ public static function fromString(string $fqcn): self return new self(new PatternString($fqcn), new PatternString($namespace), new PatternString($className)); } - public function isNotAValidPattern(string $pattern): bool + public static function isNotAValidFqcn(string $fqcn): bool { $validClassNameCharacters = '[a-zA-Z0-9_\x80-\xff]'; $or = '|'; $backslash = '\\\\'; - return 0 === preg_match('/^('.$validClassNameCharacters.$or.$backslash.$or.'\*'.$or.'\?)*$/', $pattern); + return 0 === preg_match('/^('.$validClassNameCharacters.$or.$backslash.$or.'\*'.$or.'\?)*$/', $fqcn); } }