2012-11-12 4 views
6

Vor kurzem migrierten wir zu git und implementierten (für jetzt post) Empfangshaken auf unserem zentralen Server, um Berichte an Entwickler zu senden, sowie verschiedene Werkzeuge, die uns erlauben, unseren Code automatisch mit phpcs in unseren Entwicklungsumgebungen zu überprüfen.Kann ich den verwendeten phpcs-Regelsatz pro Datei überschreiben, wenn ja, wie?

Das ist alles schön und gut, funktioniert gut, aber wir wollen in der Lage sein, immer auf unseren Code-Standard zu verlassen, nicht jede Datei zu ignorieren, die aus einem logischen Grund nicht übereinstimmt. Jetzt haben wir einen eigenen Regelsatz, der einige Dinge im Standard-PEAR-Standard außer Kraft setzt, aber wir wollen, wenn möglich, etwas weiter gehen.

Unser Problem ist, dass während der PEAR-Standard für alle Klassen/Geschäftslogik perfekt ist, aber in den View-Dateien wollen wir die Regeln für sagen, schließen Klammern, die auf ihrer eigenen Linie sein müssen. Das Problem ist, dass wir meistens HTML in diesen Dateien definieren und die einzigen Kontrollstrukturen, die wir haben, sind einfache if-else- oder foreach-Anweisungen, und das Öffnen von php, dann das Hinzufügen einer neuen Zeile, schließenden Klammer, Zeilenumbruch und Schließen von PHP ist etwas albern.

Erforderliche Syntax gültig sein:

<?php 
} 
// end of some if statement ?> 

Was würden wir stattdessen Ansichten verwenden möchten:

<?php } // end of some if statement ?> 

Dies würde unser Code lesbarer ...

Wir machen mag die alternative Syntax nicht so gut (if(..): ... endif;), afaik vor allem, weil es auch hier einige Probleme gab (es geht nur um den Whitespace ...).

Das Ignorieren der ganzen Datei (mit // @codingStandardsIgnoreFile) ist für uns keine Option.

tl; dr

Was wir also einen separaten ruleset für unsere View-Dateien tun möchte, ist definieren, so dass wir noch einen Standard müssen haften, sondern mit den entspannten Regeln in diesen Bereichen so unseren Code kann immer noch lesbar gemacht werden.

Ich bin nicht allzu gut informiert über phpcs noch, und keine Lösungen selbst Keywords finden konnte ich zwar logisch waren ... Irgendwelche Vorschläge ordentlich View-Dateien zu machen, die auch zu PEAR konform sind auch willkommen ...

Antwort

6

Wenn es nur auf ein paar Nachrichten ankommt, die Sie aus einigen Dateien ausschließen möchten, können Sie diese Ausschlüsse direkt in Ihre ruleset.xml-Datei einfügen. Zum Beispiel:

<!-- 
    You can also be more specific and just exclude some messages. 
    Please note that all message-specific ignore patterns are 
    checked using absolute paths. 

    The code here will just hide the ContainsVar error generated by the 
    Squiz DoubleQuoteUsage sniff for files that match either of the two 
    exclude patterns. 
--> 
<rule ref="Squiz.Strings.DoubleQuoteUsage.ContainsVar"> 
    <exclude-pattern>*/tests/*</exclude-pattern> 
    <exclude-pattern>*/data/*</exclude-pattern> 
</rule> 

Ich bin nicht sicher, wo Ihre View-Dateien gespeichert werden, aber wenn man sie mit einem Ausschluss-Muster entsprechen kann (im Grunde nur ein regulärer Ausdruck) dann werden Sie in der Lage sein, einige entspannen die Regeln für sie.

Der beste Weg herauszufinden, dass ref = "" Bit ist, phpts auf Ihre View-Dateien laufen und mit der -s Befehlszeilenargument. Für jede Nachricht erhalten Sie einen eindeutigen Code, mit dem Sie Ihrem Regelsatz bestimmte Ausschlussmuster hinzufügen können.

Es gibt eine Menge anderer Dinge, die Sie auch in den Regelsatzdateien tun können. Check out the docs here.

+0

Vergessen zu erwähnen: Stellen Sie sicher, dass Sie PHP_CodeSniffer Version 1.4.2 (die neueste stabile Version) verwenden, da in Version 1.4.1 ein Ausschlussregelfehler vorlag. –

+0

Danke, das war im Grunde, was ich gesucht habe. Ich habe den Speicherort der Ansichtsdateien absichtlich vage gehalten, da sie sich an verschiedenen Orten für verschiedene Arten von Projekten befinden. Wir können das herausfinden :) – sg3s

+0

Aha! Die "-s" haben mich gerade durch Sniffs gerettet. Vielen Dank :) – markdwhite

Verwandte Themen