function NoClassMetadataOnAbstractTestClasses::processNode
File
-
core/
tests/ PHPStan/ Rules/ NoClassMetadataOnAbstractTestClasses.php, line 77
Class
- NoClassMetadataOnAbstractTestClasses
- Ensures abstract test base classes do not carry metadata.
Namespace
Drupal\PHPStan\RulesCode
public function processNode(Node $node, Scope $scope) : array {
$class = $node->getClassReflection();
if ($class->isSubclassOfClass($this->reflectionProvider
->getClass(TestCase::class)) && $class->isAbstract()) {
$fails = [];
foreach ($class->getAttributes() as $attribute) {
if (str_starts_with($attribute->getName(), 'PHPUnit\\Framework\\Attributes\\')) {
$fails[] = RuleErrorBuilder::message("Abstract test class {$class->getName()} must not add attribute {$attribute->getName()}.")
->identifier('abstractTestClass.metadataForbidden')
->line($node->getStartLine())
->build();
}
}
$resolvedPhpDoc = $class->getResolvedPhpDoc();
if ($resolvedPhpDoc) {
foreach ($resolvedPhpDoc->getPhpDocNodes() as $phpDocNode) {
foreach ($phpDocNode->getTags() as $tag) {
if (in_array($tag->name, $this->annotationTargets, TRUE)) {
$fails[] = RuleErrorBuilder::message("Abstract test class {$class->getName()} must not add annotation {$tag->name}.")
->identifier('abstractTestClass.metadataForbidden')
->line($node->getStartLine())
->build();
}
}
}
}
return $fails;
}
return [];
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.