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

Breadcrumb

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

function UseSpacingSniff::checkLinesBeforeFirstUse

1 call to UseSpacingSniff::checkLinesBeforeFirstUse()
UseSpacingSniff::process in vendor/slevomat/coding-standard/SlevomatCodingStandard/Sniffs/Namespaces/UseSpacingSniff.php
* @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint *

File

vendor/slevomat/coding-standard/SlevomatCodingStandard/Sniffs/Namespaces/UseSpacingSniff.php, line 80

Class

UseSpacingSniff

Namespace

SlevomatCodingStandard\Sniffs\Namespaces

Code

private function checkLinesBeforeFirstUse(File $phpcsFile, UseStatement $firstUse) : void {
    $tokens = $phpcsFile->getTokens();
    
    /** @var int $pointerBeforeFirstUse */
    $pointerBeforeFirstUse = TokenHelper::findPreviousNonWhitespace($phpcsFile, $firstUse->getPointer() - 1);
    $useStartPointer = $firstUse->getPointer();
    if (in_array($tokens[$pointerBeforeFirstUse]['code'], Tokens::$commentTokens, true) && $tokens[$pointerBeforeFirstUse]['line'] + 1 === $tokens[$useStartPointer]['line']) {
        $useStartPointer = array_key_exists('comment_opener', $tokens[$pointerBeforeFirstUse]) ? $tokens[$pointerBeforeFirstUse]['comment_opener'] : CommentHelper::getMultilineCommentStartPointer($phpcsFile, $pointerBeforeFirstUse);
        
        /** @var int $pointerBeforeFirstUse */
        $pointerBeforeFirstUse = TokenHelper::findPreviousNonWhitespace($phpcsFile, $useStartPointer - 1);
    }
    $actualLinesCountBeforeFirstUse = $tokens[$useStartPointer]['line'] - $tokens[$pointerBeforeFirstUse]['line'] - 1;
    if ($actualLinesCountBeforeFirstUse === $this->linesCountBeforeFirstUse) {
        return;
    }
    $fix = $phpcsFile->addFixableError(sprintf('Expected %d line%s before first use statement, found %d.', $this->linesCountBeforeFirstUse, $this->linesCountBeforeFirstUse === 1 ? '' : 's', $actualLinesCountBeforeFirstUse), $firstUse->getPointer(), self::CODE_INCORRECT_LINES_COUNT_BEFORE_FIRST_USE);
    if (!$fix) {
        return;
    }
    $phpcsFile->fixer
        ->beginChangeset();
    if ($tokens[$pointerBeforeFirstUse]['code'] === T_OPEN_TAG) {
        $phpcsFile->fixer
            ->replaceToken($pointerBeforeFirstUse, '<?php');
    }
    FixerHelper::removeBetween($phpcsFile, $pointerBeforeFirstUse, $useStartPointer);
    for ($i = 0; $i <= $this->linesCountBeforeFirstUse; $i++) {
        $phpcsFile->fixer
            ->addNewline($pointerBeforeFirstUse);
    }
    $phpcsFile->fixer
        ->endChangeset();
}
RSS feed
Powered by Drupal