PHP CodeSniffer 是否支持像 Rubcop 这样的特定规则配置?

Does PHP CodeSniffer support rule-specific configuration like Rubcop?

使用 Rubocop,我可以覆盖 .rubocop.yml 文件中的规则,例如 this:

AllCops:
  RunRailsCops: true

# Commonly used screens these days easily fit more than 80 characters.
Metrics/LineLength:
  Max: 120

# Too short methods lead to extraction of single-use methods, which can make
# the code easier to read (by naming things), but can also clutter the class
Metrics/MethodLength: 
  Max: 20

我相信 CodeSniffer 支持这样的东西,但是查看他们的 wiki 页面,我找不到任何关于规则的信息:

而且默认配置文件似乎不支持它:

是的,PHP_CodeSniffer 允许您使用 ruleset.xml 文件定义自己的编码标准。这里有一个带注释的:https://github.com/squizlabs/PHP_CodeSniffer/wiki/Annotated-Ruleset

您也可以将您的文件命名为 phpcs.xml 让 PHPCS 自动获取它并停止您需要为每个 [=33= 使用 --standard=/path/to/ruleset.xml ].文档在这里:https://github.com/squizlabs/PHP_CodeSniffer/wiki/Advanced-Usage#using-a-default-configuration-file

许多嗅探具有允许您更改其行为的属性。您可以在此处查看列表:https://github.com/squizlabs/PHP_CodeSniffer/wiki/Customisable-Sniff-Properties

一个很好的例子可能是行长度一:https://github.com/squizlabs/PHP_CodeSniffer/wiki/Customisable-Sniff-Properties#genericfileslinelength

您可能还想查看 PHPCS 使用的 phpcs.xml 文件作为完整示例:https://github.com/squizlabs/PHP_CodeSniffer/blob/master/phpcs.xml.dist

如何完整构建文件可能超出了这个问题的范围,但您应该能够搜索构建 PHPCS 规则集以获取更多信息。如果没有,请在此处提出更多问题 :)