2.3. 规则级别
规则级别#
如果你想使用 PHPStan 但你的代码库没有跟上强类型编码和 PHPStan 严格检查的速度,你可以通过传递 -l|--level
给 analyse
命令从 10 个级别(0 是最宽松的,9 是最严格的)中进行选择。
vendor/bin/phpstan analyse -l 6 src tests
默认级别是 0。指定配置文件后,你还必须指定要运行的级别。
这个特性使你可以逐步采用 PHPStan。 你可以用一个较宽松的级别开始 PHPStan,然后当你喜欢它时使用更严格的级别。
基线
如果不想先修复所有的报错,但又想运行更严格的级别,可以查看一个叫 基线 的特性。
你也可以使用 --level max
运行最严格的级别。 这将确保您在升级到新版本的 PHPStan 时始终使用最高级别。 ^levelmax
以下是每个级别检查内容的简要概述。级别是累计的。例如,运行级别 5 也会为你完成 0-4 的所有检查。
- 基本检查,未知类、未知函数、在
$this
调用的未知方法、传递给这些方法 (method) 和函数 (function) 的参数数量错误和始终未定义的变量。 - 可能未定义的变量、 在用了
__call
和__get
的类的未知魔术方法和属性。 - 所有表达式的未知方法(不仅仅在
$this
),验证 PHPDocs 。 - 返回类型,分配给属性 (property) 的类型。
- 基本的死代码 (dead code) 检查 —— 总是 false 的
instanceof
检查和其他类型检查,死的else
分支,在return
之后不可访问的代码等等。 - 检查传递给方法和函数的参数类型。
- 报告缺失的类型提示。
- 报告部分错误的联合类型 —— 如果你调用的方法只存在于联合类型中的某些类型上,级别 7 会开始报告;其他可能错的场景。
- 报告调用方法和访问可能为 null 的属性。
- 严格控制
mixed
类型 —— 您可以对其进行的唯一操作是将其传递给另一个mixed
。
推荐文章: