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

Breadcrumb

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

function DocCommentLongArraySyntaxSniff::process

Processes this test, when one of its tokens is encountered.

Parameters

\PHP_CodeSniffer\Files\File $phpcsFile The file being scanned.:

int $stackPtr The position of the current token: in the stack passed in $tokens.

Return value

void

Overrides Sniff::process

File

vendor/drupal/coder/coder_sniffer/Drupal/Sniffs/Commenting/DocCommentLongArraySyntaxSniff.php, line 47

Class

DocCommentLongArraySyntaxSniff
Ensures @code annotations in doc blocks don't contain long array syntax.

Namespace

Drupal\Sniffs\Commenting

Code

public function process(File $phpcsFile, $stackPtr) {
    $tokens = $phpcsFile->getTokens();
    $commentEnd = $phpcsFile->findNext(T_DOC_COMMENT_CLOSE_TAG, $stackPtr + 1);
    // Look for @code annotations.
    $codeEnd = $stackPtr;
    do {
        $codeStart = $phpcsFile->findNext(T_DOC_COMMENT_TAG, $codeEnd + 1, $commentEnd, false, '@code');
        if ($codeStart !== false) {
            $codeEnd = $phpcsFile->findNext(T_DOC_COMMENT_TAG, $codeStart + 1, $commentEnd, false, '@endcode');
            // If the code block never ends then simply ignore this
            // docblock, it is probably malformed.
            if ($codeEnd === false) {
                break;
            }
            else {
                // Check for long array syntax use inside this @code annotation.
                for ($i = $codeStart + 1; $i < $codeEnd; $i++) {
                    if (preg_match('/\\barray\\s*\\(/', $tokens[$i]['content']) === 1) {
                        $error = 'Long array syntax must not be used in doc comment code annotations';
                        $phpcsFile->addError($error, $i, 'DocLongArray');
                    }
                }
            }
        }
    } while ($codeStart !== false);
}
RSS feed
Powered by Drupal