phpstan/phpstan-deprecation-rules

PHPStan 检测已弃用类、方法、属性、常量和特性的规则。

安装量: 39,590,212

依赖者: 4,287

建议者: 7

安全性: 0

星标: 363

关注者: 5

分支: 18

开放问题: 17

类型:phpstan-extension

1.2.1 2024-09-11 15:52 UTC

README

Build Latest Stable Version License

安装

要使用此扩展,请在 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 扩展的核心概念。