Изменение стандарта PEAR для phpcs

Я хотел бы внести небольшое изменение в стандарт PEAR для нашей проверки phpcs. На данный момент PEAR требует, чтобы вы написали оператор else следующим образом:

} else {

Мы хотели бы написать их так:

}
else {

Как я могу сделать это изменение?


person Noodles    schedule 22.11.2012    source источник
comment
Доступен ли ваш код онлайн? Я также хотел бы оформить свой код таким образом, но я не хочу исключать PEAR.ControlStructures.ControlSignature.   -  person TheFox    schedule 30.04.2014


Ответы (1)


Единственный способ сделать это — написать собственный стандарт кодирования с помощью файла ruleset.xml. Он должен импортировать весь стандарт кодирования PEAR, но исключить конкретный снифф, выполняющий эту проверку. Этот бит можно сделать с помощью одного XML-файла.

Но нет встроенных сниффов, которые обеспечивают тип синтаксиса else, который вы ищете. Поэтому, чтобы обеспечить это, вам нужно написать собственный снифф, что более сложно, так как вам также нужно где-то его хранить.

Если вы хотите начать с простого пользовательского стандарта кодирования, создайте файл с именем ruleset.xml и сделайте его содержимым:

<?xml version="1.0"?>
<ruleset name="MyStandard">
 <description>My custom coding standard.</description>
 <rule ref="PEAR">
  <exclude name="PEAR.ControlStructures.ControlSignature"/>
 </rule>
</ruleset>

Затем запустите PHP_CodeSniffer следующим образом:

phpcs --standard=/path/to/ruleset.xml /path/to/code

Это проверит ваш код на соответствие стандарту кодирования PEAR, но исключит специальные проверки управляющих структур. Если это все, что вам нужно, вы можете остановиться на этом. Если у вас есть команда людей, которым вы хотите использовать этот пользовательский стандарт, просто дайте им файл, и они тоже смогут его использовать.

Подробнее о формате ruleset.xml можно узнать здесь: https://github.com/squizlabs/PHP_CodeSniffer/wiki/Annotated-ruleset.xml

Если вы хотите продолжить и написать собственный снифф, лучше всего начать с базового руководства: http://pear.php.net/manual/en/package.php.php-codesniffer.coding-standard-tutorial.php

Это объяснит, что такое стандарт кодирования. Затем вы захотите создать свой собственный снифф, который является просто копией PEAR с небольшими изменениями в том, как вы структурируете управление. Снифф PEAR находится здесь: https://github.com/squizlabs/PHP_CodeSniffer/blob/master/CodeSniffer/Standards/PEAR/Sniffs/ControlStructures/ControlSignatureSniff.php

Я предполагаю, что без тестирования вы захотите изменить } else {EOL', на }EOLelse {EOL', и посмотреть, сработает ли это.

person Greg Sherwood    schedule 22.11.2012
comment
Спасибо, Грег, по-видимому, добавление EOL до того, как остальное не сработает. В итоге я позаимствовал снифф из стандартов кода Drupal и объединил их с PEAR. Тем не менее, спасибо за ваш комментарий, там есть полезная информация. - person Noodles; 23.11.2012