Статический анализатор кода 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

Источник: https://www.kobzarev.com/programming/psalm/

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

Суровый русский тимлид. Жил в Магадане, в офисе московских веб студий и в Тульской деревне. Виртуозно знает WordPress, PHP, ООП, Vue.js и вот это вот все. Делает крутые высоконагруженные сайты, поэтому уже почти захватил весь рынок WordPress разработки в России. Не дает никому делать сайты без спроса. Ведет блог о разработке, дайджест в телеграмме и в ВК. Любит сиськи, баню и радиоэлектронику. 100% патриот (но это не точно). Тролль 542 уровня. Ездит в отпуск раз в 5 лет.

Добавить комментарий

%d такие блоггеры, как: