Code sniffer
Снова копирую собственную статью из вики в бложек. Половина авторства принадлежит Сергею Бухарову.
Code sniffer — инструмент для инспекции кода на соответствие стандартам. Существует огромное количество стандартов кодирования на PHP. В нашей команде, например, используется стандарт Zend для кода, и стандарт PEAR для док-блоков. Это пояснение важно, поскольку к статье приложен файл с именно этим шаблоном проверки.
Что такое:
Комплекс инструментов, позволяющий держать код в рамках стандарта.
Основной этих инструментов является Code Sniffer — консольная утилита, проверяющяя соотвествие стандарту файлы на PHP, JavaScript и CSS. Это важный инструмент для развитя и поддержания кода в чистоте
Инсталяция
Инсталяция Code Sniffer:
pear install PHP_CodeSniffer
у Code Sniffer’a кодировка по умолчанию iso-8859-1, поэтому кириллицу в уникоде символ считает за 2. Чтобы этого не было, нужно поставить кодировку по умолчанию utf-8:
sudo phpcs --config-set encoding utf-8
Установка стандарта кода TRS
создать папку «TRS» в /usr/share/php/PHP/CodeSniffer/Standards.
Скопировать туда файл ruleset.xml
Использование:
phpcs --standard=TRS trunk/library/SOA/Contract
Интеграция CodeSniffer и PHPStorm
Как интегриовать:
1) File -> Settings
2) Editor -> External tools
3) Add
4) в форме указать:
Имя: <любое понятное тебе>
Program: phpcs
Parametrs: report=emacs standard=TRS $FilePath$
Добавить Output Filter: $FILE_PATH$:$LINE$:$COLUMN$
Что получится в итоге:
Запуск CodeSniffer горячей клавишей из Шторма
Вывод результата в интерфей шторма
Все ошибки будут паривязаны к строкам кода, возможен быстрый переход на проблемное место
Использование:
После правки любого файла необходимо пройтись по нему CodeSniffer’ом для выявления не соотвествующему стандарту кода.
Для этого в контекстном меню появится пункт с именем, которое было задано при интеграции с PHPStorm’ом
Результат будет примерно следующий:
Строки кликабельны.
После фикса всех предупреждений можно комитить изменения в репозиторий. Делать это можно при помощи любого инструмента.
Реформат кода в PHP Storm
PhpStorm для реформатирования кода можно использовать команду Code/Reformat Code..., которая делает отступы/выравнивания/итд для php-скриптов. Можно просто импортировать настройки (settings.jar) моего phpStorm, много ручной работы будет делать за вас он сам.
Использование:
Открываем в Шторме нужный файл, в контекстном меню появится дополнтельный пункт с именем, указаном выше.
CodeSniffer and git hooks
Положить в папку opencity/.git/hooks/ файлы pre-commit, pre-commit-phpcs, pre-commit-debug-output и asker c правами 0755 из архива http://redmine.trs.io/attachments/4453/pre-commit.zip
Пример (предварительно необходимо скачать pre-commit.zip):
cd /var/www/opencity/.git/hooks
cp <ваш путь к pre-commit.zip> pre-commit.zip
unzip pre_commit.zip
chmod 0755 pre-commit pre-commit-phpcs pre-commit-debug-output
rm pre_comment.zip
pre-commit — скрипт хука
pre-commit-phpcs — скрипт проверяющий на соответствие стандартам кодирования
pre-commit-debug-output — проверяет наличие функций для отладочного вывода (var_dump, var_export, etc)
asker — программа запроса действия
На этом установка завершена.
Теперь при попытке закомитить файлы расширения php и phtml они будут пропущены через codeSniffer стандарта TRS
Коммит завершится успешно в случае соответствия стандарту.
В случае не соотвесвия стандарту будут выданы ошибки, похожие на эти
Игнорирование не стандартизованого кода
Бывают ситуации, когда изменение кода, не проходщего валидацию codeSniffer’ом не целесообразно. Например, вы включили в проект чужую библиотеку и никогда в жизни никто не полезет в ее исходники, тогда можно воспользоваться конструкцией:
<?php
много кода
// @codingStandardsIgnoreStart
здесь тоже много кода, но он не будет проверен
// @codingStandardsIgnoreEnd
дальше много кода
В этом случае код, находящийся между
@codingStandardsIgnoreStart
и
@codingStandardsIgnoreEnd
не будет проверен. Но в этом случае надо создать шапку файла и в ней подробно описать почему именно так сделано.
Добрые день )
хотел с вами связатся — не нащел контактов
я руководитель отдела разработки в одном интересном стартапе и нам нужем хороший серверный php-програмист
возможно как трудоустройство так и проектная работа — 79377710117 наберите если интересно
было бы круто выложить файлы из архива на github
pre-commit.zip потерялся
pre-commit.zip потерялся