-
-
Notifications
You must be signed in to change notification settings - Fork 89
Closed
Description
Describe the bug
The namespace keyword can both be used for namespace declarations as well as as an operator - "magic keyword" - to resolve to the current namespace.
See: https://www.php.net/manual/en/language.namespaces.nsconstants.php#example-298
This last case is not correctly taken into account when determining the current namespace, which leads to false negatives.
Code sample
<?php
namespace TestMe;
//namespace\functionCall();
class SelfMemberReference
{
public function falseNegative()
{
$testResults[] = \TestMe\SelfMemberReference::test();
}
}To reproduce
Steps to reproduce the behavior:
- Create a file called
test.phpwith the code sample above... - Run
phpcs -ps ./test.php --standard=squiz --sniffs=squiz.classes.selfmemberreference - See error message displayed
------------------------------------------------------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
------------------------------------------------------------------------------------------------------------------
11 | ERROR | [x] Must use "self::" for local static member reference (Squiz.Classes.SelfMemberReference.NotUsed)
------------------------------------------------------------------------------------------------------------------
PHPCBF CAN FIX THE 1 MARKED SNIFF VIOLATIONS AUTOMATICALLY
------------------------------------------------------------------------------------------------------------------
- Now uncomment line 5 containing the
namespacekeyword used as an operator. - Run
phpcs -ps ./test.php --standard=squiz --sniffs=squiz.classes.selfmemberreferenceagain. - See no error displayed <= this is the false negative.
Expected behavior
That namespace keywords used as an operator are ignored when determining the applicable namespace name.
Versions (please complete the following information)
| Operating System | not relevant (Windows 10) |
| PHP version | not relevant (8.3.8) |
| PHP_CodeSniffer version | 3.10.1 / master as of today |
| Standard | Squiz |
| Install type | not relevant (git clone) |
Please confirm
- I have searched the issue list and am not opening a duplicate issue.
- I have read the Contribution Guidelines and this is not a support question.
- I confirm that this bug is a bug in PHP_CodeSniffer and not in one of the external standards.
- I have verified the issue still exists in the
masterbranch of PHP_CodeSniffer.