Верх страницы
Обложка к записи Статический анализатор кода Psalm в WordPress
Время для прочтения: 0 мин. 29 сек.

Статический анализатор кода Psalm в WordPress

Статические анализаторы кода (PHPStan, Psalm, Phan) просто читают код и пытаются найти в нём ошибки.

Они могут выполнять как очень простые и очевидные проверки (например, на существование классов, методов и функций, так и более хитрые (например, искать несоответствие типов, race conditions или уязвимости в коде).

Ключевым является то, что анализаторы не выполняют код — они анализируют текст программы и проверяют её на типичные (и не очень) ошибки.

Далее пойдёт речь об одном таком синтаксическом анализаторе кода под названием Psalm.

Установка Psalm

# Устанавливаем Psalm
composer require --dev vimeo/psalm

# Создаём файл конфигурации
./vendor/bin/psalm --init

# Делаем первый запуск
./vendor/bin/psalm

После первого запуска вы увидите сотни ошибок, связанных с тем, что Psalm ничего не знает о функциях ядра WordPress, например о add_filter или add_action.

Чтобы это исправить, достаточно установить плагина WordPress plugin for Psalm от ребят из компании Human Made.

Установка заглушек WordPress

Данный плагин под Psalm предоставляет заглушки (stubs) для всего в ядре WordPress (в том числе, WP CLI), чтобы ваш проект или плагин на базе WordPress имел информацию о типе данных при обращениях к API WordPress:

  •  Заглушки для всего ядра WordPress
  •  Заглушки для WP CLI
  • Типы для возвращаемых значений apply_filters
  •  Типы add_filter / add_action
# Устанавливаем плагин
composer require --dev humanmade/psalm-plugin-wordpress

# Активируем плагин в psalm.xml
./vendor/bin/psalm-plugin enable humanmade/psalm-plugin-wordpress

Команда для Composer

Для удобства запуска Psalm из терминала рекомендую добавить свой скрипт в конфигурацию composer.json:

"scripts": {
    "psalm": "vendor/bin/psalm --config=psalm.xml",
}

После чего у вас появится возможность запуска Psalm, используя команду composer psalm.

Psalm в PhpStorm

Раздел наполняется

RTFM

Автор: Кобзарёв Михаил

Русский разработчик с 20-ти летним стажем. Работаю с PHP, ООП, JavaScript, Git, WordPress, Битрикс, Joomla, Drupal, Opencart, DLE, Laravel, Moonshine, SuiteCRM.

Оптимизирую сайты под Google Page Speed, настраиваю импорты для больших магазинов на WooCommerce + WP All Import. Пишу плагины на заказ. Все мои услуги.

Веду блог о разработке, дайджест в телеграмме и в ВК.

Вы всегда можете нанять меня.

Комментарии
Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
Предыдущая запись

Давайте дружить
в Телеграме

Авторский блог вашего покорного слуги в Telegram про web, программирование, алгоритмы, инструменты разработчика, WordPress, Joomla, Opencart, Laravel, Moonshine, фильмы и сериалы