Deprecation Detector для PHP кода

+10
1.4K

Мысль, что такие инструменты уже созданы, появилась после вот этого комментария. На комментарий я
ответил, но, как говорится, осадочек то остался.
Затем я познакомился с возможностями 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.

+1
AndroS AndroS 1 год назад #
Ниче не понял, но очень интересно! ))) Добавьте скриншоты хотя бы...
+1
IamB IamB 1 год назад #
Эта штуковина ищет устаревший код в вашем проекте и рассказывает, что не так.
0
vikont vikont 1 год назад #
Попробовал проверить код всего сайта и получил
Спойлер
Как это понимать?
0
IamB IamB 1 год назад #
У вас отобразился файл, который уже был в архиве. Это проверка на моём компьютере и она должна была замениться на результат проверки на вашем сайте. Этого не произошло. О причине могу только догадываться - у вас не работает функция exec.
0
Ris Ris 1 год назад #
У меня тот же результат на опенсервере.
И причина в том, что на опенсервере exec , похоже, не работает.
У меня также вылетает алерт: Windows не удается открыть файл этого типа (.phar)
0
IamB IamB 1 год назад #
Недоработка с моей стороны. Разработку вёл на встроенном сервере и был уверен, что и на "настоящем" всё так же. Ан нет. Конструкция
Код PHP:
  1. $php = getenv("_");
давала мне путь к интерпретатору PHP, но она не работает. В массиве $_ENV тоже нет необходимого, PHP_BINARY отдаёт не то, что хотелось бы.
Пока не знаю, как тут быть.
+1
IamB IamB 1 год назад #
Ris, огромная благодарность за тестирование и мозговой штурм.

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

Еще от автора

Создание таск-трекера своими(почти) руками
Этот пост появился благодаря теме на форуме. Поразмышлял, пописал код, поставил опыты и. думаю, процентов на 80 решил задачу с форума.
Логгер для проекта
По случаю написал логгер. Конечно, можно было взять готовый, поскольку только ленивые их не писали.
Определение пути для хранения файлов сессий
Раз за разом на форуме появляются темы, связанные с определением пути хранения сессий.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.