Альтернативный способ установки Code Sniffer

PHP Code sniffer installation

PHP архивы с официального сайта[1] по умолчанию не содержат в себе репозиторий приложений и модулей PHP (Pear), необходимого для установки Code Sniffer. Кроме того, последние версии Drush (доступны в виде архивов), а также веб-серверы Denwer, Wampserver, Acquia Dev Desktop и т.д. не всегда имеют в своем инструментарии Pear. В связи с этим появилась необходимость обновить уже описанный в статье Установка и настройка PHP CodeSniffer процесс.

Содержание

Установка PHP

Скачиваем архив с официальной страницы загрузок PHP[2]. Распаковываем в нужную директорию (в моем случае это D:/_PHP). Необходимо, чтобы операционная система "видела" PHP, для этого путь к папке нужно прописать в системной переменной Path. Идем в свойства компьютера (Пуск→ Компьютер → Свойства).
свойства компьютера
На странице Просмотр основных сведений о вашем компьютере переходим по ссылке Дополнительные параметры системы.
свойства системы
В открывшемся окне находим вкладку Дополнительно и жмем кнопку Переменные среды. В секции Системные переменные ищем переменную Path и дописываем в нее путь до папки с распакованным PHP.
переменные среды
изменение переменной
Сохраняем все изменения и перезагружаем компьютер. После перезагрузки запускаем командную строку и проверяем, что PHP подхватился.

1
php -v

Если все прошло удачно, то будет выведена версия пхп
версия php

Процесс установка Pear

Для установки Pear необходимо запустить go-pear.bat, если таковой имеется в директории php. Если же его нет, то сохраняем содержимое ссылки[3] как файл go-pear.phar в директорию PHP.
Запускаем командную строку, переходим в директорию PHP и выполняем команду

1
php go-pear.phar

Далее будет предложено ответить на несколько вопросов. Отвечаем на первые два (system/yes или local/yes), на остальные просто жмем ENTER. После установки папка PHP будет дополнена новыми файлами.
Теперь самое время проверить корректно ли установился pear. Для этого в командной строке выполняем (возможно понадобится перейти в папку pear)

1
pear

В случае, если все хорошо, будет выведен список доступных команд.
список команд pear

Установка Code Sniffer

Команда установки снифера описана в пункте Инсталляция PHP Code Sniffer. Далее, по аналогии, качаем модуль coder[4], копируем папку с Drupal стандартами кодирования в папку D:\_PHP\pear\PHP\CodeSniffer\Standards\.

Настройка Code Sniffer

В связи с тем, что в PHPStorm 2016 изменился порядок расположения вкладок в settings, полный цикл настройки лишним не будет. В большинстве случаев он схож с уже описанным в вышеупомянутой статье.
В первую очередь, необходимо указать в шторме версию используемого PHP и путь к исполняемому файлу. Для этого нужно пройти на вкладку Конфигурация, щелкнув по кнопкеconfig.jpg или через меню File → Settings. В окне настроек выбираем вкладку Languages & Frameworks → PHP и выбираем из списка PHP language level версию PHP, которая была установлена.
php_language_level.png
Для поля Interpreter жмем на иконку подробности
В открывшемся окне для поля PHP executable указываем путь до исполняемого файла PHP.
путь исполняемого файла php
Если у вас появилось сообщение подобное этому
php ini не существует
то, это означает что в директории PHP нет файла php.ini. Его можно скопировать с файла php.ini-development и переименовать в php.ini.
Далее в окне settings PHPStorm переходим по пути Languages & Frameworks → PHP → Code Sniffer.
настройки php code sniffer
Жмем на иконку подробности и прописываем путь до phpcs.bat
настройки code sniffer
phpcs_path.png
Далее проверяем корректность веденных данных нажатием на кнопку Validate. Если все хорошо, то сообщение будет примерно таким
проверка пути code sniffer
Сохраняем изменения. Остается последний этап - установить стандарты кодирования Drupal. Настройки выполнять согласно пункту Связываем Code Sniffer со стандартами кодирования

Потенциальные проблемы и их решения

После установки pear, на этапе проверки может появиться такое сообщение
pear ошибка пути
В этом случае с помощью любого текстового редактора правим путь до php.exe в файле pear.bat
Исправляем относительный путь до php.exe

1
IF "%PHP_PEAR_PHP_BIN%"=="" SET "PHP_PEAR_PHP_BIN=.\php.exe"

на абсолютный

1
IF "%PHP_PEAR_PHP_BIN%"=="" SET "PHP_PEAR_PHP_BIN=D:\_PHP\php.exe"

Перезапускаем консоль и проверяем снова.
При проверке пути файла phpcs.bat в окне настройки Code Sniffer может появиться такое сообщение
phpcsbat ошибка пути
Проблема в пути к php.exe. Открываем файл phpcs.bat любым текстовым редактором и меняем относительный путь в строке

1
if "%PHPBIN%" == "" set PHPBIN=.\php.exe

на абсолютный

1
if "%PHPBIN%" == "" set PHPBIN=D:\_PHP\php.exe

Сохраняем, возвращаемся в PHPStorm и проверяем снова.
При той же операции, возможно также появление такой ошибки
phpcs ошибка пути
И снова проблема с относительным путем. Открываем файл phpcs, находим (если есть) и корректируем строку

1
include_once 'PHP/CodeSniffer/CLI.php';

до получения такого результата (абсолютный путь до CLI.php)

1
include_once 'D:/_PHP/pear/PHP/CodeSniffer/CLI.php';

Кроме того, вышеописанная проблема может быть вызвана некорректным подключением autoload.php в файле phpcs

1
include_once 'PHP/CodeSniffer/autoload.php';

заменяем на правильный путь до autoload.php, в моем случае это

1
include_once 'pear/PHP/CodeSniffer/autoload.php';

Дополнительная информация по статье

  1. http://php.net/ - официальный сайт PHP
  2. http://windows.php.net/download#php-5.6 - страница загрузок PHP для версии 5.6
  3. https://pear.php.net/go-pear.phar - содержимое go-pear.phar с официальной страницы pear
  4. https://www.drupal.org/project/coder - страница проекта coder на drupal.org
  5. https://pear.php.net - официальная страница pear
  6. Версии программных продуктов, используемых в статье: PHPStorm 2016.1, CodeSniffer 2.6.1, PHP 5.6.22

1 Комментарий

Аватар пользователя Tomas Votruba

Hey, thanks for nice post!

Hey, thanks for nice post!

Just a tip: try composer for installing PHP_CodeSniffer, it's way easier and PEAR won't be supported in the near future.

Shameless plug: you might like this package - EasyCodingStandard