Настройка плагина VIM ALE с помощью PHPSTAN

я использую ALE для моей разработки PHP.
Есть возможность использовать phpstan как один из линтеров, но независимо от того, что я делаю, есть уведомление, что phpstan не может загрузить определения класса / метода:

Function foo not found while trying to analyse it - autoloading is probably not configured properly.

Стандартная конфигурация ALE к сожалению не помогает, потому что ожидает phpstan Быть в $PATHи даже если он там есть, он все равно жалуется на отсутствие автозагрузки.

0

Решение

Это решение git а также composer конкретный.

Я не нашел хорошего решения без каких-либо VCS или composer,

Итак, прежде всего мы предполагаем, что есть composer используется в проекте, поэтому есть autoload.php файл создан. Если вы не используете эту функцию, вам, вероятно, следует это сделать, поскольку она сопоставляет классы с файлами и упрощает автозагрузку.

К сожалению, используя глобальный phpstan бинарный бесполезен Это из-за phpstan ищет в текущем каталоге файл автозагрузки или неон, который сообщает ему, где искать определения классов. Так что, если вы не хотите, чтобы вас заставляли открывать каждый файл в проекте из каталога корневого проекта, тогда должно быть другое решение.

С помощью phpstan двоичный файл установлен composer в вашем проекте (в vendor/bin/phpstan) решает эту проблему. Локальный двоичный файл использует тот же autoload.php и правильно находит каждое определение класса. Таким образом, мы должны сказать Элю, где phpstan бинарный есть.

Вставка в vimrc файл (или лучше в .vim/ftplugin/php.vim) следующая строка:

let g:ale_php_phpstan_executable = system('if ! type git &> /dev/null; then echo phpstan; else PSE=`git rev-parse --show-toplevel 2> /dev/null`/vendor/bin/phpstan; if [ -x "$PSE" ]; then echo -n $PSE; else echo phpstan; fi; fi')

Это говорит ALE путь к phpstan исполняемый файл, который определяется запуском команды оболочки.

if ! type git часть проверяет, есть ли git команда в системе. Если нет, то по умолчанию phpstan текст возвращается в переменную.

git rev-parse --show-toplevel пытается выяснить, находимся ли мы в git хранилище и что это каталог верхнего уровня. Когда найдено правильно, он определяет путь к phpstan добавляя /vendor/bin/phpstan в каталог верхнего уровня. Это где локально установлен phpstan должен проживать.
Если такого файла нет или он не исполняемый, то по умолчанию phpstan значение переменной возвращается.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]