Artikelformat

CodeSniffer – eine kleine Ergänzung

Der liebe CodeSNiffer lässt mir keine Ruhe. Ich habe vor kurzem beispielhaft einen Standard geschrieben. Dieser wird natürlich im Verzeichnis Standards unter CodeSniffer abgelegt. Um eine gewisse Ordnung zu haben und sich an die Vorgaben zu halten, muss man hier ein Unterverzeichnis mit dem Standard-Namen anlegen. Darin wird dann eine Klasse angelegt, die die eigentlichen Informationen zu dem Standard enthält – also welche Sniffs genutzt werden sollen, ob ein anderer Standard inkludiert werden soll etc.

Hier nun ein ergänzender Tipp, damit man sich hier nicht so dumm anstellt wie ich. Man muss diese Klasse nach folgender Namensstruktur aufbauen:

1
class PHP_CodeSniffer_Standards__CodingStandard extends PHP_CodeSniffer_Standards_CodingStandard

und die Datei heißt dann natürlich

1
CodingStandard.php

Genau nach dieser Klasse sucht der CodeSniffer beim initialisieren der Standards. Heißt die Klasse anders, funktioniert die ganze Geschichte nicht. Richtig fies an der Sache ist, wenn man unter Windows oder Macos die Klasse definiert und testet und nicht daran denkt dass diese Systeme üblicherweise Dateien caseinsensitiv betrachten, dann funktioniert alles, auch wenn Klassenname und Dateiname sich unterscheiden.

Genau das ist mir passiert. Dann habe ich meinen Standard auf einem Linux-System getestet und plötzlich hat nichts mehr funktioniert. Die obige Erklärung fiel mir natürlich direkt ein, als ich in den Quelltext des CodeSniffers geschaut hatte und dort sah, wie der Klassenname sein soll.

Nach einer kurzen Umbenennung funktioniert natürlich alles – soviel zum Thema plattform unabhängig 😀

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.