Zum Inhalt springen

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:

class PHP_CodeSniffer_Standards__CodingStandard extends PHP_CodeSniffer_Standards_CodingStandard

und die Datei heißt dann natürlich

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 😀

Published inDevTools

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