- Notifications
You must be signed in to change notification settings - Fork 1.5k
Description
Describe the bug
Using the sniff PSR2.ControlStructures.SwitchDeclaration
brings in an edge case for the error code TerminatingComment
when trying to ignore it for a case token, it generates an error for another case token
Code sample
<?php $statusValue = mt_rand(); switch ( $statusValue ) { case 0: // phpcs:ignore PSR2.ControlStructures.SwitchDeclaration.TerminatingComment case 2: $some = $code; case 3: $other = $code; break; }
Custom ruleset
<?xml version="1.0"?> <ruleset name="My Custom Standard"> <rule ref="PSR2.ControlStructures.SwitchDeclaration" /> </ruleset>
To reproduce
Steps to reproduce the behavior:
- Create a file called
test.php
with the code sample above... - Run
phpcs test.php ...
- With the existing phpcs:ignore its reported an error for the "case 0:" line (which is not expected from my point of view). Without the phpcs:ignore its reported an error for "case 2:" line (which is expected)
Workaround
Adding the phpcs:ignore behind "case 2:" works or another phpcs:ignore for "case 0:"
Expected behavior
The use of phpcs:ignore (or other phpcs comments) should not trigger the error code
Versions (please complete the following information):
- OS: Windows 10
- PHP: 8.0
- PHPCS: 3.6.0
- Standard: -
Additional context
From my understand of the code here, it just checks for T_COMMENT
, which does not include phpcs:ignore comments like this, not sure if Tokens::$commentTokens
is what you want here instead
[Off Topic: When first looking at the line number I was assuming the comment was required between the case before the reported line and the reported case, but that was completly wrong - but my switch/case was very long and that's why I missed the right location to add the missing comment on the first spot]