假设我上了这些课:
Old_ClassNew_Class如果存在->something(new Old_Class())、Old_Class::staticMethod()或$oldClass->methodCall(),我希望有一个代码嗅探来警告“发现了Old_Class用法,建议使用New_Class”。
我找到了这个嗅探Generic.PHP.ForbiddenFunctions,但它似乎只捕捉到内置的php函数is_array, is_null, etc。
我需要为这个写一个自定义的嗅觉吗?
如果是这样的话,我应该将什么token添加到register()函数中去了解呢?
发布于 2020-02-03 20:57:20
我不能用内置的。我不得不用T_STRING写一个。
public function register()
{
return [
T_STRING,
];
}
public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr)
{
$tokens = $phpcsFile->getTokens();
if ($tokens[$stackPtr]['content'] === 'Old_Class') {
$error = 'Old_Class usage found, consider using New_Class instead.';
$phpcsFile->addWarning($error, $stackPtr);
}
}发布于 2022-11-11 16:53:31
我知道这是一个很老的问题,但我知道有两个可能的解决方案:
@deprecated注释标记一个类,我从个人经验中知道,Psalm会将它标记为DeprecatedClass问题,如果不能一次性修复它们,您可以将它们添加到基线中,这将抑制问题,但要跟踪它,这样您仍然可以在持续集成中使用Psalm,而不会中断现有问题。我相信PHPStan也有类似的功能。https://stackoverflow.com/questions/60045686
复制相似问题