voku/phpstan-rules

为 phpstan/phpstan 提供附加规则。

3.5.0 2024-08-30 00:26 UTC

README

Build Status codecov.io Latest Stable Version License Donate to this project using Paypal Donate to this project using Patreon

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

如需专业支持,请联系

感谢

  • 感谢 GitHub(微软)为我们提供代码托管和良好的基础设施,包括问题管理等。
  • 感谢 IntelliJ,因为他们提供了最好的PHP IDE,并授予我PhpStorm的开源许可!
  • 感谢 Travis CI,它是最棒、最简单的持续集成工具!
  • 感谢 StyleCI 提供简单但强大的代码风格检查。
  • 感谢 PHPStanPsalm,它们提供了真正出色的静态分析工具,并帮助我们发现代码中的错误!