【问题标题】:Custom ruleset for phpcs using PHPStorm使用 PHPStorm 的 phpcs 自定义规则集
【发布时间】:2013-08-06 19:54:29
【问题描述】:

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

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

【问题讨论】:

    标签: php phpstorm codesniffer


    【解决方案1】:

    如果您想覆盖内置标准,则需要创建自定义编码标准。这只是创建一个包含标准定义的 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>
    

    您可以做更多的事情来自定义您的标准,包括从其他标准引入支票、覆盖消息或将其中一些消息静音。您可以在此处查看文档:http://pear.php.net/manual/en/package.php.php-codesniffer.annotated-ruleset.php

    最后我检查了一下,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. /usr/local/PEAR/PHP/CodeSniffer/Standards 下创建一个名为MyStandard 的新目录
    3. 将您的mystandard.xml 文件直接放在那里,但将其重命名为ruleset.xml

    要确认您的标准已安装,请运行 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
    

    【讨论】:

      【解决方案2】:

      可以在phpstorm上添加你自己的自定义规则集,这可以在项目设置=>检查=>“PHP代码嗅探器验证”中完成,使用编码标准“自定义”并设置您自定义的根目录规则集.xml

      【讨论】:

        【解决方案3】:

        标准列表不是硬编码的,它是从 phpcs 获得的。如上所述安装您自己的标准就可以了。

        【讨论】:

        • 我花了下午的大部分时间试图让它工作。 PHPStorm 甚至不会加载已安装标准的列表,检查器设置中的唯一选项是空白和自定义,甚至选择自定义验证选项也不会显示。我可以让 phpcs 正确运行 CLI,但如果让它按照 PHPStorm 文档中的规定工作会很好。
        猜你喜欢
        • 2023-03-14
        • 1970-01-01
        • 2017-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-10
        相关资源
        最近更新 更多