From 114c8ff208405dc00a8590f66076f4f75f39b156 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hansl=C3=ADk?= Date: Thu, 9 Sep 2021 11:50:32 +0200 Subject: [PATCH] UseSpacingSniff: Fixed false positive --- .../Sniffs/Namespaces/UseSpacingSniff.php | 8 ++++---- tests/Sniffs/Namespaces/UseSpacingSniffTest.php | 11 +++++++++++ ...ngWithDefaultSettingsWithComments2Errors.fixed.php | 11 +++++++++++ ...eSpacingWithDefaultSettingsWithComments2Errors.php | 10 ++++++++++ ...ingWithDefaultSettingsWithCommentsErrors.fixed.php | 2 +- ...seSpacingWithDefaultSettingsWithCommentsErrors.php | 2 +- ...SpacingWithDefaultSettingsWithCommentsNoErrors.php | 2 +- 7 files changed, 39 insertions(+), 7 deletions(-) create mode 100644 tests/Sniffs/Namespaces/data/useSpacingWithDefaultSettingsWithComments2Errors.fixed.php create mode 100644 tests/Sniffs/Namespaces/data/useSpacingWithDefaultSettingsWithComments2Errors.php diff --git a/SlevomatCodingStandard/Sniffs/Namespaces/UseSpacingSniff.php b/SlevomatCodingStandard/Sniffs/Namespaces/UseSpacingSniff.php index fa5f87fa6..38f1d379b 100644 --- a/SlevomatCodingStandard/Sniffs/Namespaces/UseSpacingSniff.php +++ b/SlevomatCodingStandard/Sniffs/Namespaces/UseSpacingSniff.php @@ -15,6 +15,7 @@ use function count; use function in_array; use function sprintf; +use const T_DOC_COMMENT_OPEN_TAG; use const T_OPEN_TAG; use const T_SEMICOLON; use const T_WHITESPACE; @@ -143,14 +144,13 @@ private function checkLinesAfterLastUse(File $phpcsFile, UseStatement $lastUse): if ( in_array($tokens[$pointerAfterWhitespaceEnd]['code'], Tokens::$commentTokens, true) + && $tokens[$pointerAfterWhitespaceEnd]['code'] !== T_DOC_COMMENT_OPEN_TAG && ( $tokens[$useEndPointer]['line'] === $tokens[$pointerAfterWhitespaceEnd]['line'] || $tokens[$useEndPointer]['line'] + 1 === $tokens[$pointerAfterWhitespaceEnd]['line'] ) ) { - $useEndPointer = array_key_exists('comment_closer', $tokens[$pointerAfterWhitespaceEnd]) - ? $tokens[$pointerAfterWhitespaceEnd]['comment_closer'] - : CommentHelper::getMultilineCommentEndPointer($phpcsFile, $pointerAfterWhitespaceEnd); + $useEndPointer = CommentHelper::getMultilineCommentEndPointer($phpcsFile, $pointerAfterWhitespaceEnd); /** @var int $pointerAfterWhitespaceEnd */ $pointerAfterWhitespaceEnd = TokenHelper::findNextExcluding($phpcsFile, T_WHITESPACE, $useEndPointer + 1); } @@ -183,7 +183,7 @@ private function checkLinesAfterLastUse(File $phpcsFile, UseStatement $lastUse): } $linesToAdd = $requiredLinesCountAfterLastUse; - if (in_array($tokens[$useEndPointer]['code'], TokenHelper::$inlineCommentTokenCodes, true)) { + if (CommentHelper::isLineComment($phpcsFile, $useEndPointer)) { $linesToAdd--; } diff --git a/tests/Sniffs/Namespaces/UseSpacingSniffTest.php b/tests/Sniffs/Namespaces/UseSpacingSniffTest.php index b3836f689..1e4b3c5e0 100644 --- a/tests/Sniffs/Namespaces/UseSpacingSniffTest.php +++ b/tests/Sniffs/Namespaces/UseSpacingSniffTest.php @@ -45,6 +45,17 @@ public function testDefaultSettingsWithCommentsErrors(): void self::assertAllFixedInFile($report); } + public function testDefaultSettingsWithComments2Errors(): void + { + $report = self::checkFile(__DIR__ . '/data/useSpacingWithDefaultSettingsWithComments2Errors.php'); + + self::assertSame(1, $report->getErrorCount()); + + self::assertSniffError($report, 3, UseSpacingSniff::CODE_INCORRECT_LINES_COUNT_AFTER_LAST_USE); + + self::assertAllFixedInFile($report); + } + public function testDefaultSettingsWithInlineCommentsNoErrors(): void { $report = self::checkFile(__DIR__ . '/data/useSpacingWithDefaultSettingsWithInlineCommentsNoErrors.php'); diff --git a/tests/Sniffs/Namespaces/data/useSpacingWithDefaultSettingsWithComments2Errors.fixed.php b/tests/Sniffs/Namespaces/data/useSpacingWithDefaultSettingsWithComments2Errors.fixed.php new file mode 100644 index 000000000..1c11b1d4a --- /dev/null +++ b/tests/Sniffs/Namespaces/data/useSpacingWithDefaultSettingsWithComments2Errors.fixed.php @@ -0,0 +1,11 @@ +