Deprecation Detector для PHP кода

+11
1.85K

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

Файл скрипта вновь доступен для скачивания, протестировали все доступные на этот момент конфигурации ПО ,на них скрипт работает.
0
vikont vikont 3 года назад #
Обновил скрипт и теперь другая ошибка
Не определён путь к интерпретатору 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 3 года назад #
Абсолютный путь определяется неверно, но если использовать верный ошибка не меняется.
В прошлой версии абсолютный путь определялся правильно.
Не скажу как у вас так получилось. Способ определения не изменился
$cdir = __DIR__; // текущая директория
Не определён путь к интерпретатору PHP. ОС: Linux
Тут не сработала конструкция
exec("whereis php", $output);
и либо у вас отключена в целях безопасности функция PHP exec, либо не сработала консольная команда
whereis php
попробуйте выполнить её в консоли, у вас же есть возможность?
0
vikont vikont 3 года назад #
Не скажу как у вас так получилось. Способ определения не изменился $cdir = __DIR__; // текущая директория
Только обновил скрипт и все.
Тут не сработала конструкция exec("whereis php", $output); и либо у вас отключена в целях безопасности функция PHP exec,
Нет такой конструкции.
0
IamB IamB 3 года назад #
Нет такой конструкции.
Специально скачал с сайта. Файл handler.php 26 строка.
Вы не ответили на мои вопросы про функцию exec и запрос через консоль.
0
vikont vikont 3 года назад #
smile Еще раз отвечаю, у меня на сервере нет установленного php exec и его установка пока под вопросом (долбят сервер каждый день)
Консольная команда whereis php срабатывает
0
IamB IamB 3 года назад #
vikont, вы в своём праве устанавливать правила безопасности на своём сервере. Для справки: exec штатно используется в движке.
Могу для вашего случая предложить вариант использования утилиты DeprecationDetector через консоль, ссылка на первоисточник
в тексте поста.

Еще от автора

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