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

Breadcrumb

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

function ForLoopWithTestFunctionCallSniff::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/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/CodeAnalysis/ForLoopWithTestFunctionCallSniff.php, line 58

Class

ForLoopWithTestFunctionCallSniff

Namespace

PHP_CodeSniffer\Standards\Generic\Sniffs\CodeAnalysis

Code

public function process(File $phpcsFile, $stackPtr) {
    $tokens = $phpcsFile->getTokens();
    $token = $tokens[$stackPtr];
    // Skip invalid statement.
    if (isset($token['parenthesis_opener'], $token['parenthesis_closer']) === false) {
        return;
    }
    $next = ++$token['parenthesis_opener'];
    $end = --$token['parenthesis_closer'];
    $position = 0;
    for (; $next <= $end; ++$next) {
        $code = $tokens[$next]['code'];
        if ($code === T_SEMICOLON) {
            ++$position;
        }
        if ($position < 1) {
            continue;
        }
        else {
            if ($position > 1) {
                break;
            }
            else {
                if ($code !== T_VARIABLE && $code !== T_STRING) {
                    continue;
                }
            }
        }
        // Find next non empty token, if it is a open parenthesis we have a
        // function call.
        $index = $phpcsFile->findNext(Tokens::$emptyTokens, $next + 1, null, true);
        if ($tokens[$index]['code'] === T_OPEN_PARENTHESIS) {
            $error = 'Avoid function calls in a FOR loop test part';
            $phpcsFile->addWarning($error, $stackPtr, 'NotAllowed');
            break;
        }
    }
    
    //end for
}
RSS feed
Powered by Drupal