Skip to content

Check if sniffs using AbstractFunctionParameterSniff are handling variable unpacking correctly #2521

Open
@rodrigoprimo

Description

@rodrigoprimo

As noticed while working on #2518, the I18nTextDomainFixer sniff, which uses the AbstractFunctionParameterSniff abstract class, does not handle variable unpacking correctly. It throws a false positive when, at least in some cases, it should ignore a function call with variable unpacking.

For example, the code below triggers a warning, and it shouldn't:

<?php

// phpcs:set WordPress.Utils.I18nTextDomainFixer old_text_domain[] old-text-domain
// phpcs:set WordPress.Utils.I18nTextDomainFixer new_text_domain my-text-domain

__(...$args);
vendor/bin/phpcs --standard=WordPress --sniffs=WordPress.Utils.I18nTextDomainFixer test.php -s     

FILE: test.php
--------------------------------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
--------------------------------------------------------------------------------------------
 6 | ERROR | [x] Missing $domain arg (WordPress.Utils.I18nTextDomainFixer.MissingArgDomain)
--------------------------------------------------------------------------------------------
PHPCBF CAN FIX THE 1 MARKED SNIFF VIOLATIONS AUTOMATICALLY
--------------------------------------------------------------------------------------------

As @jrfnl pointed out, all the sniffs using the same abstract should be checked (and fixed if necessary) to ensure they correctly handle variable unpacking.

Action list

To Do

  • WordPress.CodeAnalysis.EscapedNotTranslated
  • WordPress.DateTime.CurrentTimeTimestamp
  • WordPress.NamingConventions.PrefixAllGlobals
  • WordPress.NamingConventions.ValidHookName
  • WordPress.NamingConventions.ValidPostTypeSlug
  • WordPress.PHP.IniSet
  • WordPress.PHP.PregQuoteDelimiter
  • WordPress.PHP.StrictInArray
  • WordPress.Security.PluginMenuSlug
  • WordPress.Utils.I18nTextDomainFixer
  • WordPress.WP.Capabilities
  • WordPress.WP.DeprecatedParameters
  • WordPress.WP.DeprecatedParameterValues
  • WordPress.WP.DiscouragedConstants
  • WordPress.WP.EnqueuedResourceParameters
  • WordPress.WP.GetMetaSingle
  • WordPress.WP.I18n
  • WordPress.WP.OptionAutoloadSniff (PR ✨ New WordPress.WP.OptionAutoload sniff #2520, not merged yet)

Want to contribute?

Leave a comment below to claim a sniff you'll be working on.

Leave another comment if nothing needs to be done for a given sniff, or create a PR if changes are necessary. PRs related to this task should preferably only contain changes for one sniff each.

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