PHPCSStandards/PHP_CodeSniffer

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

Closed this issue · 2 comments

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

  • 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 master branch of PHP_CodeSniffer.

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

Thanks, @jrfnl. I just submitted the PR: #557.