我正在为在 WordPress 中嗅探代码创建自定义规则集,为此我正在使用 PHP_CodeSniffer。
可以在此处找到自定义规则集:https ://github.com/infinum/coding-standards-wp 。
现在,当我尝试使用它们时,出现此错误
Fatal error: Uncaught exception 'PHP_CodeSniffer_Exception' with message 'Referenced sniff "WordPress" does not exist' in /wpcs/vendor/squizlabs/php_codesniffer/CodeSniffer.php:1167
Stack trace:
#0 /wpcs/vendor/squizlabs/php_codesniffer/CodeSniffer.php(780): PHP_CodeSniffer->_expandRulesetReference(Object(SimpleXMLElement), '/...', 0)
#1 /wpcs/vendor/squizlabs/php_codesniffer/CodeSniffer.php(578): PHP_CodeSniffer->processRuleset('/...')
#2 /wpcs/vendor/squizlabs/php_codesniffer/CodeSniffer/CLI.php(956): PHP_CodeSniffer->initStandard(Array, Array, Array)
#3 /wpcs/vendor/squizlabs/php_codesniffer/CodeSniffer/CLI.php(113): PHP_CodeSniffer_CLI->process()
#4 /wpcs/vendor/squizlabs/php_codesniffer/scripts/phpcs(25): PHP_CodeSniffer_CLI->runphpcs()
#5 {main}
thrown in /wpcs/vendor/squizlabs/php_codesniffer/CodeSniffer.php on line 1167
我不知道如何解决这个问题。我像其他人一样搜索并模拟了规则集,但我不知道为什么会发生这种情况。
编辑:
因此,当我在项目中使用 composer 安装标准并运行时
vendor/bin/phpcs --standard=vendor/infinum/coding-standards-wp wp-content/themes/twentyseventeen/functions.php
它有效,只是由于某种原因它没有拾取我的自定义嗅探。
当我将编码标准放在全局安装wpcs
的文件夹中时,我的 Sublime 控制台中出现上述错误。
编辑2:
好的,所以我已经wpcs
安装在我的主文件夹中。在那里我放置Infinum
了文件夹,里面有我的嗅探器。这仅在我删除时才有效
<config name="installed_paths" value="vendor/wp-coding-standards/wpcs"/>
从ruleset.xml
我的 Sublime 会捡起它,并且嗅探器(现在没有名称空间)可以正常工作,一切都很好。
当我使用 composer 在项目中安装它时,我再次收到上述错误。
全局加载时的区别(以便 Sublime 可以使用)文件夹结构如下所示
wpcs
-- Infinum
-- Sniffs
-- Classes
OnlyClassInFileSniff.php
-- Shortcodes
DisallowDoShortcodeSniff.php
composer.json
README.md
ruleset.xml
当我在我的项目中使用 composer 安装它时,它位于vendor
文件夹内
vendor
-- bin
-- composer
-- infinum
-- coding-standards-wp
-- Sniffs
-- Classes
OnlyClassInFileSniff.php
-- Shortcodes
DisallowDoShortcodeSniff.php
composer.json
README.md
ruleset.xml
-- squizlabs
-- wp-coding-standards
autoload.php
最终编辑
好的,所以我让它在本地工作。
它拾取自定义嗅探和所有。
但是现在如果我把它放在我的全局 wpcs 文件夹中,我就无法让它工作。好吧,我想我会在全球范围内重做这个,以便它可以与 Sublime 一起使用......