composer-unused是一個使用PHP開發的指令行工具,就像composer一樣,隻不過它的作用是掃描出代碼中,加載了依賴但沒有實際使用的庫。
使用分析
像我之前做過的一個項目,掃描結果如下圖:
其中可以發現在composer.json中定義使用了許多依賴:
使用中的包
以下是這些庫的簡介:
- topthink/framework:ThinkPHP 6 架構的基礎庫,提供了路由、請求、響應、檔案操作等基礎功能。
- topthink/think-orm:ThinkPHP 6 PDO 資料庫操作庫,提供了基礎的 CRUD(增删改查)操作和資料分頁功能。
- topthink/think-captcha:驗證碼庫,提供了多種驗證碼類型和配置方式。
- ext-json:PHP 内建的 JSON 擴充,提供了 JSON 資料的編碼和解碼功能。
- guzzlehttp/guzzle:HTTP 用戶端庫,提供了 HTTP 協定的請求和響應功能。
- phpoffice/phpspreadsheet:電子表格處理庫,提供了 Excel、CSV 等多種格式的讀寫功能。
- doctrine/annotations:注解庫,提供了在 PHP 代碼中使用注解的功能。
- topthink/think-filesystem:檔案系統庫,提供了在多種存儲媒體(本地磁盤、雲存儲等)上的檔案操作功能。
- overtrue/flysystem-qiniu:七牛雲存儲檔案系統擴充卡庫,提供了在使用七牛雲存儲時的檔案系統操作功能。
- overtrue/flysystem-cos:騰訊雲 COS 檔案系統擴充卡庫,提供了在使用騰訊雲 COS 存儲時的檔案系統操作功能。
- iidestiny/flysystem-oss:阿裡雲 OSS 檔案系統擴充卡庫,提供了在使用阿裡雲 OSS 存儲時的檔案系統操作功能。
- rubix/ml:機器學習庫,提供了多種機器學習算法的實作。
- phplucidframe/console-table:控制台表格庫,提供了在控制台中輸出表格資料的功能。
- dompdf/dompdf:PDF 檔案生成庫,提供了在 PHP 代碼中生成 PDF 檔案的功能。
沒有使用的寶
同時也有幾個定義了依賴但代碼中并沒有使用的庫。
✗ topthink/think-multi-app:多應用程式支援庫,允許你在一個ThinkPHP應用中建立多個獨立的應用。
✗ topthink/think-view:ThinkPHP視圖模闆庫,提供了一種友善的方式管理和渲染模闆。
✗ topthink/think-migration:ThinkPHP資料庫遷移庫,允許你通過程式設計方式管理資料庫遷移。
✗ jonnyw/php-phantomjs:PhantomJS的PHP封裝,允許你通過PHP代碼控制PhantomJS浏覽器并擷取其渲染結果。
✗ mnvx/lowrapper:libreoffice的指令行封裝庫,可以用于office檔案的格式轉換。
✗ mikehaertl/phpwkhtmltopdf:wkhtmltopdf編譯版的PHP封裝,允許你通過PHP代碼将HTML轉換為PDF。
其實這裡是有一點小問題的,前三個關于ThinkPHP的包實際上是正在使用的,但是在我的主要代碼中并沒有直接引入并使用,是以被定義為未使用。這裡可能是掃描機制的問題,也或許是ThinkPHP對于這幾個的擴充處理的不夠優雅。
分析
在做這個項目時,我在找一個好的pdf導出方案,是以你可以看到,上面一共有4個能夠實作導出pdf的庫,但最終隻保留了dompdf這個庫。經過分析,此時可以很友善的統計出到底哪幾個包沒有用。
安裝
它實際上就是一個phar包,就像composer一樣。但是他沒有提供windows下的安裝包,是以隻能以最原始的配置方式:
下載下傳
下載下傳phar包放到一個檔案夾中,然後仿照composer的腳本建立兩個腳本檔案。
腳本檔案
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
也可以添加一些參數:
composer-unused \
--excludeDir=bin \
--excludeDir=config \
--excludePackage=symfony/assets \
--excludePackage=symfony/console
比如排除某些目錄或依賴。
總結
以上就是composer-unused的基本情況,對于一些依賴很多的大型項目,還是很有用的。同樣對于我這種喜歡安裝測試各種依賴包來解決一些問題的人,也很有用。
原文标題:[composer-unused]掃描代碼找出沒有使用的依賴
原文位址:https://phpreturn.com/index/a643762d81fc54.html
原文平台:PHP武器庫
版權聲明:本文由phpreturn.com(PHP武器庫官網)原創和首發,所有權利歸phpreturn(PHP武器庫)所有,本站允許任何形式的轉載/引用文章,但必須同時注明出處。