You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
While working on #482, I found two issues in the Generic.ControlStructures.InlineControlStructure sniff when fixing some do-while statements that contain syntax errors.
Code sample
Code sample 1:
<?php// missing semicolon and nothing but empty tokens after the while closing parenthesisforeach ($arrayas$item)
do {
echo$i;
$i++;
} while ($i < 5)
Code sample 2:
<?php// missing semicolon after while condition and non-empty tokens after itforeach ($arrayas$item)
do {
echo$i;
$i++;
} while ($i < 5)
if ($test)
echo'test';
To reproduce
Steps to reproduce the behavior:
Create a file called test.php with one of the code samples above.
Run phpcbf --standard=Generic --sniffs=Generic.ControlStructures.InlineControlStructure test.php
Check the modified files.
Modified code sample 1 (note the semicolon and closing curly bracket added after the PHP opening tag):
<?php
;
}
// missing semicolon and nothing but empty tokens after the while closing parenthesisforeach ($arrayas$item) {
do {
echo$i;
$i++;
} while ($i < 5)
Modified code sample 2 (note the curly bracket added after the while closing parenthesis and after the if statement):
<?php// missing semicolon after while condition and non-empty tokens after itforeach ($arrayas$item) {
do {
echo$i;
$i++;
} while ($i < 5) {
if ($test) {
echo'test';
}
}
}
Expected behavior
I would expect PHPCS to detect the syntax error in both cases (missing semicolon after while closing parenthesis) and to bail instead of attempting to fix the code sample, introducing even more problems.
Versions (please complete the following information)
Operating System
Ubuntu 23.10
PHP version
8.3
PHP_CodeSniffer version
master
Standard
Generic
Install type
git clone
Please confirm
I have searched the issue list and am not opening a duplicate issue.
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 master branch of PHP_CodeSniffer.
The text was updated successfully, but these errors were encountered:
I would expect PHPCS to detect the syntax error in both cases (missing semicolon after while closing parenthesis) and to bail instead of attempting to fix the code sample, introducing even more problems.
I think the bailing early should only happen if it is a while which is part of a do-while and there is no other code after it, otherwise, the sniff would start to ignore while structures which are perfectly fine to fix like:
foreach ($arrayas$item)
while ($i < 5)
if ($test)
echo'test';
Describe the bug
While working on #482, I found two issues in the Generic.ControlStructures.InlineControlStructure sniff when fixing some do-while statements that contain syntax errors.
Code sample
Code sample 1:
Code sample 2:
To reproduce
Steps to reproduce the behavior:
test.php
with one of the code samples above.phpcbf --standard=Generic --sniffs=Generic.ControlStructures.InlineControlStructure test.php
Modified code sample 1 (note the semicolon and closing curly bracket added after the PHP opening tag):
Modified code sample 2 (note the curly bracket added after the while closing parenthesis and after the if statement):
Expected behavior
I would expect PHPCS to detect the syntax error in both cases (missing semicolon after while closing parenthesis) and to bail instead of attempting to fix the code sample, introducing even more problems.
Versions (please complete the following information)
Please confirm
master
branch of PHP_CodeSniffer.The text was updated successfully, but these errors were encountered: