diff --git a/src/Rules/PHPUnit/CoversHelper.php b/src/Rules/PHPUnit/CoversHelper.php index 8bcf92e..a96257f 100644 --- a/src/Rules/PHPUnit/CoversHelper.php +++ b/src/Rules/PHPUnit/CoversHelper.php @@ -95,6 +95,12 @@ public function processCovers( ))->build(); } } else { + if ($covers === '') { + $errors[] = RuleErrorBuilder::message('@covers value does not specify anything.')->build(); + + return $errors; + } + if (!isset($method) && $this->reflectionProvider->hasFunction(new Name($covers, []), null)) { return $errors; } diff --git a/tests/Rules/PHPUnit/ClassCoversExistsRuleTest.php b/tests/Rules/PHPUnit/ClassCoversExistsRuleTest.php index 7ead3a7..7b84b50 100644 --- a/tests/Rules/PHPUnit/ClassCoversExistsRuleTest.php +++ b/tests/Rules/PHPUnit/ClassCoversExistsRuleTest.php @@ -36,6 +36,10 @@ public function testRule(): void '@covers value \Not\A\Class references an invalid class or function.', 31, ], + [ + '@covers value does not specify anything.', + 43, + ], ]); } diff --git a/tests/Rules/PHPUnit/data/class-coverage.php b/tests/Rules/PHPUnit/data/class-coverage.php index fca878f..a5ddd18 100644 --- a/tests/Rules/PHPUnit/data/class-coverage.php +++ b/tests/Rules/PHPUnit/data/class-coverage.php @@ -36,3 +36,10 @@ function testable(): void { } + +/** + * @covers + */ +class CoversNothing extends \PHPUnit\Framework\TestCase +{ +}