Как настроить PHP CodeSniffer, который расширяет стандарты кодирования WordPress + ошибки автофиксации в VSCode?
Как настроить 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 ответ
Я сделал клонированные стандарты кодирования 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 исправляет все, что может.