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
Namespace
SlevomatCodingStandard\Sniffs\ClassesCode
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();
}