Ищу рекомендации по настройке PHPStan для миграции устаревшего кода - «Переменная $... может быть не определена»Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Ищу рекомендации по настройке PHPStan для миграции устаревшего кода - «Переменная $... может быть не определена»

Сообщение Anonymous »

В настоящее время я занимаюсь переносом большой, устаревшей кодовой базы на PHP 8.x и использую PHPStan для выявления потенциальных проблем. Однако я столкнулся с проблемой, связанной с включением файлов с использованием глобальных переменных, которую PHPStan пытается решить.
Проблемный код включает включение файлов с глобальными переменными с использованием такой структуры, как 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:

Несмотря на эти усилия, ошибка сохраняется при запуске PHPStan:

Код: Выделить всё

Note: Using configuration file ./phpstan.neon.
1/1 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%

------ ---------------------------------------
Line   test.php
------ ---------------------------------------
4      Variable $myvar might not be defined.
------ ---------------------------------------
Важно отметить, что:
  • Изменить проверяемые файлы PHP невозможно.
  • Добавлять комментарии PHPStan вручную к сотням файлов непрактично.
  • Моя задача — найти самый простой и быстрый способ запуска сценариев на PHP8.
  • Та же проблема и с константами.
    />
Я ищу решение, позволяющее включить список переменных в файл-заглушку и заставить PHPStan его распознавать.

Подробнее здесь: https://stackoverflow.com/questions/779 ... n-variable
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»