Проблемный код включает включение файлов с глобальными переменными с использованием такой структуры, как include(magicLogic());, что приводит к более чем 10 000 сообщений об ошибках, таких как «Переменная $myvar не может быть определена».
Я знаю, что добавление /** @var Mixed Myvar */ в заголовок файла решает проблему. Однако работа с более чем 100 такими скриптами и более чем тысячей сообщаемых переменных делает этот подход непрактичным.
Я также знаю, что могу отключить все сообщение об ошибке, используя раздел ignoreErrors в phpstan.neon. Чего я бы предпочел избегать, чтобы не пропустить настоящие неопределенные переменные.
Чтобы решить эту проблему, я скомпилировал список переменных в файле globals.stub.php, намереваясь указать на него PHPStan из конфигурации phpstan.neon. К сожалению, мои попытки не увенчались успехом.
Вот обзор моей конфигурации:
Код: Выделить всё
phpstan.neon:
parameters:
level: 2
paths:
- %rootDir%/../../../
scanFiles:
- globals.stub.php
stubFiles:
- globals.stub.php
bootstrapFiles:
- globals.stub.php
excludePaths:
- vendor
Код: Выделить всё
test.php:
Код: Выделить всё
globals.stub.php:
Код: Выделить всё
Note: Using configuration file ./phpstan.neon.
1/1 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
------ ---------------------------------------
Line test.php
------ ---------------------------------------
4 Variable $myvar might not be defined.
------ ---------------------------------------
- Изменить проверяемые файлы PHP невозможно.
- Добавлять комментарии PHPStan вручную к сотням файлов непрактично.
- Моя задача — найти самый простой и быстрый способ запуска сценариев на PHP8.
- Та же проблема и с константами.
/>
Подробнее здесь: https://stackoverflow.com/questions/779 ... n-variable
Мобильная версия