Error de extensión PHPCS de VScode: el Sniff referenciado “WordPress-Core” no existe

4 minutos de lectura

avatar de usuario
michelle m

Quiero agregar PHP CodeSniffer a VScode.

Dentro de VScode estoy recibiendo el error 'phpcs: Referenced sniff "WordPress-Core" does not exist'

Sin embargo, cuando ejecuto el siguiente comando en la terminal:

phpcs --standard="WordPress-Core" dropdowns.php

PHP CodeSniffer funciona como se esperaba con la siguiente salida de terminal:

--------------------------------------------------------------------------------
FOUND 34 ERRORS AND 17 WARNINGS AFFECTING 51 LINES
--------------------------------------------------------------------------------
  15 | WARNING | [x] Array double arrow not aligned correctly; expected 10
     |         |     space(s) between "'id'" and double arrow, but found 1.
  17 | WARNING | [x] Array double arrow not aligned correctly; expected 4
     |         |     space(s) between "'taxonomy'" and double arrow, but found
     |         |     1.
  18 | WARNING | [x] Array double arrow not aligned correctly; expected 5
     |         |     space(s) between "'orderby'" and double arrow, but found
     |         |     1.
  34 | WARNING | [x] Equals sign not aligned with surrounding assignments;
     |         |     expected 10 spaces but found 1 space
  35 | WARNING | [x] Equals sign not aligned with surrounding assignments;
     |         |     expected 7 spaces but found 1 space
  36 | ERROR   | [x] Short array syntax is not allowed
  44 | WARNING | [x] Equals sign not aligned with surrounding assignments;
     |         |     expected 2 spaces but found 1 space
  84 | WARNING | [x] Equals sign not aligned with surrounding assignments;
     |         |     expected 2 spaces but found 1 space

Mi archivo settings.json se ve así:

{
    "workbench.colorTheme": "Default Light+",
    "window.zoomLevel": 0,
    "phpcs.standard": "WordPress",
    "phpcs.executablePath": "/Users/michelle/.composer/vendor/bin/phpcs",
    "phpcs.enable": true,
    "phpcs.showWarnings": true,
    "phpcs.showSources": true,
}

Mi phpcs.ruleset.xml se ve así:

<?xml version="1.0"?>
<ruleset name="WordPress Theme Coding Standards">
    <description>My Project's Coding Standards</description>
    <rule ref="~/.composer/vendor/wp-coding-standards/wpcs/WordPress-Docs"/>
    <rule ref="~/.composer/vendor/wp-coding-standards/wpcs/WordPress-Extra"/>
    <rule ref="~/.composer/vendor/wp-coding-standards/wpcs/WordPress"/>
    <rule ref="~/.composer/vendor/wp-coding-standards/wpcs/WordPress-Core"/>
    <rule ref="~/.composer/vendor/wp-coding-standards/wpcs/WordPressVIPMinimum"/>
    <rule ref="~/.composer/vendor/wp-coding-standards/wpcs/WordPress-VIP-Go"/>
</ruleset>

Resolví este error actualizando las referencias de reglas en este archivo:
~/.composer/vendor/wp-coding-standards/wpcs/WordPressser también caminos absolutos. El ruleset.xml final para los estándares de codificación de WordPress ahora tiene este aspecto:

<?xml version="1.0"?>
<ruleset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="WordPress" namespace="WordPressCS\WordPress" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/squizlabs/PHP_CodeSniffer/master/phpcs.xsd">

    <description>WordPress Coding Standards</description>

    <rule ref="~/.composer/vendor/wp-coding-standards/wpcs/WordPress-Core"/>
    <rule ref="~/.composer/vendor/wp-coding-standards/wpcs/WordPress-Docs"/>
    <rule ref="~/.composer/vendor/wp-coding-standards/wpcs/WordPress-Extra">
        <!-- Prevent duplicate messages + deprecation notice from deprecated sniff. -->
        <exclude name="WordPress.WP.TimezoneChange.timezone_change_date_default_timezone_set"/>
        <exclude name="WordPress.WP.TimezoneChange.DeprecatedSniff"/>
    </rule>

</ruleset>

Es muy probable que esté utilizando varias versiones de phpcs.

Prueba, en un caparazón:

which phpcs

Si obtienes algo como /usr/bin/phpcs, tiene el paquete instalado con el administrador de paquetes de su sistema. Administrarlo usando el administrador de paquetes – instalar WordPress-Core con apt o brew o lo que sea que estés usando, o elimínalo (luego inténtalo de nuevo).

Si no obtiene un resultado, intente instalar PHPCS globalmente usando Composer. Cerciorarse ~/.config/composer/vendor/bin está en tu PATH.

En este punto, conoce la ruta del ejecutable que desear para usar, y ya sabes dónde es. Ahora:

phpcs -i

Eso le dará una lista de estándares instalados. el mio dice: MySource, PEAR, PSR1, PSR12, PSR2, Squiz, Zend, PHPCompatibility, PHPCompatibilityParagonieRandomCompat, PHPCompatibilityParagonieSodiumCompat, PHPCompatibilityWP, WordPress-Core, WordPress-Docs, WordPress-Extra and WordPress.

Sabes dónde está tu ejecutable y sabes cómo modificarlo (ya sea Composer con globalo apto brew, o lo que sea). Siga instalando hasta que obtenga lo correcto.

Si está utilizando una extensión PHPCS en VS Code y no ha especificado una ruta completa al ejecutable, es posible que esté comprobando la ruta de su proyecto. Dado lo fácil que es configurar Composer con muchas cosas, puede que sea necesario encontrar otra copia del ejecutable.

Configure la extensión para que apunte al ejecutable correcto. Ahora debería poder encontrar todos los estándares que necesita.

También asegúrese de no estar ejecutando varias extensiones de VS Code. Si eres como yo, cuando cambias a una nueva instalación, vas e instalas 50 extensiones de todas las cosas que crees que necesitarás algún día. Algunas metaextensiones vienen con PHPCS, comúnmente incluido con un formateador, o “todo lo que necesita para codificar en VS Code en PHP”. Asegúrese de que:

  • solo una extensión se está pelusa, o,
  • todos los linters están apuntando a la correcta phpcs ejecutable.

Esto debería solucionar este problema de forma permanente.

debe hacer que todos los estándares de codificación instalados estén disponibles para phpcs:

phpcs --config-set installed_paths full-wpcs-path\WordPress,full-wpcs-path\WordPress-Core,full-wpcs-path\WordPress-Docs,full-wpcs-path\WordPress-Extra

ver phpcs.standard en:
https://marketplace.visualstudio.com/items?itemName=ikappas.phpcs

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad