Skip to content

Generic/DisallowYodaConditions: false negatives when handling arrays #467

Open
@rodrigoprimo

Description

@rodrigoprimo

Describe the bug

The Generic.ControlStructures.DisallowYodaConditions sniff has a method called isArrayStatic() that determines what the sniff considers to be static arrays. When static arrays are found on the side of a condition, the sniff triggers an error. I would expect the examples below to be considered static arrays and to trigger an error, but they are not.

Code sample

[1, 2] === $value;
[null] === $value;

To reproduce

Steps to reproduce the behavior:

  1. Create a file called test.php with the code sample above.
  2. Run phpcs --standard=Generic --sniffs=Generic.ControlStructures.DisallowYodaConditions tests.php
  3. Confirm that no errors were displayed.

Expected behavior

I would expect the sniff to generate a Generic.ControlStructures.DisallowYodaConditions.Found error for each line in the code sample above. Similar to what happens, for example, with ['some string'] === $value.

Versions (please complete the following information)

Operating System Ubuntu 23.10
PHP version 8.3.4
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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions