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

Breadcrumb

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

function TraitUseSpacingSniff::checkLinesBeforeFirstUse

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

File

vendor/slevomat/coding-standard/SlevomatCodingStandard/Sniffs/Classes/TraitUseSpacingSniff.php, line 85

Class

TraitUseSpacingSniff

Namespace

SlevomatCodingStandard\Sniffs\Classes

Code

private function checkLinesBeforeFirstUse(File $phpcsFile, int $firstUsePointer) : void {
    $tokens = $phpcsFile->getTokens();
    $useStartPointer = $firstUsePointer;
    
    /** @var int $pointerBeforeFirstUse */
    $pointerBeforeFirstUse = TokenHelper::findPreviousNonWhitespace($phpcsFile, $firstUsePointer - 1);
    if (in_array($tokens[$pointerBeforeFirstUse]['code'], Tokens::$commentTokens, true)) {
        $pointerBeforeFirstUse = TokenHelper::findPreviousEffective($phpcsFile, $pointerBeforeFirstUse - 1);
        $useStartPointer = TokenHelper::findNext($phpcsFile, Tokens::$commentTokens, $pointerBeforeFirstUse + 1);
    }
    $isAtTheStartOfClass = $tokens[$pointerBeforeFirstUse]['code'] === T_OPEN_CURLY_BRACKET;
    $whitespaceBeforeFirstUse = '';
    if ($pointerBeforeFirstUse + 1 !== $firstUsePointer) {
        $whitespaceBeforeFirstUse .= TokenHelper::getContent($phpcsFile, $pointerBeforeFirstUse + 1, $useStartPointer - 1);
    }
    $requiredLinesCountBeforeFirstUse = $this->linesCountBeforeFirstUse;
    if ($isAtTheStartOfClass && $this->linesCountBeforeFirstUseWhenFirstInClass !== null) {
        $requiredLinesCountBeforeFirstUse = $this->linesCountBeforeFirstUseWhenFirstInClass;
    }
    $actualLinesCountBeforeFirstUse = substr_count($whitespaceBeforeFirstUse, $phpcsFile->eolChar) - 1;
    if ($actualLinesCountBeforeFirstUse === $requiredLinesCountBeforeFirstUse) {
        return;
    }
    $fix = $phpcsFile->addFixableError(sprintf('Expected %d line%s before first use statement, found %d.', $requiredLinesCountBeforeFirstUse, $requiredLinesCountBeforeFirstUse === 1 ? '' : 's', $actualLinesCountBeforeFirstUse), $firstUsePointer, self::CODE_INCORRECT_LINES_COUNT_BEFORE_FIRST_USE);
    if (!$fix) {
        return;
    }
    $pointerBeforeIndentation = TokenHelper::findPreviousContent($phpcsFile, T_WHITESPACE, $phpcsFile->eolChar, $firstUsePointer, $pointerBeforeFirstUse);
    $phpcsFile->fixer
        ->beginChangeset();
    if ($pointerBeforeIndentation !== null) {
        FixerHelper::removeBetweenIncluding($phpcsFile, $pointerBeforeFirstUse + 1, $pointerBeforeIndentation);
    }
    for ($i = 0; $i <= $requiredLinesCountBeforeFirstUse; $i++) {
        $phpcsFile->fixer
            ->addNewline($pointerBeforeFirstUse);
    }
    $phpcsFile->fixer
        ->endChangeset();
}
RSS feed
Powered by Drupal