Sniffer Snippet允许在新行上使用括号

时间:2013-04-20 09:00:42

标签: php codesniffer

是否有codeniffer片段允许/ force {}为每个函数/方法添加换行符?

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

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

public function test()
{
     // Code logic
}

1 个答案:

答案 0 :(得分: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()方法。