phpstan / phpstan-deprecation-rules
PHPStan 检测已弃用类、方法、属性、常量和特性的规则。
1.2.1
2024-09-11 15:52 UTC
Requires
- php: ^7.2 || ^8.0
- phpstan/phpstan: ^1.12
Requires (Dev)
README
安装
要使用此扩展,请在 Composer 中要求它
composer require --dev phpstan/phpstan-deprecation-rules
如果您还安装了 phpstan/extension-installer,那么您就设置好了!
手动安装
如果您不想使用 phpstan/extension-installer
,请将 rules.neon 包含在您的项目 PHPStan 配置中
includes:
- vendor/phpstan/phpstan-deprecation-rules/rules.neon
弃用您不拥有的代码
此扩展在代码中使用标记为 @deprecated
的属性/函数/方法/类时发出弃用警告。
如果您不拥有想要被视为弃用的代码,请使用 PHPStan Stub Files 来声明供应商文件(如)的弃用
/** @deprecated */
class ThirdPartyClass {}
自定义弃用作用域
在同样弃用的代码中,不会报告弃用代码的使用
/** @deprecated */ function doFoo(): void { // not reported: anotherDeprecatedFunction(); }
如果您有 另一种标记故意调用弃用符号的方法 并且您不希望这些调用也被报告,您可以编写一个通过实现 DeprecatedScopeResolver
接口来编写的扩展。
例如,如果您使用 @group legacy
标记测试弃用代码的 PHPUnit 测试,您可以这样实现扩展
class GroupLegacyScopeResolver implements DeprecatedScopeResolver { public function isScopeDeprecated(Scope $scope): bool { $function = $scope->getFunction(); return $function !== null && $function->getDocComment() !== null && strpos($function->getDocComment(), '@group legacy') !== false; } }
并在您的 配置文件 中注册它
services: - class: GroupLegacyScopeResolver tags: - phpstan.deprecations.deprecatedScopeResolver
了解更多关于作用域 的信息,这是实现自定义 PHPStan 扩展的核心概念。