查找项目中需要的所有 PEAR 包(源代码)

Find all PEAR packages needed in project (source code)

我遇到了一个问题,我需要一个项目中需要(=使用)的所有 PEAR 包的列表。 有没有一种工具可以让我通过简单地阅读代码来获得我的源代码中使用的所有 PEAR 包的列表? 阅读所有已安装的软件包是不够的,我真的只需要真正使用的那些。 我需要这个,这样我就可以升级软件包,或者更好 - 用可通过 composer 安装的新库替换它们。

我遇到了 PEAR 包 PHP_CompatInfo 但这并没有给我很好的结果,它也只列出了在插件本身中注册的包。

我会先评估系统上安装了哪些 PEAR 类

如果您认为项目中使用的某些库可能丢失,您需要在本地下载整个 Pear 存储库

下载所有包执行:

pear config-set preferred_state alpha
pear remote-list | awk '{print }' > 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

这将创建一个列表,其中包含保存到 all_pear.txt

中的所有 Pear 类

然后我会在我的代码中搜索所有引用

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