2012-05-14 84 views

回答

11

如果您想覆盖内置的标准,则需要创建自定义编码标准。这只是创建一个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
  3. 创建一个名为MyStandard新目录直接把你的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 
0

的标准清单没有硬编码的,它是从phpcs获得。如上所述安装自己的标准将完成这项工作。

+0

我花了下午的好一段时间试图让这个工作。 PHPStorm甚至不会加载已安装标准的列表,检查器设置中的唯一选项是空白和自定义的,甚至选择自定义的验证选项从不显示。我可以让phpcs正确运行CLI,但如果按照PHPStorm文档中的规定工作,它将会很好。 –

2

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