6

是否有一个代码嗅探器片段允许/强制 { } 为每个函数/方法放在换行符上?

基本上,强迫这样的事情:

if (TRUE)
{
     // Code logic
}
else
{
    // Code Logic
}

public function test()
{
     // Code logic
}
4

1 回答 1

6

是的,有一个现成的。它被称为OpeningFunctionBraceBsdAllmanSniff,你可以在下面找到它/path/to/CodeSniffer/Standards/Generic/Sniffs/Functions。但这仅适用于函数的声明。

对于控制结构,您可以从中获取/path/to/Standards/Squiz/Sniffs/ControlStructures/ControlSignatureSniff.php并调整模式数组

protected function getPatterns()
{
    return array(
            'try {EOL...} catch (...) {EOL',
            'do {EOL...} while (...);EOL',
            'while (...) {EOL',
            'for (...) {EOL',
            'if (...) {EOL',
            'foreach (...) {EOL',
            '} else if (...) {EOL',
            '} elseif (...) {EOL',
            '} else {EOL',
           );

}//end getPatterns()

到,即

protected function getPatterns()
{
    return array(
            'try {EOL...} catch (...) {EOL',
            'do {EOL...} while (...);EOL',
            'while (...) {EOL',
            'for (...) {EOL',
            'if (...)EOL{',              // that's what you need
            'foreach (...) {EOL',
            '} else if (...) {EOL',
            '} elseif (...) {EOL',
            '} elseEOL{',               // and this
           );

}//end getPatterns()

如果您需要将相同的规则应用于其他控制结构,您可以采用相同的方式,通过更改数组中的模式。

更新:当然,一种更简洁的解决方案是编写您自己的类来扩展上述内容并覆盖该getPatterns()方法。

于 2013-04-20T09:17:17.050 回答