2013-04-20 9 views
5

Gibt es ein Codesniffer-Snippet, mit dem/forces {} für jede Funktion/Methode auf Zeilenumbrüche gesetzt werden kann?Sniffer Snippet, um Klammern auf neue Zeile zu ermöglichen

Grundsätzlich zwingt etwas wie folgt aus:

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

Und

public function test() 
{ 
    // Code logic 
} 
+0

Müssen sie in Konstrukten existieren wie 'if (true) do1(); else do2(); 'oder sollen sie nur in Zeilenumbrüche eingefügt werden, wenn sie existieren? – bwoebi

+0

Ich habe bereits ein anderes Schnipsel an der richtigen Stelle, das den Körper zwingt, immer in Klammern gesetzt zu werden. Also yep, sie müssen existieren – ThomasVdBerge

Antwort

4

Ja, es ist ein gebrauchsfertiger ein. Es heißt OpeningFunctionBraceBsdAllmanSniff und Sie können es unter finden. Aber das ist nur für die Erklärungen der Funktionen.

Für Kontrollstrukturen können Sie die /path/to/Standards/Squiz/Sniffs/ControlStructures/ControlSignatureSniff.php nehmen und das Muster Array zwicken von

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() 

zu, dh

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() 

Wenn Sie die gleiche Regel auf andere Steuerstruktur anwenden müssen, können Sie Gehen Sie genauso vor, indem Sie die Muster im Array ändern.

Update: eine sauberere Lösung wäre natürlich, Ihre eigene Klasse zu schreiben, die das obige erweitert und überschreibt die getPatterns() Methode.

+0

Dies scheint nicht zu funktionieren, wenn die Klammer eingerückt ist 'Erwartet" if (...) \ n {"; gefunden "if (...) \ n \ t \ t {" ' –

+0

@MikulasDite möchten Sie vielleicht Ihre Tabs in Leerzeichen konvertieren. Wenn Sie dies aus irgendeinem Grund nicht in Ihrem Editor/Ihrer IDE tun möchten, kann PHPCS dies für Sie tun. Sie müssen die entsprechende Option einstellen, dh Ihre Tabs sind 4 Leerzeichen: '$ phpcs --config-set tab_width 4', wie es in der Dokumentation beschrieben ist (http://pear.php.net/manual/en /package.php.php-codesniffer.config-options.php) – Havelock

+1

Das löste das Tab Problem für mich: ''if (...) EOL ... {'' (bearbeitet von Havelocks Lösungen) – ippi

Verwandte Themen