PHP_CodeSniffer icon indicating copy to clipboard operation
PHP_CodeSniffer copied to clipboard

`Squiz.Commenting.FunctionComment.MissingParamName` false positive

Open simPod opened this issue 1 year ago • 3 comments

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

  • [x] 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.
  • [x] 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.

simPod avatar Jul 05 '24 16:07 simPod

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...

jrfnl avatar Jul 05 '24 17:07 jrfnl

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

simPod avatar Jul 05 '24 17:07 simPod

A workaround is to use @phpstan-param instead of @param. PHPStan understands it and PHPCS ignores it as it's not @param.

vhenzl avatar Dec 02 '24 21:12 vhenzl