6 declare(strict_types=1);
9 use PHP_CodeSniffer\Sniffs\Sniff;
10 use PHP_CodeSniffer\Files\File;
20 private $annotationFormatValidator;
33 public function register()
43 public function process(File $phpcsFile, $stackPtr)
45 $tokens = $phpcsFile->getTokens();
46 $commentStartPtr = $phpcsFile->findPrevious(T_DOC_COMMENT_OPEN_TAG, ($stackPtr), 0);
47 $commentEndPtr = $phpcsFile->findPrevious(T_DOC_COMMENT_CLOSE_TAG, ($stackPtr), 0);
48 $commentCloserPtr =
$tokens[$commentStartPtr][
'comment_closer'];
49 $functionPtrContent =
$tokens[$stackPtr+2][
'content'] ;
50 if (preg_match(
'/(?i)__construct/', $functionPtrContent)) {
54 T_DOC_COMMENT_WHITESPACE,
57 $shortPtr = $phpcsFile->findNext($emptyTypeTokens, $commentStartPtr + 1, $commentCloserPtr,
true);
58 if ($shortPtr ===
false) {
59 $error =
'Annotation block is empty';
60 $phpcsFile->addError($error, $commentStartPtr,
'MethodAnnotation');
62 $this->annotationFormatValidator->validateDescriptionFormatStructure(
69 if (empty(
$tokens[$commentStartPtr][
'comment_tags'])) {
72 $this->annotationFormatValidator->validateTagsSpacingFormat(
77 $this->annotationFormatValidator->validateTagGroupingFormat($phpcsFile, $commentStartPtr);
process(File $phpcsFile, $stackPtr)