现在,我花了2个小时来尝试弄清楚如何在方法声明的同一行中要求{,而不是在下一行中默认要求。我怎样才能做到这一点?我已经将PSR2标准复制到一个名为PSR2的新文件夹中,以便能够根据自己的喜好对其进行修改。因此,我正在研究的基础基本上是我想修改的PSR2标准。

我已经尝试过ruleset.xml,并且尝试直接在代码中对其进行修改而没有成功。

<rule ref="PEAR.Classes.ClassDeclaration">
    <properties>
        <property name="eolChar" value="{"/>
    </properties>
</rule>
<rule ref="PSR2R.Classes.ClassDeclaration">
    <properties>
        <property name="eolChar" value="{"/>
    </properties>
</rule>

我已经发现这是错误的。 EOL由phpcs设置。但是我无法弄清楚是否可以通过规则配置一个值。

到目前为止,这对我来说还不错(拧出了一些愚蠢的空间!!):
<?xml version="1.0"?>
<ruleset name="PSR2R">
    <description>PSR2 with tabs instead of spaces.</description>
    <arg name="tab-width" value="4"/>
    <rule ref="PSR2">
        <exclude name="Generic.WhiteSpace.DisallowTabIndent"/>
    </rule>
    <rule ref="Generic.WhiteSpace.DisallowSpaceIndent"/>
    <rule ref="Generic.WhiteSpace.ScopeIndent">
        <properties>
            <property name="indent" value="4"/>
            <property name="tabIndent" value="true"/>
        </properties>
    </rule>
</ruleset>

但我想补充一下上述规则。

最佳答案

将此代码放在您的ruleset.xml文件中:

<rule ref="PSR2">
    <exclude name="Squiz.Functions.MultiLineFunctionDeclaration.BraceOnSameLine" />
</rule>
<rule ref="Generic.Functions.OpeningFunctionBraceKernighanRitchie" />

这将包括PSR2标准,但排除有关需要在同一行上的支架的特定消息。然后,它包括将方法和函数括号强制在下一行的通用嗅探。

有了这一更改,此代码:
<?php
namespace Test;

class Foo
{
    public function bar() {
    }
}

将不会产生任何错误,但是直接在其上运行PSR2会产生一个错误:
FILE: temp.php
----------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
----------------------------------------------------------------------
 6 | ERROR | [x] Opening brace should be on a new line
----------------------------------------------------------------------
PHPCBF CAN FIX THE 1 MARKED SNIFF VIOLATIONS AUTOMATICALLY
----------------------------------------------------------------------

关于php - phpcs:如何修改PSR2以检查花括号与方法在同一行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32585906/

10-13 01:06