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

Php 查找项目中所需的所有PEAR包(源代码),php,composer-php,pear,usage-statistics,Php,Composer Php,Pear,Usage Statistics,我遇到了一个问题,我需要在我的项目中需要(使用)的所有PEAR包的列表。 有没有一个工具可以让我通过简单地阅读代码,获得源代码中使用的所有PEAR包的列表? 阅读所有安装的软件包是不够的,我真的需要的只是那些真正使用。 我需要这个,这样我可以升级软件包,或者更好——用可通过composer安装的新库替换它们 我遇到了PEAR包,但这并没有给我好的结果,它也只列出了插件本身注册的包。我首先要评估系统上安装了哪些PEAR类 如果您认为项目中使用的某些LIB可能丢失,则需要在本地下载整个Pear存储库

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


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

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

如果您认为项目中使用的某些LIB可能丢失,则需要在本地下载整个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
这将创建一个保存到
all\u 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
cdmyu项目;
读行时;一定要找到-名称“*.php”-输入f | xargs grep-Pho$行;完成used_classes.txt

这将创建项目中使用的所有PEAR类的列表,并将列表保存到文件
used_classes.txt

您运行的是什么版本的PHP?我运行的是PHP5.3。但是如果它有帮助的话,我可以升级到任何5.x版本,这看起来是一个不错的解决方案,但是-你需要先下载所有的pear库+我仍然得到一些奇怪的包,比如“C”或“abc”,“d”,我不知道这可能是“a”“b”类来自测试目录,我更新了答案并排除了测试和示例目录。还添加了如何下载所有pear类的基本说明。。(仍在下载过程中,一些libs显示缺少一些PHP扩展),因此可能应该有一种更好的方法来下载所有包而不进行依赖性检查。我基本上不太喜欢这样的想法,即我必须安装所有pear包来搜索它们,从而污染我的系统。但我想在我的情况下,我不需要这样做,因为我的应用程序可以工作,所以我假设我需要的所有库都已经安装好了。我只想过滤掉那些我不需要的