Deprecation Detector для PHP кода

767
Мысль, что такие инструменты уже созданы, появилась после вот этого комментария. На комментарий я
ответил, но, как говорится, осадочек то остался.
Затем я познакомился с возможностями 2-х статических анализаторов кода.
Это замечательные инструменты, но с ходу решить данную задачу с их помощью мне не удалось.
Я уже перестал туда думать, занявшись другими вопросами. Но вот несколько дней назад я случайным образом наткнулся на DeprecationDetector.
На страничке проекта написано: "SensioLabs DeprecationDetector выполняет статический анализ
исходного кода вашего проекта, чтобы найти случаи использования устаревших методов, классов и
интерфейсов."
Два слова о том, что устаревает на примере функций. В PHP есть функция set_magic_quotes_runtime. Смотрим документацию по этой функции и видим
Внимание
Эта функция считается УСТАРЕВШЕЙ с PHP 5.3.0 и УДАЛЕНА в PHP 7.0.0.
и далее
Ошибки
С версии PHP 5.3 эта функция устарела и при запуске вызывает предупреждение E_DEPRECATED. С версии PHP 5.4 эта функция также вызывает ошибку E_CORE_ERROR при попытке включить магические кавычки.
Ничего плохого или драматичного в устаревании нет, это отражение развития языка.

Собственно, те кто в своей практике пользуются консолью, могут уже дальше не читать, а качать эту могучую
утилиту и анализировать с её помощью свой или чужой код.

Но не всем консоль нужна. И вот для этой аудитории и была написана web-обёртка для DeprecationDetector.
Плюсом для меня явилось то, что DeprecationDetector умеет формировать отчёт в виде html страницы.

Использование

Распакуйте deprecated.zip в корневой директории вашего сайта. В корне сайта должна
появиться директория deprecated. В браузере наберите _http://your-site.com/deprecated/s.php
Отобразится нехитрая страничка с полем для ввода пути к исследуемой директории. Чтобы сориентироваться,
что вводить, на страничке имеется абсолютный адрес директории, из которой запущен скрипт.
Для тренировки можете сначала запустить анализ для этой директории. Смотрите результат.
Играйтесь!
После анализа всего, что вы хотели, удалите директорию deprecated.
Проверка требований к PHP | Оптимизация размера изображений на сайте
Комментарии (13)
AndroS 4 августа 2020 в 11:32 +1
Ниче не понял, но очень интересно! ))) Добавьте скриншоты хотя бы...
@IamB 4 августа 2020 в 11:48 +1
Эта штуковина ищет устаревший код в вашем проекте и рассказывает, что не так.
vikont 4 августа 2020 в 14:45 0
Попробовал проверить код всего сайта и получил
Спойлер
Как это понимать?
@IamB 4 августа 2020 в 16:08 0
У вас отобразился файл, который уже был в архиве. Это проверка на моём компьютере и она должна была замениться на результат проверки на вашем сайте. Этого не произошло. О причине могу только догадываться - у вас не работает функция exec.
Ris 4 августа 2020 в 16:38 0
У меня тот же результат на опенсервере.
И причина в том, что на опенсервере exec , похоже, не работает.
У меня также вылетает алерт: Windows не удается открыть файл этого типа (.phar)
@IamB 4 августа 2020 в 18:52 0
Недоработка с моей стороны. Разработку вёл на встроенном сервере и был уверен, что и на "настоящем" всё так же. Ан нет. Конструкция
Код PHP:
  1. $php = getenv("_");
давала мне путь к интерпретатору PHP, но она не работает. В массиве $_ENV тоже нет необходимого, PHP_BINARY отдаёт не то, что хотелось бы.
Пока не знаю, как тут быть.
@IamB 5 августа 2020 в 08:19 +1
Ris, огромная благодарность за тестирование и мозговой штурм.

Файл скрипта вновь доступен для скачивания, протестировали все доступные на этот момент конфигурации ПО ,на них скрипт работает.
vikont 5 августа 2020 в 18:06 0
Обновил скрипт и теперь другая ошибка
Не определён путь к интерпретатору PHP. ОС: Linux dsdnr.ru 4.18.15-1.el7.elrepo.x86_64 #1 SMP Thu Oct 18 10:19:42 EDT 2018 x86_64
Абсолютный путь определяется неверно, но если использовать верный ошибка не меняется.
В прошлой версии абсолютный путь определялся правильно.
@IamB 5 августа 2020 в 19:49 0
Абсолютный путь определяется неверно, но если использовать верный ошибка не меняется.
В прошлой версии абсолютный путь определялся правильно.
Не скажу как у вас так получилось. Способ определения не изменился
$cdir = __DIR__; // текущая директория
Не определён путь к интерпретатору PHP. ОС: Linux
Тут не сработала конструкция
exec("whereis php", $output);
и либо у вас отключена в целях безопасности функция PHP exec, либо не сработала консольная команда
whereis php
попробуйте выполнить её в консоли, у вас же есть возможность?
vikont 5 августа 2020 в 22:18 0
Не скажу как у вас так получилось. Способ определения не изменился $cdir = __DIR__; // текущая директория
Только обновил скрипт и все.
Тут не сработала конструкция exec("whereis php", $output); и либо у вас отключена в целях безопасности функция PHP exec,
Нет такой конструкции.
@IamB 5 августа 2020 в 22:45 0
Нет такой конструкции.
Специально скачал с сайта. Файл handler.php 26 строка.
Вы не ответили на мои вопросы про функцию exec и запрос через консоль.
vikont 6 августа 2020 в 02:28 0
smile Еще раз отвечаю, у меня на сервере нет установленного php exec и его установка пока под вопросом (долбят сервер каждый день)
Консольная команда whereis php срабатывает
@IamB 6 августа 2020 в 09:30 0
vikont, вы в своём праве устанавливать правила безопасности на своём сервере. Для справки: exec штатно используется в движке.
Могу для вашего случая предложить вариант использования утилиты DeprecationDetector через консоль, ссылка на первоисточник
в тексте поста.