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

Breadcrumb

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

function DisallowMultipleStatementsSniff::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/Formatting/DisallowMultipleStatementsSniff.php, line 40

Class

DisallowMultipleStatementsSniff

Namespace

PHP_CodeSniffer\Standards\Generic\Sniffs\Formatting

Code

public function process(File $phpcsFile, $stackPtr) {
    $tokens = $phpcsFile->getTokens();
    $fixable = true;
    $prev = $stackPtr;
    do {
        $prev = $phpcsFile->findPrevious([
            T_SEMICOLON,
            T_OPEN_TAG,
            T_OPEN_TAG_WITH_ECHO,
            T_PHPCS_IGNORE,
        ], $prev - 1);
        if ($prev === false || $tokens[$prev]['code'] === T_OPEN_TAG || $tokens[$prev]['code'] === T_OPEN_TAG_WITH_ECHO) {
            $phpcsFile->recordMetric($stackPtr, 'Multiple statements on same line', 'no');
            return;
        }
        if ($tokens[$prev]['code'] === T_PHPCS_IGNORE) {
            $fixable = false;
        }
    } while ($tokens[$prev]['code'] === T_PHPCS_IGNORE);
    // Ignore multiple statements in a FOR condition.
    foreach ([
        $stackPtr,
        $prev,
    ] as $checkToken) {
        if (isset($tokens[$checkToken]['nested_parenthesis']) === true) {
            foreach ($tokens[$checkToken]['nested_parenthesis'] as $bracket) {
                if (isset($tokens[$bracket]['parenthesis_owner']) === false) {
                    // Probably a closure sitting inside a function call.
                    continue;
                }
                $owner = $tokens[$bracket]['parenthesis_owner'];
                if ($tokens[$owner]['code'] === T_FOR) {
                    return;
                }
            }
        }
    }
    if ($tokens[$prev]['line'] === $tokens[$stackPtr]['line']) {
        $phpcsFile->recordMetric($stackPtr, 'Multiple statements on same line', 'yes');
        $error = 'Each PHP statement must be on a line by itself';
        $code = 'SameLine';
        if ($fixable === false) {
            $phpcsFile->addError($error, $stackPtr, $code);
            return;
        }
        $fix = $phpcsFile->addFixableError($error, $stackPtr, $code);
        if ($fix === true) {
            $phpcsFile->fixer
                ->beginChangeset();
            $phpcsFile->fixer
                ->addNewline($prev);
            if ($tokens[$prev + 1]['code'] === T_WHITESPACE) {
                $phpcsFile->fixer
                    ->replaceToken($prev + 1, '');
            }
            $phpcsFile->fixer
                ->endChangeset();
        }
    }
    else {
        $phpcsFile->recordMetric($stackPtr, 'Multiple statements on same line', 'no');
    }
    
    //end if
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal