自定义PHPCS规则集(继承WordPress标准)函数开括号规则配置失效求助
解决PHPCS自定义规则开括号同行不生效问题
问题原因
你配置的规则未生效,大概率是因为WordPress代码标准中已经启用了强制开括号换行的规则,优先级覆盖了你的自定义配置;或者仅修改了规则属性,未禁用触发错误的具体检查项。
具体解决步骤
第一步:禁用冲突的具体检查项
报错的Squiz.Functions.MultiLineFunctionDeclaration.BraceOnSameLine是强制开括号换行的检查项,需先禁用它,再设置自定义属性:<rule ref="Squiz.Functions.MultiLineFunctionDeclaration"> <properties> <property name="opening_brace" value="same"/> <property name="closing_brace" value="next_line"/> <severity>5</severity> </properties> <!-- 禁用强制换行的检查项 --> <exclude name="Squiz.Functions.MultiLineFunctionDeclaration.BraceOnSameLine"/> </rule>第二步:排查WordPress标准的冲突规则
WordPress代码标准可能集成了PSR系列规则,这些规则也可能强制开括号换行。若上述配置仍不生效,需禁用WordPress相关冲突规则:<!-- 禁用WordPress中强制函数开括号换行的规则 --> <rule ref="WordPress.Functions.MultiLineFunctionDeclaration"> <exclude name="WordPress.Functions.MultiLineFunctionDeclaration.BraceOnSameLine"/> </rule>第三步:确保自定义规则优先级
要让自定义配置覆盖WordPress默认规则,需将自定义规则放在WordPress标准引用之后,规则集结构示例:<ruleset name="Custom WordPress"> <!-- 先引用WordPress标准 --> <rule ref="WordPress"/> <!-- 再添加你的自定义规则 --> <rule ref="Squiz.Functions.MultiLineFunctionDeclaration"> <properties> <property name="opening_brace" value="same"/> <property name="closing_brace" value="next_line"/> <severity>5</severity> </properties> <exclude name="Squiz.Functions.MultiLineFunctionDeclaration.BraceOnSameLine"/> </rule> </ruleset>
查找正确规则与属性的方法
- 执行
phpcs --standard=WordPress --list-rules,列出WordPress标准包含的所有规则,定位函数声明相关规则。 - 针对目标规则,执行
phpcs --standard=WordPress --explain=Squiz.Functions.MultiLineFunctionDeclaration,查看该规则的所有属性、取值说明及关联检查项,明确需调整的属性和需排除的检查项。
内容的提问来源于stack exchange,提问作者Ted Logan
相关产品推荐
相关产品推荐

