Zum Inhalt springen

Code Sniffer – ein Update

Der CodeSniffer wird immer weiter entwickelt und mit der neusten Version werden die Standards von PHP-Klassen zu xml-Definitionen umgestellt. Dies hat den Vorteil, dass diese übersichtlicher sind und einige neuen Funktionen Einzug erhalten. Zum Entstehungszeitpunkt dieses Artikel ist die neue Version des CodeSniffers noch im Beta-Stadium. Entwickler die mit der Zeit gehen – insbesondere welche die CI-Server verwalten – sollten aber trotzdem schon einen Blick auf diese Neuerung werfen, um bei dem nächsten Update nicht überrascht zu sein.

Wenn man bereits einen eigenen Standard definiert hat, so kann man diesen in das neue xml-Format übertragen. Als Beispiel nehme ich einen modifizierten PEAR-Standard mit dem einfallsreichen Namen PEARMOD.


Dieser Standard setzt auf dem PEAR-Standard auf, was man an der Zeile PEAR in der getIncludedSniffs-Methode erkennen kann. Da ich ein Freund der Kompaktheit bin möchte ich die öffnende geschweifte Klammer am Ende der Zeile und nicht in einer neuen Zeile sehen. Das ist übrigens die große Änderung zu PEAR.
Also wird der KernighanRitchie-Stil noch inkludiert und BSDAllman auf exclude gesetzt. In den Funktion- und Klassendeklaration-Sniffs wird die Klammerung wieder überprüft. Daher entferne ich diese ebenfalls.

Jetzt wird daraus eine xml-Definition. Zuerst wird im Verzeichnis des alten Standards eine Datei mit dem Namen ruleset.xml angelegt. Als ersten Text schreibt man hier das Encoding und den Root-Tag der xml-Datei in diese Datei.




Wir bauen hier auch wieder auf dem PEAR-Standard auf, daher referenzieren wir diesen.



	

Bisher haben wir nur eine Kopie von PEAR unter einem neuen Namen. Jetzt sagen wir dem CodeSniffer, welche Sniffs wir nicht aus PEAR übernehmen. Dabei wird Sniffs aus dem Klassennamen entfernt; ebenso das angehängte Sniff. Weiter werden die Unterstriche durch Punkte ersetzt und man erhält somit:



	
		
		
		
	

Zum Schluß ergänzen wir noch die alternative Regel zur Klammerung und schon haben wir unseren alten Standard auf die neue Version des CodeSniffers portiert.



	
		
		
		
	
	
	

Jetzt noch eine Besonderheit. Man kann die Sniffs auch in der ruleset.xml umkonfigurieren. Nehmen wir bspw die Zeilenlänge. Normalerweise wird bei 80 Zeichen eine Warnung ausgegeben und ab 100 ein Fehler. Man kann dies nun bspw so umkonfigurieren, dass ab 70 Zeichen eine Warnung gemeldet wird. Ein Fehler aber nicht auftritt. Somit würde man die LineLength Regel inkludieren und mit entsprechenden Properties anpassen.



	
		
		
		
	
	
	
	
	
		
			
			
		
	

Persönlich freue ich mich schon auf die Version 1.3.x des CodeSniffers. Diese Art der Definition gefällt mir nämlich sehr gut.

Published inAllgemein

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close