composer analyse —— 静态分析工具 PHPStan 完全指南

composer analyse —— 静态分析工具 PHPStan 完全指南 一、PHPStan 是什么? PHPStan 是 PHP 生态中最广泛采用的静态分析工具,它可以在不运行代码的情况下,通过分析代码的语法、类型和调用链,提前发现潜在的逻辑错误和 Bug。是现代 PHP 项目的标配工具之一。 核心价值 PHPStan 的核心价值在于在代码运行前发现问题。与单元测试不同,单元测试需要编写测试用例并实际执行代码,而静态分析则通过扫描源码即可完成检查,成本更低、覆盖更广。 例如,假设有以下代码: public function getUser(int $id): User { return User::find($id); } User::find() 在未找到记录时可能返回 null,但方法声明只返回 User 类型。PHPStan 会立即报告: Method getUser() should return User but returns User|null. 这种类型不匹配问题如果不经静态分析,可能要等到生产环境运行时才会暴露。 PHPStan 的检查级别 PHPStan 采用0–9 共 10 个检查级别,级别越高检查越严格: 级别 检查内容 0 基础检查:未定义的类、函数、方法调用 1 未定义的变量、未知的魔术方法 2 返回值类型、参数类型(基于 PHPDoc) 3 死代码检测、恒真/恒假条件 4 方法调用时的参数类型检查 5 强制类型提示(missing typehints) 6+ 并集类型严格检查(逐步增加严格度) 渐进式采用的策略:对于已有项目,建议从 level 0 或 level 1 开始,逐步提升。每次提升级别时,如果错误过多,可先生成基线文件(baseline)将现有问题暂时忽略,之后只关注新增问题。...

2024年08月09日 · 3 min · Leanku

composer cs-fix —— 代码风格修复工具 PHP-CS-Fixer

composer cs-check —— 代码风格检查与修复工具 PHP_CodeSniffer 在现代 PHP 项目开发中,代码风格的一致性是保障团队协作效率和代码可维护性的重要基石。与自动修复的 PHP-CS-Fixer 不同,PHP_CodeSniffer 作为 PHP 领域历史最悠久的代码风格工具,凭借其检查与修复功能分离的设计和强大的可扩展性,在代码审查和 CI/CD 流程中扮演着"检察官"的角色。 1. 什么是 PHP_CodeSniffer? PHP_CodeSniffer 是一套用于检测和修复 PHP、JavaScript 和 CSS 文件编码标准违规问题的工具集。它的核心设计理念与 PHP-CS-Fixer 不同,将检查与修复拆分为两个独立命令,分工极其清晰: phpcs (PHP Code Sniffer):负责扫描代码,检测违反编码标准的问题并报告错误或警告(可设置报错等级)。它本身不会修改任何代码,只负责指出问题。 phpcbf (PHP Code Beautifier and Fixer):负责自动修正 phpcs 发现的可修复问题。例如 PSR-2 规范要求每个 PHP 文件结尾需有一行空行,运行 phpcbf 后就能自动补上。 PHP_CodeSniffer 在 Packagist 上的下载量位居前列,是 PHP 领域最成熟、生态最完善的代码风格工具之一。 2. 适用场景 场景 说明 代码审查(Code Review) 在 Pull Request 中运行 phpcs,提供详细的违规报告,作为评审依据 CI/CD 质量门禁 作为持续集成流程的检查环节,风格不合格则阻止合并 团队规范统一 在遗留项目中快速建立风格基线,不直接修改代码,风险可控 IDE 实时检查 在 PhpStorm 等 IDE 中集成,编码时实时高亮风格问题 PHP 版本兼容性检查 配合 PHPCompatibility 规则集,检测代码是否兼容目标 PHP 版本 最佳实践:在 CI 流程中使用 phpcs 进行只读检查,在本地开发中使用 phpcbf 进行自动修复。这种"检查与修复分离"的设计让 PHP_CodeSniffer 在自动化质量保障场景中比 PHP-CS-Fixer 更具优势。...

2024年08月08日 · 4 min · Leanku