Имена сниффинга в PHPCS не соответствуют исправлениям PHPCBF

У меня есть некоторые сниффы, определенные в 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)

1

Решение

Когда вы запускаете 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

2

Другие решения

Убедитесь, что стандарт зарегистрирован:

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
1

По вопросам рекламы [email protected]