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

Breadcrumb

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

function TodoCommentSniff::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/TodoCommentSniff.php, line 65

Class

TodoCommentSniff
Parses and verifies that comments use the correct @todo format.

Namespace

Drupal\Sniffs\Commenting

Code

public function process(File $phpcsFile, $stackPtr) {
    $debug = Config::getConfigData('todo_debug');
    if ($debug !== null) {
        $this->debug = (bool) $debug;
    }
    $tokens = $phpcsFile->getTokens();
    if ($this->debug === true) {
        echo "\n------\n\$tokens[{$stackPtr}] = " . print_r($tokens[$stackPtr], true) . PHP_EOL;
        echo 'code = ' . $tokens[$stackPtr]['code'] . ', type = ' . $tokens[$stackPtr]['type'] . "\n";
    }
    // Standard comments and multi-line comments where the "@" is missing so
    // it does not register as a T_DOC_COMMENT_TAG.
    if ($tokens[$stackPtr]['code'] === T_COMMENT || $tokens[$stackPtr]['code'] === T_DOC_COMMENT_STRING) {
        $comment = $tokens[$stackPtr]['content'];
        if ($this->debug === true) {
            echo "Getting \$comment from \$tokens[{$stackPtr}]['content']\n";
        }
        $this->checkTodoFormat($phpcsFile, $stackPtr, $comment, $tokens);
    }
    else {
        if ($tokens[$stackPtr]['code'] === T_DOC_COMMENT_TAG) {
            // Document comment tag (i.e. comments that begin with "@").
            // Determine if this is related at all and build the full comment line
            // from the various segments that the line is parsed into.
            $expression = '/^@to/i';
            $comment = $tokens[$stackPtr]['content'];
            if ((bool) preg_match($expression, $comment) === true) {
                if ($this->debug === true) {
                    echo "Attempting to build comment\n";
                }
                $index = $stackPtr + 1;
                while ($tokens[$index]['line'] === $tokens[$stackPtr]['line']) {
                    $comment .= $tokens[$index]['content'];
                    $index++;
                }
                if ($this->debug === true) {
                    echo "Result comment = {$comment}\n";
                }
                $this->checkTodoFormat($phpcsFile, $stackPtr, $comment, $tokens);
            }
            
            //end if
        }
    }
    
    //end if
}
RSS feed
Powered by Drupal