如何修改PSR2函数调用签名规则让多参数换行使用制表符
解决PHP_CodeSniffer函数调用签名缩进用制表符的问题
需针对PSR2.Methods.FunctionCallSignature嗅探单独配置缩进规则——该嗅探不会自动继承全局的ScopeIndent配置,这就是修复时用空格而非制表符的原因。
修改你的PHP_CodeSniffer XML配置如下:
<arg name="tab-width" value="4"/> <rule ref="PSR2"> <exclude name="Generic.WhiteSpace.DisallowTabIndent"/> <exclude name="Generic.Files.LineLength.TooLong"/> <exclude name="Squiz.WhiteSpace.ScopeClosingBrace.ContentBefore"/> </rule> <rule ref="Generic.WhiteSpace.DisallowSpaceIndent"/> <rule ref="Generic.WhiteSpace.ScopeIndent"> <properties> <property name="indent" value="4"/> <property name="tabIndent" value="true"/> </properties> </rule> <!-- 新增:为函数调用签名单独配置制表符缩进 --> <rule ref="PSR2.Methods.FunctionCallSignature"> <properties> <property name="indent" value="4"/> <property name="tabIndent" value="true"/> <!-- 可选:确保参数前的空格保留(默认已开启,可根据需求调整) --> <property name="argumentSpacing" value="true"/> </properties> </rule>
配置说明
- 新增的
PSR2.Methods.FunctionCallSignature规则块,专门控制函数多参数换行后的缩进行为:tabIndent="true"强制使用制表符,indent="4"匹配你的制表符宽度设置。 - 保留
Generic.WhiteSpace.DisallowSpaceIndent规则,避免代码中混合出现空格缩进。 - 重新运行
phpcbf命令(phpcbf sniffs=PSR2.Methods.FunctionCallSignature)后,修复后的代码会使用制表符缩进参数行:
$this->afpJobService->createFileThumb( $this->a, $this->b, $this->c, $this->d, $e );
内容的提问来源于stack exchange,提问作者user2219071
相关产品推荐
相关产品推荐

