[composer-unused]扫描代码找出没有使用的依赖

2023-04-13 奥古斯宏

composer-unused是一个使用PHP开发的命令行工具,就像composer一样,只不过它的作用是扫描出代码中,加载了依赖但没有实际使用的库。

使用分析

像我之前做过的一个项目,扫描结果如下图:

其中可以发现在composer.json中定义使用了许多依赖:

使用中的包

以下是这些库的简介:

- topthink/framework:ThinkPHP 6 框架的基础库,提供了路由、请求、响应、文件操作等基础功能。

- topthink/think-orm:ThinkPHP 6 PDO 数据库操作库,提供了基础的 CRUD(增删改查)操作和数据分页功能。

版权声明:本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站允许任何形式的转载/引用文章,但必须同时注明出处。

- topthink/think-captcha:验证码库,提供了多种验证码类型和配置方式。

- ext-json:PHP 内建的 JSON 扩展,提供了 JSON 数据的编码和解码功能。

- guzzlehttp/guzzle:HTTP 客户端库,提供了 HTTP 协议的请求和响应功能。

- phpoffice/phpspreadsheet:电子表格处理库,提供了 Excel、CSV 等多种格式的读写功能。

- doctrine/annotations:注解库,提供了在 PHP 代码中使用注解的功能。

- topthink/think-filesystem:文件系统库,提供了在多种存储介质(本地磁盘、云存储等)上的文件操作功能。

版权声明:本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站允许任何形式的转载/引用文章,但必须同时注明出处。

- overtrue/flysystem-qiniu:七牛云存储文件系统适配器库,提供了在使用七牛云存储时的文件系统操作功能。

- overtrue/flysystem-cos:腾讯云 COS 文件系统适配器库,提供了在使用腾讯云 COS 存储时的文件系统操作功能。

- iidestiny/flysystem-oss:阿里云 OSS 文件系统适配器库,提供了在使用阿里云 OSS 存储时的文件系统操作功能。

- rubix/ml:机器学习库,提供了多种机器学习算法的实现。

- phplucidframe/console-table:控制台表格库,提供了在控制台中输出表格数据的功能。

- dompdf/dompdf:PDF 文件生成库,提供了在 PHP 代码中生成 PDF 文件的功能。

版权声明:本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站允许任何形式的转载/引用文章,但必须同时注明出处。

没有使用的宝

同时也有几个定义了依赖但代码中并没有使用的库。

✗ topthink/think-multi-app:多应用程序支持库,允许你在一个ThinkPHP应用中创建多个独立的应用。

✗ topthink/think-view:ThinkPHP视图模板库,提供了一种方便的方式管理和渲染模板。

✗ topthink/think-migration:ThinkPHP数据库迁移库,允许你通过编程方式管理数据库迁移。

✗ jonnyw/php-phantomjs:PhantomJS的PHP封装,允许你通过PHP代码控制PhantomJS浏览器并获取其渲染结果。

✗ mnvx/lowrapper:libreoffice的命令行封装库,可以用于office文件的格式转换。

版权声明:本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站允许任何形式的转载/引用文章,但必须同时注明出处。

✗ mikehaertl/phpwkhtmltopdf:wkhtmltopdf编译版的PHP封装,允许你通过PHP代码将HTML转换为PDF。

其实这里是有一点小问题的,前三个关于ThinkPHP的包实际上是正在使用的,但是在我的主要代码中并没有直接引入并使用,所以被定义为未使用。这里可能是扫描机制的问题,也或许是ThinkPHP对于这几个的扩展处理的不够优雅。

分析

在做这个项目时,我在找一个好的pdf导出方案,所以你可以看到,上面一共有4个能够实现导出pdf的库,但最终只保留了dompdf这个库。经过分析,此时可以很方便的统计出到底哪几个包没有用。

安装

它实际上就是一个phar包,就像composer一样。但是他没有提供windows下的安装包,所以只能以最原始的配置方式:

下载

下载phar包放到一个文件夹中,然后仿照composer的脚本新建两个脚本文件。

版权声明:本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站允许任何形式的转载/引用文章,但必须同时注明出处。

脚本文件

bat脚本

@echo OFF
:: in case DelayedExpansion is on and a path contains ! 
setlocal DISABLEDELAYEDEXPANSION
php "%~dp0composer-unused.phar" %*

无扩展脚本

#!/bin/sh

dir=$(cd "${0%[/\\]*}" > /dev/null; pwd)

if [ -d /proc/cygdrive ]; then
    case $(which php) in
        $(readlink -n /proc/cygdrive)/*)
            # We are in Cygwin using Windows php, so the path must be translated
            dir=$(cygpath -m "$dir");
            ;;
    esac
fi

php "${dir}/composer-unused.phar" "$@"

设置环境变量

最后在系统中设置环境变量就行了。

也可以使用PHIVE安装,PHP的phar管理器,以后为大家详细介绍

使用方式

基本的使用方式

最简单的使用方式,就是进入项目的根目录(composer初始化的根目录),直接执行:

composer-unused

也可以添加一些参数:

版权声明:本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站允许任何形式的转载/引用文章,但必须同时注明出处。

composer-unused \
    --excludeDir=bin \
    --excludeDir=config \
    --excludePackage=symfony/assets \
    --excludePackage=symfony/console

比如排除某些目录或依赖。

总结

以上就是composer-unused的基本情况,对于一些依赖很多的大型项目,还是很有用的。同样对于我这种喜欢安装测试各种依赖包来解决一些问题的人,也很有用。

最近浏览
IP用户:40.77.*.*
1 天前 BingBot
IP用户:220.181.*.*
3 天前 Baidu Spider
IP用户:116.179.*.*
3 天前 Baidu Spider
IP用户:117.132.*.*
3 天前 Chrome Windows 10
IP用户:52.167.*.*
4 天前 BingBot
IP用户:66.249.*.*
4 天前 Googlebot
IP用户:39.173.*.*
4 天前 Generic Bot
IP用户:54.36.*.*
5 天前 aHrefs Bot
IP用户:101.67.*.*
5 天前 Generic Bot
IP用户:52.167.*.*
6 天前 BingBot
IP用户:34.64.*.*
7 天前 Googlebot
IP用户:74.125.*.*
8 天前 Googlebot
累计浏览次数:697
评论
点击登录
phpreturn,PHP武器库,专注PHP领域的项目和资讯,收录和介绍PHP相关项目。
最近浏览 点击登录
累计浏览次数:103963
一周浏览次数:2415
今日浏览次数:38

本站所有权利归 phpreturn.com 所有

举报/反馈/投稿邮箱:phpreturn@ulthon.com

鲁ICP备19027671号-2