使用PHPStorm的phpcs自定义规则集

时间:2012-05-14 14:25:07

标签: php phpstorm codesniffer

我试图以某种方式说服phpcs使用Zend编码指南,但是 - 允许我使用带下划线的变量(如$blub->foo_bar)。

有人能告诉我如何更改phpcs在PHPStorm中使用的规则集吗?

3 个答案:

答案 0 :(得分:13)

如果要覆盖内置编码标准,则需要创建自定义编码标准。这只是创建一个标准定义的XML文件。

在您的情况下,您需要整个Zend编码标准,但您不希望有关变量名称的特定命名约定规则。因此,您将创建一个名为mystandard.xml的文件(根据需要将其命名并将其放在任何您想要的位置)并输入以下内容:

<?xml version="1.0"?>
<ruleset name="MyStandard">
 <description>My custom Zend coding standard.</description>
 <rule ref="Zend">
  <exclude name="Zend.NamingConventions.ValidVariableName"/>
 </rule>
</ruleset>

您可以做很多事情来定制您的标准,包括从其他标准中引入检查,覆盖消息或将其中一些静音。您可以在此处查看文档:{​​{3}}

最后我查了一下,PHPStorm并没有让你使用自定义编码标准,无论出于何种原因。通常,您只需输入标准名称作为mystandard.xml文件的完整路径。如果PHPStorm仍然不允许您这样做,那么欺骗它的唯一方法就是实际安装自定义标准。

请注意,这不是您通常需要做的事情,而且有点复杂。但是如果你想尝试一下,你就是这样做的:

  1. 查找系统上安装PHPCS的位置。如果您不知道它在哪里,请尝试pear config-show | grep php_dir。 PHP_CodeSniffer将在那里的目录中。对我来说,PEAR安装在/usr/local/PEAR中,因此PHP_CodeSniffer位于/usr/local/PEAR/PHP/CodeSniffer
  2. MyStandard
  3. 下创建一个名为/usr/local/PEAR/PHP/CodeSniffer/Standards的新目录
  4. mystandard.xml文件直接放在那里,但将其重命名为ruleset.xml
  5. 要确认您的标准已安装,请运行phpcs -i。你应该看到

    The installed coding standards are MySource, MyStandard, PEAR, PHPCS, Squiz and Zend
    

    现在,PHPStorm将显示​​(希望)MyStandard作为下拉列表中的一个选项。如果它没有显示出来,那么他们可能已经对列表进行了硬编码,如果不直接破解Zend编码标准,就无法使其工作。

    我希望这些信息可以帮助您找到解决方案。如果没有,您可以使用自定义标准直接在命令行上运行PHPCS:

    phpcs --standard=/path/to/mystandard.xml /path/to/code
    

答案 1 :(得分:3)

可以在phpstorm上添加自己的自定义规则集,这可以在项目设置中完成=&gt;检查=&gt; “PHP Code Sniffer验证”,使用编码标准“Custom”并设置自定义ruleset.xml的根目录

答案 2 :(得分:0)

标准列表不是硬编码的,它是从phpcs获得的。如上所述安装您自己的标准将完成这项工作。