Знакомим `phpcs` (PHP CodeSniffer) и Sublime Text со стандартом оформления кода FuelPHP
UPD: При ближайшем рассмотрении оказалось, что отличий от PSR2 больше, чем табы вместо пробелов. Чтобы сделать автоматическую проверку, надо ещё многое переделать, а где-то и дописать. Так что я поспешил: с опубликованным вариантом проверять синтаксис PHP CodeSniffer'ом на соответствие правилам пока что неудобно.
Самый простой способ - поставить в редакторе/IDE правила автоформатирования PSR-2 и заменить использование пробелов в отступах на табуляцию (этим стандарты оформления кода, принятые в FuelPHP, отличаются от PSR-2). Заодно можно включить отображение пробелов и табуляций.
Это позволит писать новый код по правилам, но огрехи в старом могут оказаться незамеченными.
Для автоматизации проверки кода существуют разные инструменты: примеры (и важность с удобством применения этого непосредственно в редакторах/IDE) есть в статье http://philsturgeon.co.uk/blog/2013/08/php-static-analysis-in-sublime-text.
Обычно они дают возможность запустить проверку, либо настроить её и показ ошибки при сохранениях файла. Последнее очень удобно, т.к. помогает исправлять обнаруженные ошибки по ходу дела и без дополнительных усилий. Ниже - рецепт по автоматизации для ST3 (а может и ST2, если плагин совместим).
Знакомим phpcs
и ST3 со стандатами оформления кода FuelPHP
sudo apt-get install php-codesniffer
phpcs -i
- показать список установленных стандартов. Нуженpsr2
(PSR-2)Если его нет - обновляем полностью CodeSniffer (просто скопировать оттуда папку с PSR2/1 стандартом недостаточно)
Это, конечно, грубовато - обновлять напрямую, в обход
apt-get
, но он считает, что установлена самая свежая версия и более правильного способа я сейчас не знаю.cd ~/Downloads wget https://github.com/squizlabs/PHP_CodeSniffer/archive/master.zip unzip PHP_CodeSniffer-master.zip cd PHP_CodeSniffer-master sudo cp -r --parents -t /usr/share/php/PHP/ CodeSniffer CodeSniffer.php scripts cd scripts sudo mv /usr/bin/phpcs /usr/bin/phpcs.ORIGINAL sudo cp -t /usr/bin/ phpcs
в PSR-2 используются пробелы вместо табуляций и
phpcs
на них ругается. Сделаем свой стандарт "FuelPHP", основанный на PSR2. Рядом с папкой PSR2 создаём FuelPHP, в которой достаточно одного файлаFuelPHP/ruleset.xml
:
``` xml
Проверяем: phpcs -i
The installed coding standards are Zend, FuelPHP, PHPCS, PSR2, PSR1, Squiz, MySource and PEAR
только мы вместо "psr2" теперь напишем свой "FuelPHP" в юзеркониге:
Содержимое /home/rb/.config/sublime-text-3/Packages/User/phpcs.sublime-settings
:
{ "show_debug": true, "phpcs_executable_path": "/usr/bin/phpcs", "phpcs_additional_args": { "--standard": "FuelPHP", "-n": "" }, }
Автоматическая проверка в ST3 тепрь работает.
Также можно использовать отдельно: phpcs --standard=fuelphp home.php
.