function TraitUseSpacingSniff::checkLinesAfterLastUse
1 call to TraitUseSpacingSniff::checkLinesAfterLastUse()
- 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 156
Class
Namespace
SlevomatCodingStandard\Sniffs\ClassesCode
private function checkLinesAfterLastUse(File $phpcsFile, int $lastUsePointer) : void {
$tokens = $phpcsFile->getTokens();
/** @var int $lastUseEndPointer */
$lastUseEndPointer = TokenHelper::findNextLocal($phpcsFile, [
T_SEMICOLON,
T_OPEN_CURLY_BRACKET,
], $lastUsePointer + 1);
if ($tokens[$lastUseEndPointer]['code'] === T_OPEN_CURLY_BRACKET) {
$lastUseEndPointer = $tokens[$lastUseEndPointer]['bracket_closer'];
}
$pointerAfterLastUse = TokenHelper::findNextEffective($phpcsFile, $lastUseEndPointer + 1);
$isAtTheEndOfClass = $tokens[$pointerAfterLastUse]['code'] === T_CLOSE_CURLY_BRACKET;
$whitespaceEnd = TokenHelper::findNextNonWhitespace($phpcsFile, $lastUseEndPointer + 1) - 1;
if ($lastUseEndPointer !== $whitespaceEnd && $tokens[$whitespaceEnd]['content'] !== $phpcsFile->eolChar) {
$lastEolPointer = TokenHelper::findPreviousContent($phpcsFile, T_WHITESPACE, $phpcsFile->eolChar, $whitespaceEnd - 1, $lastUseEndPointer);
$whitespaceEnd = $lastEolPointer ?? $lastUseEndPointer;
}
$whitespaceAfterLastUse = TokenHelper::getContent($phpcsFile, $lastUseEndPointer + 1, $whitespaceEnd);
$requiredLinesCountAfterLastUse = $isAtTheEndOfClass ? $this->linesCountAfterLastUseWhenLastInClass : $this->linesCountAfterLastUse;
$actualLinesCountAfterLastUse = substr_count($whitespaceAfterLastUse, $phpcsFile->eolChar) - 1;
if ($actualLinesCountAfterLastUse === $requiredLinesCountAfterLastUse) {
return;
}
$fix = $phpcsFile->addFixableError(sprintf('Expected %d line%s after last use statement, found %d.', $requiredLinesCountAfterLastUse, $requiredLinesCountAfterLastUse === 1 ? '' : 's', $actualLinesCountAfterLastUse), $lastUsePointer, self::CODE_INCORRECT_LINES_COUNT_AFTER_LAST_USE);
if (!$fix) {
return;
}
$phpcsFile->fixer
->beginChangeset();
FixerHelper::removeBetweenIncluding($phpcsFile, $lastUseEndPointer + 1, $whitespaceEnd);
for ($i = 0; $i <= $requiredLinesCountAfterLastUse; $i++) {
$phpcsFile->fixer
->addNewline($lastUseEndPointer);
}
$phpcsFile->fixer
->endChangeset();
}