Skip to content

Commit 4af3360

Browse files
committed
UnusedUsesSniff: fixed false positives
1 parent 43a8563 commit 4af3360

File tree

3 files changed

+15
-8
lines changed

3 files changed

+15
-8
lines changed

SlevomatCodingStandard/Sniffs/Namespaces/UnusedUsesSniff.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,10 @@ public function process(\PHP_CodeSniffer\Files\File $phpcsFile, $openTagPointer)
8888
$uniqueId = UseStatement::getUniqueId($useStatement->getType(), $nameAsReferencedInFile);
8989

9090
foreach ($annotations as $annotationName => $annotationsByName) {
91-
if (preg_match('~^@(' . preg_quote($nameAsReferencedInFile, '~') . ')(?=[^a-z\\d]|$)~i', $annotationName, $matches)) {
91+
if (
92+
!in_array($annotationName, ['@param', '@throws', '@property', '@method'], true)
93+
&& preg_match('~^@(' . preg_quote($nameAsReferencedInFile, '~') . ')(?=[^-a-z\\d]|$)~i', $annotationName, $matches)
94+
) {
9295
$usedNames[$uniqueId] = true;
9396

9497
if ($matches[1] !== $nameAsReferencedInFile) {

tests/Sniffs/Namespaces/UnusedUsesSniffTest.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -165,16 +165,16 @@ public function testReportCaseInsensitiveUse(): void
165165

166166
self::assertSame(7, $report->getErrorCount());
167167

168-
self::assertSniffError($report, 26, UnusedUsesSniff::CODE_MISMATCHING_CASE, 'Case of reference name "bar" and use statement "Bar" do not match');
169-
self::assertSniffError($report, 28, UnusedUsesSniff::CODE_MISMATCHING_CASE, 'Case of reference name "BAR" and use statement "Bar" do not match');
168+
self::assertSniffError($report, 30, UnusedUsesSniff::CODE_MISMATCHING_CASE, 'Case of reference name "bar" and use statement "Bar" do not match');
169+
self::assertSniffError($report, 32, UnusedUsesSniff::CODE_MISMATCHING_CASE, 'Case of reference name "BAR" and use statement "Bar" do not match');
170170

171-
self::assertSniffError($report, 30, UnusedUsesSniff::CODE_MISMATCHING_CASE, 'Case of reference name "boo" and use statement "Boo" do not match');
172-
self::assertSniffError($report, 31, UnusedUsesSniff::CODE_MISMATCHING_CASE, 'Case of reference name "BOO" and use statement "Boo" do not match');
173-
self::assertSniffError($report, 33, UnusedUsesSniff::CODE_MISMATCHING_CASE, 'Case of reference name "boo" and use statement "Boo" do not match');
171+
self::assertSniffError($report, 34, UnusedUsesSniff::CODE_MISMATCHING_CASE, 'Case of reference name "boo" and use statement "Boo" do not match');
172+
self::assertSniffError($report, 35, UnusedUsesSniff::CODE_MISMATCHING_CASE, 'Case of reference name "BOO" and use statement "Boo" do not match');
173+
self::assertSniffError($report, 37, UnusedUsesSniff::CODE_MISMATCHING_CASE, 'Case of reference name "boo" and use statement "Boo" do not match');
174174

175-
self::assertSniffError($report, 75, UnusedUsesSniff::CODE_MISMATCHING_CASE, 'Case of reference name "ignore" and use statement "Ignore" do not match');
175+
self::assertSniffError($report, 79, UnusedUsesSniff::CODE_MISMATCHING_CASE, 'Case of reference name "ignore" and use statement "Ignore" do not match');
176176

177-
self::assertSniffError($report, 75, UnusedUsesSniff::CODE_MISMATCHING_CASE, 'Case of reference name "uuid" and use statement "Uuid" do not match');
177+
self::assertSniffError($report, 79, UnusedUsesSniff::CODE_MISMATCHING_CASE, 'Case of reference name "uuid" and use statement "Uuid" do not match');
178178
}
179179

180180
public function testUsedTrait(): void

tests/Sniffs/Namespaces/data/caseInsensitiveUse.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@
2222
use ThrowsAnnotationDescription;
2323
use MethodAnnotation;
2424
use MethodAnnotationDescription;
25+
use Param;
26+
use Throws;
27+
use Property;
28+
use Method;
2529

2630
new bar();
2731

0 commit comments

Comments
 (0)