|
|
@ -7,7 +7,10 @@ declare(strict_types=1); |
|
|
|
*/ |
|
|
|
|
|
|
|
use PhpParser\Node\Stmt; |
|
|
|
use PhpParser\Node\Stmt\ClassConst; |
|
|
|
use PhpParser\Node\Stmt\ClassLike; |
|
|
|
use PhpParser\Node\Stmt\ClassMethod; |
|
|
|
use PhpParser\Node\Stmt\EnumCase; |
|
|
|
use Psalm\CodeLocation; |
|
|
|
use Psalm\DocComment; |
|
|
|
use Psalm\Exception\DocblockParseException; |
|
|
@ -18,17 +21,23 @@ use Psalm\Plugin\EventHandler\Event\AfterClassLikeVisitEvent; |
|
|
|
|
|
|
|
class NcuExperimentalChecker implements Psalm\Plugin\EventHandler\AfterClassLikeVisitInterface { |
|
|
|
public static function afterClassLikeVisit(AfterClassLikeVisitEvent $event): void { |
|
|
|
$stmt = $event->getStmt(); |
|
|
|
$classLike = $event->getStmt(); |
|
|
|
$statementsSource = $event->getStatementsSource(); |
|
|
|
|
|
|
|
self::checkClassComment($stmt, $statementsSource); |
|
|
|
self::checkClassComment($classLike, $statementsSource); |
|
|
|
|
|
|
|
foreach ($stmt->getMethods() as $method) { |
|
|
|
self::checkMethodOrConstantComment($method, $statementsSource, 'method'); |
|
|
|
} |
|
|
|
foreach ($classLike->stmts as $stmt) { |
|
|
|
if ($stmt instanceof ClassConst) { |
|
|
|
self::checkStatementComment($stmt, $statementsSource, 'constant'); |
|
|
|
} |
|
|
|
|
|
|
|
if ($stmt instanceof ClassMethod) { |
|
|
|
self::checkStatementComment($stmt, $statementsSource, 'method'); |
|
|
|
} |
|
|
|
|
|
|
|
foreach ($stmt->getConstants() as $constant) { |
|
|
|
self::checkMethodOrConstantComment($constant, $statementsSource, 'constant'); |
|
|
|
if ($stmt instanceof EnumCase) { |
|
|
|
self::checkStatementComment($stmt, $statementsSource, 'enum'); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@ -76,7 +85,7 @@ class NcuExperimentalChecker implements Psalm\Plugin\EventHandler\AfterClassLike |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private static function checkMethodOrConstantComment(Stmt $stmt, FileSource $statementsSource, string $type): void { |
|
|
|
private static function checkStatementComment(Stmt $stmt, FileSource $statementsSource, string $type): void { |
|
|
|
$docblock = $stmt->getDocComment(); |
|
|
|
|
|
|
|
if ($docblock === null) { |
|
|
|