voku / phpstan-rules
为 phpstan/phpstan 提供附加规则。
3.5.0
2024-08-30 00:26 UTC
Requires
- php: ^7.2 || ^8.0
- phpstan/phpstan: ^1.9.0
Requires (Dev)
- phpstan/phpstan-phpunit: ^1.1.0
- phpunit/phpunit: ~7.0 || ~9.0
This package is auto-updated.
Last update: 2024-08-30 00:30:07 UTC
README
phpstan-rules
为 phpstan/phpstan
提供附加规则。
安装
运行
$ composer require --dev voku/phpstan-rules
使用
本库提供的所有规则(和使用)都包含在 rules.neon
中。
当您使用 phpstan/extension-installer
时,rules.neon
将自动包含。
否则,您需要将 rules.neon
包含在您的 phpstan.neon
中。
includes: - vendor/voku/phpstan-rules/rules.neon
规则
IfConditionHelper
此辅助器被不同的 "条件" 规则使用:if - 和 - 或 - 非 - 三元
💡 我们使用这个 "黑客"(辅助器)来运行所有类型条件的检查。
- 双重否定字符串条件。例如
(string)$foo != ''
与(string)$foo
相同 - 双重否定整数条件。例如
(int)$foo != 0
与(int)$foo
相同 - 双重否定布尔条件。例如
(bool)$foo != false
与(bool)$foo
相同 - 双重否定空值条件。如果需要,请使用 "!=="。
- 检查 0 与 '' 的条件,行为在 PHP 8 中已更改
- 检查可能的不合理比较。例如
0 == '0foo'
,行为在 PHP 8 中已更改 - 检查不合理比较。例如
0 === '0'
或false && true
- 检查非空字符串永远不会为空
- 检查非空字符串始终为空
- 检查非空数组永远不会为空
- 不要比较对象与其他类型
- 不要为具有 "__toString()" 的对象使用魔法字符串连接
- 不允许赋值。例如
if ($a = 0)
(请参阅 "checkForAssignments") - 不允许 Yoda 条件。例如
ìf (0 == $a)
(请参阅 "checkYodaConditions")
配置
如果您想配置不能直接用于条件的类/子类的列表
例如。
- ok:
if ($emailValueObject->isValid())
- error:
if ($emailValueObject != '')
parameters: voku: classesNotInIfConditions: [ AbstractValueObject ]
如果您想在 "if" 条件中检查赋值,可以使用此功能。
parameters: voku: checkForAssignments: true
如果您想检查 Yoda 条件,可以使用此功能。
parameters: voku: checkYodaConditions: true
ExtendedBinaryOpRule
此规则将检查 "+"、"*"、"/"、"-" 等运算符(运算符)和 "."(连接)的兼容类型。
它包含在默认的 rules.neon
中,因此您无需手动添加。
DisallowedCallMethodOnNull
此代码是从 [phpstan/phpstan-src
] 复制的,我使用它来防止在不在级别 8(其中所有类型的 "NULL" 检查都默认由默认规则覆盖)的情况下出现 "调用空值成员函数" 错误。
例如。
rules: - voku\PHPStan\Rules\DisallowedCallMethodOnNullRule
支持
有关支持和捐款,请访问 GitHub | 问题 | PayPal | Patreon。
有关状态更新和发布公告,请访问 发布 | Twitter | Patreon。
如需专业支持,请联系 我。