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