我正在使用PHPStorm处理WordPress项目。为了美化我的代码,我为WP下载了以下CodeSniffer规则,并将它们放在我的项目文件夹的构建目录中:https://github.com/mrchrisadams/WordPress-Coding-Standards
现在当我将PHPStorm设置为使用ruleset.xml时,我收到以下错误:
PHP Code Sniffer
phpcs: PHP Fatal error: Cannot redeclare class WordPress_Sniffs_Strings_DoubleQuoteUsageSniff in /var/www/projectname/build/CodeSniffer/Sniffs/Strings/DoubleQuoteUsageSniff.php on line 31
PHP Stack trace:
PHP 1. {main}() /usr/bin/phpcs:0
PHP 2. PHP_CodeSniffer_CLI->process() /usr/bin/phpcs:37
PHP 3. PHP_CodeSniffer->process() /usr/share/php/PHP/CodeSniffer/CLI.php:561
PHP 4. PHP_CodeSniffer->populateTokenListeners() /usr/share/phpPHP/CodeSniffer.php:458
PHP 5. PHP_CodeSniffer::autoload() /usr/share/php/PHP/CodeSniffer.php:0
我还在基于Drupal拥有自己的ruleset.xml的另一个项目(不是同时)上工作 - 它没有任何问题。
有谁知道这种问题?
答案 0 :(得分:1)
此错误与PhpStorm无关,并且由PHP_CodeSniffer本身生成。
当您的Sniff类未正确命名时出现。他们必须严格遵循目录结构和Sniff文件。
如果您的班级名为WordPress_Sniffs_Strings_DoubleQuoteUsageSniff
它应该位于: /Standards/WordPress/Sniffs/Strings/DoubleQuoteUsageSniff.php
答案 1 :(得分:0)
您自己的规则集似乎包含此规则(WordPress Strings DoubleQuoteUsageSniff)两次,这可能导致您的规则集中止。
我建议你查看你的ruleset.xml并删除这两个嗅探中的一个。它可能是由于首先包含另一个规则集引起的。
答案 2 :(得分:0)
还要确保包含嗅探的文件夹与ruleset.xml中指定的名称相同。
例如,如果您的ruleset.xml说:
<ruleset name="Joomla">
或
<ruleset name="Wordpress">
包含所有嗅探器的文件夹可以命名为:
/php/pear/PHP/CodeSniffer/Standards/Joomla/... <= inside you will have ruleset.xml and Sniffs folder
或
/php/pear/PHP/CodeSniffer/Standards/Wordpress/... <= inside you will have ruleset.xml and Sniffs folder