Как настроить PHP CodeSniffer, который расширяет стандарты кодирования WordPress + ошибки автофиксации в VSCode? - PullRequest
0 голосов
/ 05 декабря 2018

Как настроить PHP CodeSniffer для проекта с личными правилами, которые расширяют стандарты кодирования WordPress + ошибки автоматического исправления в VSCode при сохранении?

У меня установлен CodeSniffer глобально

composer global require "squizlabs/php_codesniffer=*"

Стандарты кодирования WordPress установлены внутри папки темы (поэтому внутри проекта они находятся на /wp-content/themes/bideja/wpcs)

git clone -b master https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards.git wpcs

В папке темы, которую я создал, phpcs.xml, которая должна наследовать стандарты WordPress, чтобы я мог настроить ее дальше

<?xml version="1.0"?>
<ruleset name="Bideja">
    <description>Sniffs</description>

    <config name="installed_paths" value="wpcs" />

    <arg value="s"/>

    <exclude-pattern>assets/*</exclude-pattern>
    <exclude-pattern>node_modules/*</exclude-pattern>
    <exclude-pattern>vendor/*</exclude-pattern>

    <rule ref="WordPress-VIP">
        <exclude name="Generic.Files.EndFileNewline.NotFound" />
        <exclude name="WordPress.PHP.YodaConditions.NotYoda" />
    </rule>

</ruleset>

В терминале Bash внутри темы я могу сканировать страницы для поискаошибки и исправить их

phpcs page.php
phpbcf page.php 

Но как VSCode может исправить их при сохранении?Я получаю сообщение об ошибке:

phpcs: Referenced sniff "WordPress-VIP" does not exist

Что я должен поместить в User settings.json?

"phpcs.enable": true,
"phpcs.standard": "WordPress", // ?

Я попытался установить

phpcs --config-set installed_paths wpcs

Когда я проверяю установленныйстандарты с phpcs -i Я вижу, что перечислены стандарты WordPress

 The installed coding standards are MySource, PEAR, PSR1, PSR12, PSR2, Squiz, Zend, WordPress, WordPress-Core, WordPress-Docs, WordPress-Extra and WordPress-VIP

Также способен ли CodeSniffer автоматически создавать отступы для PHP и HTML или это выходит за рамки его возможностей?Я борюсь с хорошим отступом в VSCode

1 Ответ

0 голосов
/ 06 декабря 2018

Я скопировал стандарты кодирования WordPress в C:/wamp64/www/tools/phpcs и создал пользовательские ruleset.xml в C:/wamp64/www/tools/phpcs/bideja

<?xml version="1.0"?>
<ruleset name="Bideja">

    <arg value="s"/>

    <exclude-pattern>assets/*</exclude-pattern>
    <exclude-pattern>node_modules/*</exclude-pattern>
    <exclude-pattern>vendor/*</exclude-pattern>

    <rule ref="WordPress">
        <exclude name="WordPress.PHP.YodaConditions.NotYoda" />
        <!-- exclude other stuff as you wish -->
    </rule>

</ruleset>

Установите новые стандарты

phpcs --config-set installed_paths C:/wamp64/www/tools/phpcs/wp-coding-standards/wpcs,C:/wamp64/www/tools/phpcs/bideja

Проверьте, соответствуют ли стандарты

phpcs -i

Установить стандарт по умолчанию

phpcs --config-set default_standard bideja

Установить расширение phpcbf, добавить переменную среды для пути в Windows в зависимости от пути к папке

 C:\Users\User\AppData\Roaming\Composer\vendor\bin

и измените User settings.json, указав правильный путь и имя вашего стандартного

"phpcbf.executablePath": "C:\\Users\\User\\AppData\\Roaming\\Composer\\vendor\\bin\\phpcbf.bat",
"phpcbf.executablePathWindows": "C:\\Users\\User\\AppData\\Roaming\\Composer\\vendor\\bin\\phpcbf.bat",
"phpcs.standard": "bideja",
"phpcbf.standard": "bideja",
"phpcs.enable": true,
"phpcbf.onsave": true,

Надеюсь, я что-то не забыл, так как я часами возился с этим, но, наконец, теперь после сохранения файла VSCode исправляет все, что может.

...