PHP 升级:使用 PHPStan 阻止回归
照片由 ron mcclenny 在 unsplash 上拍摄
通常,当人们想到 phpstan 时,他们通常会想到改进类型覆盖率。这实际上只是 phpstan 能力的一小部分。在本文中,我们将学习如何使用它来停止升级回归。
什么是升级回归?
升级回归是指您希望删除应用程序中的某些功能。这可能是您的应用程序中的代码或您已安装的依赖项中的代码。
在尝试执行升级时,我们通常无法一次性完成所有操作。相反,我们必须进行一些小的增量改变。同样,当我们这样做时,我们也不希望其他开发人员继续使用已弃用的方法和属性。在这种情况下,那些新方法调用等是您升级应用程序进度的倒退。
安装 phpstan 和弃用规则扩展
要开始解决升级回归问题,第一步是安装 phpstan(如果尚未安装)。您可以通过 composer 安装它:
composer require --dev phpstan/phpstan
接下来,您需要添加弃用规则扩展,该扩展专门帮助跟踪代码库中已弃用的方法、属性和类的使用情况:
composer require --dev phpstan/phpstan-deprecation-rules
安装后,您可以将 phpstan 配置为使用弃用规则,方法是将其添加到 phpstan.neon 配置文件中:
includes: - vendor/phpstan/phpstan-deprecation-rules/rules.neon
使用此设置运行 phpstan 现在将标记代码库中任何已弃用的方法、属性或类。这是防止升级回归的重要步骤,因为在使用已弃用的代码时您会收到通知。然后,您可以重构这些实例,以确保您的应用程序转向更新的、受支持的功能。
使用“不允许的呼叫”扩展功能更进一步
虽然弃用规则扩展可捕获已弃用的代码,但 disallowed calls 扩展提供了一种方法来阻止特定函数调用、方法调用,甚至您不再希望在代码库中允许的整个类。这对于对代码进行更细粒度的控制特别有用,例如没有弃用警告的代码。
composer require --dev spaze/phpstan-disallowed-calls
安装后,您需要在 phpstan.neon 文件中对其进行配置。以下是如何禁止某些方法调用或函数的示例:
includes: - vendor/phpstan/phpstan-deprecation-rules/rules.neon # add the extension - vendor/spaze/phpstan-disallowed-calls/extension.neon parameters: # You can see more example at https://github.com/spaze/phpstan-disallowed-calls/blob/main/docs/custom-rules.md disallowedMethodCalls: - method: 'PotentiallyDangerous\Logger::log()' # `function` is an alias of `method` message: 'use our own logger instead' errorTip: 'see https://our-docs.example/logging on how logging should be used'Begin writing your own rules disallowedFunctionCalls: - function: 'var_dump()' # `method` is an alias of `function` message: 'use logger instead'
这个扩展非常全面,这意味着您将能够涵盖大多数场景。当然,可能在某些情况下不起作用,为此最好的办法就是开始学习编写自己的规则。
这是我们将在另一篇文章中讨论的内容。
结论
使用 phpstan 捕获升级回归是一种使升级过程变得更容易的明智方法,尤其是在大型开发团队中。将 phpstan 应用于您的持续集成设置
以上就是PHP 升级:使用 PHPStan 阻止回归的详细内容,更多请关注其它相关文章!