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
805 stars 47 forks source link

`Squiz.Commenting.FunctionComment.MissingParamName` false positive #535

Open simPod opened 1 week ago

simPod commented 1 week ago

Describe the bug

Squiz.Commenting.FunctionComment.MissingParamName is triggered for valid @param docblock

Code sample

<?php

declare(strict_types=1);

class X
{
    /**
     * @param array{
     *     ud: string
     * } $data
     */
    public function sfsd(array $data): void
    {
    }
}

To reproduce

Steps to reproduce the behavior:

  1. Create a file called test.php with the code sample above...
  2. Run phpcs test.php ...
  3. See error message displayed
    phpcs: Squiz.Commenting.FunctionComment.MissingParamName: Missing parameter name

Expected behavior

No error

Versions (please complete the following information)

Operating System [e.g., Windows 10, MacOS 10.15]
PHP version 8.3
PHP_CodeSniffer version 3.10.1
Standard Squiz
Install type composer local

Please confirm

jrfnl commented 1 week ago

The Squiz.Commenting.FunctionComment sniff - and other comment related sniffs in PHPCS - do not support the array{...} type format and never have.

Reclassifying this ticket as a feature request, not a bug.

To be honest, I've never seen that format before, so is this a codebase specific format ? Is this a format promoted by some other tool ? Is there any formal specification of that array type format ?

As things are at this time, this issue is not actionable without further information.

Note: I'm not giving an opinion yet whether this is a feature request which would be accepted to be supported...

simPod commented 1 week ago

I forgot to mention it does work for single line array shape declaration.

It's array shape, widely adopted by php ecosystem https://phpstan.org/writing-php-code/phpdoc-types#array-shapes