十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

composer-dependency-analyser如何「吃自己的狗粮」?快速依赖分析工具的自分析机制与贡献指南深度剖析

composer-dependency-analyser如何「吃自己的狗粮」?快速依赖分析工具的自分析机制与贡献指南深度剖析 composer-dependency-analyser如何「吃自己的狗粮」快速依赖分析工具的自分析机制与贡献指南深度剖析【免费下载链接】composer-dependency-analyser Fast detection of composer dependency issues (unused dependencies, shadow dependencies, misplaced dependencies)项目地址: https://gitcode.com/gh_mirrors/co/composer-dependency-analysercomposer-dependency-analyserComposer 依赖分析器是一个零 Composer 依赖的 PHP 静态分析工具能在 2 秒内扫描 15000 个文件快速检测项目中的未使用依赖unused dependency、影子依赖shadow dependency和错放依赖misplaced dependency。更值得新手学习的是这个项目本身就是依赖分析的最佳实践——它用一套完整的自分析dogfooding机制检查自己的依赖健康度并以此标准向贡献者保证代码质量。本文带你拆解它的自分析机制与贡献指南。什么是吃自己的狗粮Dogfooding吃自己的狗粮指项目使用自己开发的工具来开发和维护自身。对一个依赖检测工具来说这是最有力的质量保证自证可靠如果工具连自己的 composer.json 都分析不了用户凭什么信任它持续验证每次提交代码都会触发自分析依赖问题无法悄悄溜进主干。配置示例自分析配置文件本身就是给用户的最佳配置范例。自分析机制一个配置文件的四层设计第 1 层根目录自分析配置项目根目录的 composer-dependency-analyser.php 就是工具分析自己时加载的配置内容不到 30 行却演示了核心 APIaddPathToScan(__FILE__, true)把配置文件自身也当作开发路径扫描因为它是可执行代码addPathToScan(bin, false)把入口脚本目录作为生产路径扫描addPathToExclude(tests/data)排除测试数据避免误报ignoreErrorsOnExtensionsAndPaths(...)精确忽略ext-dom、ext-libxml在 JunitFormatter 中的可选用法代码里有extension_loaded()保护这种按包 按路径 按错误类型的组合忽略方式正是 README 推荐的标准姿势读者可以直接照搬到自己的项目。第 2 层composer scripts 中的 check:self在 composer.json 的 scripts 里一条composer check命令串联了 8 项检查其中就有一条check:selfcheck:self: bin/composer-dependency-analyser它直接运行工具本体对本项目执行完整的依赖分析。一旦有人往 composer.json 添加了一个实际没用到的依赖这条检查会立刻失败——依赖问题在 CI 阶段就被拦截。第 3 层零依赖的自举入口入口脚本 bin/composer-dependency-analyser 内置了一个spl_autoload_register自动加载器直接按 PSR-4 规则从src/目录加载自己的类完全不依赖 composer 生成的 autoload。这意味着工具自己就是零外部依赖的活广告与其宣传口径完全一致即使composer install不完整自分析依然能跑起来核心逻辑集中在 Analyser.php 与 UsedSymbolExtractor.phpCLI 参数解析独立在 Cli.php还支持拼写纠错建议。第 4 层用核心类约束覆盖率coverage-guard.php 是测试覆盖率的看门狗它直接引用了Analyser、Cli、Initializer、UsedSymbolExtractor四个核心类并给它们设定了80% 的强制覆盖率普通类 60%。换句话说核心代码没被测透composer check:coverage就不通过。更极致的 Dogfooding把工具装进别人的项目里测试自分析只是小圈子这个项目的 e2e 测试玩得更彻底。scripts/refresh-e2e.php 会分页抓取 Packagist 上所有以require-dev依赖本工具、且月下载量超过 2000 的真实项目过滤掉已废弃的包后生成 CI 测试矩阵。于是 CI 会把最新版工具安装进 phpstan、deptrac 等真实生产级项目里跑一遍分析。这相当于工具每天都在全 PHP 生态的实战考场上考试任何 API 不兼容、误报回归都会立刻暴露。贡献指南5 步成为合格贡献者官方 README 的 Contributing 章节只有三行却浓缩了全部要求# 1. 克隆仓库 git clone https://gitcode.com/gh_mirrors/co/composer-dependency-analyser # 2. 安装开发依赖 composer install # 3. 自动修复代码风格 composer fix:cs # 4. 一键跑完全套检查含自分析 composer check # 5. 编写测试所有新功能必须被测试覆盖 composer check:tests一键运行全套检查composer check 命令清单composer check依次执行 8 个子命令新手可以对照 composer.json 逐一理解子命令作用check:composercomposer.json 格式规范 严格校验check:ecEditorConfig 一致性检查check:csPHP CodeSniffer 代码风格可用fix:cs自动修复check:typesPHPStan 最高级别类型检查配置见 phpstan.neon.dist还启用了死代码检测check:coverage覆盖率强制门槛check:self本工具自分析check:collisions类名/函数名冲突检测collision-detector.jsoncheck:scripts对 scripts 目录单独做 PHPStan 检查CI 质量防线测试矩阵有多严.github/workflows/checks.yml 定义了双重防线checks 任务每个 PR 都在 PHP 8.5 上运行完整composer checktests 矩阵PHP 8.1 → 8.5 × prefer-lowest / prefer-stable × Ubuntu / Windows共 20 种组合确保最低版本依赖和最严环境都通过。这解释了为什么它敢宣称兼容 PHP 7.2 - 8.5 且零 Composer 依赖——每一条宣传都有 CI 数据背书。小结从新手到贡献者的最短路径先跑composer install后直接vendor/bin/composer-dependency-analyser分析自己的项目零配置即可上手再看把根目录 composer-dependency-analyser.php 当活文档学习ignoreErrors*、addPathToScan等配置 API最后改提交前确保composer check全绿包含自分析并为新功能补上测试。一个分析工具最可信的推荐语不是广告词而是我们自己每天都在用它。这正是 composer-dependency-analyser 值得借鉴的地方。【免费下载链接】composer-dependency-analyser Fast detection of composer dependency issues (unused dependencies, shadow dependencies, misplaced dependencies)项目地址: https://gitcode.com/gh_mirrors/co/composer-dependency-analyser创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表