phpstan deprecation rules
2.0.1
要使用此擴展名,請在作曲家中需要它:
composer require --dev phpstan/phpstan-deprecation-rules
如果您還安裝了phpstan/Extension-installer,那麼您將全部設置!
如果您不想使用phpstan/extension-installer ,請在項目的phpstan config中包含規則。
includes:
- vendor/phpstan/phpstan-deprecation-rules/rules.neon
此擴展名在代碼上發出折舊警告,該警告使用屬性/函數/方法/類,這些屬性為@deprecated 。
如果您不擁有要被視為棄用的代碼,請使用phpstan存根文件來聲明供應商文件的棄用,例如:
/** @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擴展名的核心概念。