Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. ClassCoversExistsRule.php

function ClassCoversExistsRule::processNode

File

vendor/phpstan/phpstan-phpunit/src/Rules/PHPUnit/ClassCoversExistsRule.php, line 51

Class

ClassCoversExistsRule
@implements Rule<InClassNode>

Namespace

PHPStan\Rules\PHPUnit

Code

public function processNode(Node $node, Scope $scope) : array {
    $classReflection = $node->getClassReflection();
    if (!$classReflection->isSubclassOf(TestCase::class)) {
        return [];
    }
    $classPhpDoc = $classReflection->getResolvedPhpDoc();
    [
        $classCovers,
        $classCoversDefaultClasses,
    ] = $this->coversHelper
        ->getCoverAnnotations($classPhpDoc);
    if (count($classCoversDefaultClasses) >= 2) {
        return [
            RuleErrorBuilder::message(sprintf('@coversDefaultClass is defined multiple times.'))->identifier('phpunit.coversDuplicate')
                ->build(),
        ];
    }
    $errors = [];
    $coversDefaultClass = array_shift($classCoversDefaultClasses);
    if ($coversDefaultClass !== null) {
        $className = (string) $coversDefaultClass->value;
        if (!$this->reflectionProvider
            ->hasClass($className)) {
            $errors[] = RuleErrorBuilder::message(sprintf('@coversDefaultClass references an invalid class %s.', $className))->identifier('phpunit.coversClass')
                ->build();
        }
    }
    foreach ($classCovers as $covers) {
        $errors = array_merge($errors, $this->coversHelper
            ->processCovers($node, $covers, null));
    }
    return $errors;
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal