0

当我以 PSR2 ruleset.xml 为例时,我看到很多注释块说<!-- checked in Files/SideEffectsSniff -->

这是来自: https ://github.com/squizlabs/PHP_CodeSniffer/blob/master/CodeSniffer/Standards/PSR2/ruleset.xml

<!-- PHP code MUST use only UTF-8 without BOM. -->
<rule ref="Generic.Files.ByteOrderMark"/>

<!-- 2.3. Side Effects -->

<!-- A file SHOULD declare new symbols (classes, functions, constants, etc.) and cause no other side effects, or it SHOULD execute logic with side effects, but SHOULD NOT do both. -->
<!-- checked in Files/SideEffectsSniff -->

该文件的其余部分没有类似于Files.SideEffectsSniff.

我的问题是,是否检查了副作用?如果是的话,什么规则对此负责?

谢谢你的澄清。

4

1 回答 1

1

简短回答:是的,副作用由 PSR1 和 PSR2 检查,负责的嗅探是这个:https ://github.com/squizlabs/PHP_CodeSniffer/blob/master/CodeSniffer/Standards/PSR1/Sniffs/Files/SideEffectsSniff.php并将其导入您自己的标准的代码是PSR1.Files.SideEffects.


首先请注意,您发布的规则集片段实际上来自 PSR1,但 PSR2 在其 ruleset.xml 文件的顶部导入整个 PSR1 标准,因此在运行这两个标准时都会执行嗅探。

当我编写这些 ruleset.xml 文件时,我使用<rule>标签来显示我何时从其他标准导入嗅探,并使用注释来显示嗅探何时包含在标准本身中。

在 PHPCS 中,您可以使用代码导入嗅探器,也可以将类包含Sniffs在与 ruleset.xml 文件相同的目录中的文件夹中。PSR1 和 PSR2 都有自己的嗅探类,这些都是自动导入的,这就是我不需要<rule>在规则集中使用标签的原因。

于 2015-10-30T22:13:48.483 回答