如何在嗅探中创建多个 USE 语句
How to create multiple USE statements in sniff
我正在为 PHP_CodeSniffer 3.x 嗅探。例如,class 声明 class NoInlineFullyQualifiedClassNameUnitTestInc extends \PSR2R\Base\AbstractBase
应拆分为 uses
和 class AbstractBase
。嗅探检测到方法签名的类似问题。
我认为问题是我在同一行生成并插入多个 use
语句(即,相同的标记),但是在单独的 fixer->beginChangeset()
... fixer->endChangeset()
序列。修复程序将对同一令牌的多组更改视为冲突,事情变得混乱(和错误)。
GitHub 问题在这里:https://github.com/php-fig-rectified/psr2r-sniffer/issues/9
有没有人知道如何为最新的 3.x CodeSniffer 编写自定义嗅探器?
问题是多个嗅探器(修正器)变更集编辑同一个标记。通过收集 USE 语句列表并将它们插入到 Sniff 处理的末尾,我能够让 Sniff 工作。
我通过从最后一个标记向后搜索以找到已注册标记列表的第一个标记来确定处理结束。
您也可以使用SlevomatCodingStandard\Sniffs\Namespaces\ReferenceUsedNamesOnlySniff
变成这个
进入这个
如何使用?
最好是像这样与 EasyCodingStandard 一起使用:
# easy-coding-standard.neon
checkers:
- SlevomatCodingStandard\Sniffs\Namespaces\ReferenceUsedNamesOnlySniff
安装它:
composer require --dev symplify\easy-coding-standard
运行它:
vendor/bin/ecs check src
修复它:
vendor/bin/ecs check src --fix
尽情享受,让我知道它是如何为您服务的。
如果有什么麻烦,就create an issue here。我很乐意尽可能地改进这个工具。
我正在为 PHP_CodeSniffer 3.x 嗅探。例如,class 声明 class NoInlineFullyQualifiedClassNameUnitTestInc extends \PSR2R\Base\AbstractBase
应拆分为 uses
和 class AbstractBase
。嗅探检测到方法签名的类似问题。
我认为问题是我在同一行生成并插入多个 use
语句(即,相同的标记),但是在单独的 fixer->beginChangeset()
... fixer->endChangeset()
序列。修复程序将对同一令牌的多组更改视为冲突,事情变得混乱(和错误)。
GitHub 问题在这里:https://github.com/php-fig-rectified/psr2r-sniffer/issues/9
有没有人知道如何为最新的 3.x CodeSniffer 编写自定义嗅探器?
问题是多个嗅探器(修正器)变更集编辑同一个标记。通过收集 USE 语句列表并将它们插入到 Sniff 处理的末尾,我能够让 Sniff 工作。
我通过从最后一个标记向后搜索以找到已注册标记列表的第一个标记来确定处理结束。
您也可以使用SlevomatCodingStandard\Sniffs\Namespaces\ReferenceUsedNamesOnlySniff
变成这个
进入这个
如何使用?
最好是像这样与 EasyCodingStandard 一起使用:
# easy-coding-standard.neon
checkers:
- SlevomatCodingStandard\Sniffs\Namespaces\ReferenceUsedNamesOnlySniff
安装它:
composer require --dev symplify\easy-coding-standard
运行它:
vendor/bin/ecs check src
修复它:
vendor/bin/ecs check src --fix
尽情享受,让我知道它是如何为您服务的。
如果有什么麻烦,就create an issue here。我很乐意尽可能地改进这个工具。