У меня есть некоторые сниффы, определенные в phpcs.xml, например:
<rule ref="PSR2">
<exclude name="Generic.ControlStructures.InlineControlStructure.NotAllowed"/>
</rule>
Мое намерение состоит в том, чтобы постепенно ужесточить правила CS (есть еще много исключений) в гранулярной манере.
Однако, когда я пытаюсь запустить CBF, происходит сбой с тем же именем:
$ ./vendor/bin/phpcbf --standard=PEAR --sniffs=Generic.Sniffs.ControlStructures.InlineControlStructure.NotAllowed path/to/code
Производство:
ОШИБКА: указанный код сниффера «Generic.Sniffs.ControlStructures.InlineControlStructure.NotAllowed» недопустим
Как это недействительно, если это работает для phpcs? Я не могу найти отображение или соглашение об именовании в документах.
(Я пробовал использовать «PEAR», «PSR2» и «Generic» в качестве стандартов, и я также попробовал это так же, как Generic.ControlStructures.InlineControlStructure.NotAllowed)
Когда вы запускаете PHPCBF, запускайте его с теми же аргументами, что и для PHPCS. PHPCBF будет читать ваш файл ruleset.xml как обычно и обрабатывать все правила, найденные в нем. Все, что вы исключаете из сообщения об ошибке, также будет исключено из исправления. Если у вас есть какие-либо переменные конфигурации, он также будет читать их. PHPCBF и PHPCS используют одну и ту же кодовую базу.
Конкретная ошибка, которую вы получили в том, что Generic.Sniffs.ControlStructures.InlineControlStructure.NotAllowed
это не нюхательное имя. Это полный код ошибки. Вы не можете исключить определенные коды ошибок в командной строке. Если вы использовали Generic.Sniffs.ControlStructures.InlineControlStructure
вместо этого он будет работать, но он также исключит все ошибки в этом сниффе, а не только конкретное сообщение, которое вы предоставили.
Поэтому лучше всего создать свой собственный стандарт кодирования для PHPCS и убедиться, что все ошибки, которые вы хотите исправить, сообщаются, а ошибки, которые вы хотите исключить, скрыты. Когда вы довольны этим результатом, просто измените phpcs
командовать phpcbf
и пусть работает.
Если вы когда-нибудь окажетесь в ситуации, когда вам нужны разные правила для проверки и исправления, вы можете разметить файл ruleset.xml, чтобы сообщить PHPCS и PHPCBF, какие правила применять: https://github.com/squizlabs/PHP_CodeSniffer/wiki/Annotated-ruleset.xml#selectively-applying-rules
Убедитесь, что стандарт зарегистрирован:
phpcs -i
иначе добавьте это:
phpcs --config-set installed_paths path/to/coder_sniffer/standards
Когда он зарегистрирован, вы можете перечислить все ваши нюхает по:
phpcs -e --standard=PEAR
В моем phpcs
этот нюх называется: Generic.ControlStructures.InlineControlStructure
,
$ phpcs -e --standard=PEAR | grep ControlStructures.InlineControlStructure
Generic.ControlStructures.InlineControlStructure