Я столкнулся с проблемой, для которой мне нужен список всех пакетов PEAR, которые необходимы (= используются) в моем проекте.
Есть ли инструмент, который может дать мне список всех пакетов PEAR, используемых в моем исходном коде, просто читая код?
Прочитать все пакеты, которые установлены, недостаточно, мне действительно нужны только те, которые действительно используются.
Мне это нужно, чтобы я мог обновить пакеты или, что еще лучше, заменить их новыми библиотеками, устанавливаемыми через composer.
Я наткнулся на пакет PEAR PHP_CompatInfo но это не дает мне хороших результатов, а также перечисляет только пакеты, которые зарегистрированы в самом плагине.
Сначала я бы оценил, какие классы PEAR установлены в системе.
если вы считаете, что некоторые из библиотек, используемых в проекте, могут отсутствовать, вам необходимо загрузить локально весь репозиторий Pear
Для загрузки всех пакетов выполните:
pear config-set preferred_state alpha
pear remote-list | awk '{print $1}' > tmp-list ; tail -n +5 tmp-list > pear-list ; rm tmp-list
cat pear-list | xargs -n 1 pear install
Затем создать список всех классов:
cd /usr/share/php #( or different path to pear libs )
find . ! -path "*/tests/*" ! -path "*/examples/*" -name "*.php" -type f | xargs grep -Pho "^class ([a-zA-Z0-9_]+)" | sed -e "s/^class //" -e "" > all_pear.txt
Это создаст список всех классов Pear, сохраненных в all_pear.txt
Тогда я буду искать все ссылки в моем коде
cd my_project;
while read line; do find . -name "*.php" -type f | xargs grep -Pho $line; done < path/to/all_pear.txt | sort | uniq > used_classes.txt
Это создаст список всех классов PEAR, используемых в проекте, и сохранит список в файл. used_classes.txt
Других решений пока нет …