PHPCSStandards / PHP_CodeSniffer

PHP_CodeSniffer tokenizes PHP files and detects violations of a defined set of coding standards.
BSD 3-Clause "New" or "Revised" License
880 stars 54 forks source link

Squiz/DisallowMultipleAssignments: false positive when checking for default values and function is missing the closing parenthesis #551

Closed rodrigoprimo closed 1 month ago

rodrigoprimo commented 2 months ago

Describe the bug

While reviewing #538, I found another false positive in Squiz.PHP.DisallowMultipleAssignments when the code checks for default values. If the function is missing the closing parenthesis (which is a parse error but could happen during live coding), the sniff will incorrectly throw an error.

I will open a PR to fix this error once #538 is merged to avoid conflicts.

Code sample

<?php

function missingClosingParenthesis($a =

To reproduce

Steps to reproduce the behavior:

  1. Create a file called test.php with the code sample above.
  2. Run phpcs test.php --standard=Squiz --sniffs=Squiz.PHP.DisallowMultipleAssignments test.php
  3. See error message displayed

FILE: test.php

FOUND 1 ERROR AFFECTING 1 LINE

3 | ERROR | Assignments must be the first block of code on a line



## Expected behavior

The sniff should bail early if the function is missing the closing parenthesis instead of producing an error.

## Versions (please complete the following information)

|                                       |                                                                                                           |
|--------------------------|----------------------------------------------------------------------  |
| Operating System           | Ubuntu 24.04                                                       |
| PHP version                    | 8.3                                                                                     |
| PHP_CodeSniffer version | master                                                                            |
| Standard                         | Squiz                                                      |
| Install type                      | git clone |

## Please confirm

- [x] I have searched the issue list and am not opening a duplicate issue.
- [x] I have read the [Contribution Guidelines](https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/.github/CONTRIBUTING.md) and this is not a [support question](https://github.com/PHPCSStandards/PHP_CodeSniffer/discussions).
- [x] I confirm that this bug is a bug in PHP_CodeSniffer and not in one of the external standards.
- [x] I have verified the issue still exists in the `master` branch of PHP_CodeSniffer.
jrfnl commented 2 months ago

@rodrigoprimo I've merged PR #538, feel free to rebase & submit your fix PR.

rodrigoprimo commented 1 month ago

Thanks, @jrfnl. I just submitted the PR: https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/557.