5

我想为我们的 phpcs 验证对 PEAR 标准做一个小的改动。目前 PEAR 要求您编写这样的 else 语句:

} else {

我们想这样写它们:

}
else {

我该如何进行此更改?

4

1 回答 1

6

这样做的唯一方法是使用 ruleset.xml 文件编写您自己的编码标准。它需要导入整个 PEAR 编码标准,但排除执行此检查的特定嗅探。这一点可以用单个 XML 文件来完成。

但是没有内置的嗅探器可以强制执行else您正在寻找的语法类型。因此,为了强制执行,您需要编写一个自定义嗅探,这更复杂,因为您还必须将它存储在某个地方。

如果您想从尝试简单的自定义编码标准开始,请创建一个名为的文件ruleset.xml并将其作为内容:

<?xml version="1.0"?>
<ruleset name="MyStandard">
 <description>My custom coding standard.</description>
 <rule ref="PEAR">
  <exclude name="PEAR.ControlStructures.ControlSignature"/>
 </rule>
</ruleset>

然后像这样运行 PHP_CodeSniffer:

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

这将根据 PEAR 编码标准检查您的代码,但不包括对控制结构的特定检查。如果这就是你所需要的,你可以停在那里。如果您有一个团队想要运行此自定义标准,只需将文件提供给他们,他们也可以使用它。

这里有关于 ruleset.xml 格式的更多信息:https ://github.com/squizlabs/PHP_CodeSniffer/wiki/Annotated-ruleset.xml

如果您想继续编写自定义嗅探,最好从基本教程开始:http: //pear.php.net/manual/en/package.php.php-codesniffer.coding-standard-tutorial。 php

这将解释什么是编码标准。然后,您需要创建自己的嗅探器,它只是 PEAR 的一个副本,对您控制结构的方式稍作更改。PEAR 嗅探在这里:https ://github.com/squizlabs/PHP_CodeSniffer/blob/master/CodeSniffer/Standards/PEAR/Sniffs/ControlStructures/ControlSignatureSniff.php

未经测试,我假设您想更改} else {EOL',}EOLelse {EOL',并查看是否有效。

于 2012-11-22T21:45:37.883 回答