function ClassMemberSpacingSniff::process
* @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint *
Parameters
int $classPointer:
Overrides Sniff::process
File
-
vendor/
slevomat/ coding-standard/ SlevomatCodingStandard/ Sniffs/ Classes/ ClassMemberSpacingSniff.php, line 60
Class
Namespace
SlevomatCodingStandard\Sniffs\ClassesCode
public function process(File $phpcsFile, $classPointer) : void {
$this->linesCountBetweenMembers = SniffSettingsHelper::normalizeInteger($this->linesCountBetweenMembers);
$tokens = $phpcsFile->getTokens();
$memberPointer = null;
$previousMemberPointer = null;
do {
$previousMemberPointer = $memberPointer;
$memberPointer = $this->findNextMember($phpcsFile, $classPointer, $previousMemberPointer ?? $tokens[$classPointer]['scope_opener']);
if ($memberPointer === null) {
break;
}
if ($previousMemberPointer === null) {
continue;
}
if ($tokens[$previousMemberPointer]['code'] === $tokens[$memberPointer]['code']) {
continue;
}
$previousMemberEndPointer = $this->getMemberEndPointer($phpcsFile, $previousMemberPointer);
$hasCommentWithNewLineAfterPreviousMember = false;
$commentPointerAfterPreviousMember = TokenHelper::findNextNonWhitespace($phpcsFile, $previousMemberEndPointer + 1);
if (in_array($tokens[$commentPointerAfterPreviousMember]['code'], TokenHelper::$inlineCommentTokenCodes, true) && ($tokens[$previousMemberEndPointer]['line'] === $tokens[$commentPointerAfterPreviousMember]['line'] || $tokens[$previousMemberEndPointer]['line'] + 1 === $tokens[$commentPointerAfterPreviousMember]['line'])) {
$previousMemberEndPointer = CommentHelper::getCommentEndPointer($phpcsFile, $commentPointerAfterPreviousMember);
if (StringHelper::endsWith($tokens[$commentPointerAfterPreviousMember]['content'], $phpcsFile->eolChar)) {
$hasCommentWithNewLineAfterPreviousMember = true;
}
}
$memberStartPointer = $this->getMemberStartPointer($phpcsFile, $memberPointer);
$actualLinesCount = $tokens[$memberStartPointer]['line'] - $tokens[$previousMemberEndPointer]['line'] - 1;
if ($actualLinesCount === $this->linesCountBetweenMembers) {
continue;
}
$errorMessage = $this->linesCountBetweenMembers === 1 ? 'Expected 1 blank line between class members, found %2$d.' : 'Expected %1$d blank lines between class members, found %2$d.';
$fix = $phpcsFile->addFixableError(sprintf($errorMessage, $this->linesCountBetweenMembers, $actualLinesCount), $memberPointer, self::CODE_INCORRECT_COUNT_OF_BLANK_LINES_BETWEEN_MEMBERS);
if (!$fix) {
continue;
}
$newLines = str_repeat($phpcsFile->eolChar, $this->linesCountBetweenMembers + ($hasCommentWithNewLineAfterPreviousMember ? 0 : 1));
$firstPointerOnMemberLine = TokenHelper::findFirstTokenOnLine($phpcsFile, $memberStartPointer);
$phpcsFile->fixer
->beginChangeset();
$phpcsFile->fixer
->addContent($previousMemberEndPointer, $newLines);
FixerHelper::removeBetween($phpcsFile, $previousMemberEndPointer, $firstPointerOnMemberLine);
$phpcsFile->fixer
->endChangeset();
} while (true);
}