我遇到了一个问题,我需要一个项目中需要(=使用)的所有PEAR包的列表。是否有一种工具可以让我通过简单地阅读代码获得源代码中使用的所有PEAR包的列表?阅读所有已安装的软件包是不够的,我只需要那些真正使用的软件包。我需要这个,这样我就可以升级包,或者更好的——用可以通过composer安装的新库替换它们。
我遇到了PEAR包PHP_CompatInfo,但这并没有给我很好的结果,而且它也只列出了在插件本身中注册的包。
我将首先评估系统上安装了哪些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_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