天天看點

[composer-unused]掃描代碼找出沒有使用的依賴

作者:PHP武器庫

composer-unused是一個使用PHP開發的指令行工具,就像composer一樣,隻不過它的作用是掃描出代碼中,加載了依賴但沒有實際使用的庫。

使用分析

像我之前做過的一個項目,掃描結果如下圖:

[composer-unused]掃描代碼找出沒有使用的依賴

其中可以發現在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的腳本建立兩個腳本檔案。

[composer-unused]掃描代碼找出沒有使用的依賴

腳本檔案

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" "$@"           

設定環境變量

最後在系統中設定環境變量就行了。

[composer-unused]掃描代碼找出沒有使用的依賴
也可以使用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武器庫)所有,本站允許任何形式的轉載/引用文章,但必須同時注明出處。

繼續閱讀