2013-04-20 12 views
5

Czy istnieje kod codesniffer, który pozwala/wymusza umieszczenie {} na nowych liniach dla każdej funkcji/metody?Sniffer Snippet, aby zezwolić na nawiasy w nowej linii

Zasadniczo, zmuszając coś takiego:

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

And

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

Czy istnieją w konstrukcjach takich jak 'if (true) do1(); else do2(); "lub czy będą one umieszczane tylko w znakach, jeśli istnieją? – bwoebi

+0

Mam już inny fragment w miejscu, który zmusza ciało do umieszczenia zawsze między nawiasami. Tak więc, muszą istnieć – ThomasVdBerge

Odpowiedz

4

Tak, jest gotowy jeden. Nazywa się OpeningFunctionBraceBsdAllmanSniff i można go znaleźć pod /path/to/CodeSniffer/Standards/Generic/Sniffs/Functions. Ale to tylko dla deklaracji funkcji.

Dla struktur kontrolnych można wziąć /path/to/Standards/Squiz/Sniffs/ControlStructures/ControlSignatureSniff.php i dostosować tablicy wzór z

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

do tj

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

Jeśli trzeba zastosować tę samą zasadę do innej struktury sterującej, można postępuj w ten sam sposób, zmieniając wzory w tablicy.

Aktualizacja: jeden czystsze rozwiązaniem byłoby, oczywiście, napisać własną klasę, która rozciąga się powyżej i nadpisuje metodę getPatterns().

+0

Nie działa, jeśli nawias jest wcięty "Oczekiwany", jeśli (...) \ n {"; znaleziono "if (...) \ n \ t \ t {" ' –

+0

@MikulasDite możesz zamienić swoje karty w spacje. Jeśli z jakiegoś powodu nie chcesz tego robić w swoim edytorze/IDE, PHPCS może to zrobić za Ciebie. Musisz ustawić odpowiednią opcję, np. Twoje karty mają 4 spacje: '$ phpcs --config-set tab_width 4', jak to jest [opisane w dokumentacji] (http://pear.php.net/manual/en /package.php.php-codesniffer.config-options.php) – Havelock

+1

Rozwiązało to dla mnie problem z kartami: ''if (...) EOL ... {'' (edytowane rozwiązania Havelocka) – ippi

Powiązane problemy