Wo ist die Dokumentation zu den PHP_CodeSniffer Regeln verfügbar? Scheint mir, als ob die Regeln existieren, aber niemand kennt die Liste von ihnen und ihren Eigenschaften. Ich konfrontiert das wesentliche Problem, ich möchte einen Standard anpassen und geschweiften Klammer Start in der gleichen Zeile nach Anweisung durch ein Leerzeichen geteilt und kann keine Möglichkeit, es zu tun sehen. Und das ist nur ein Thema, aber ich habe viele andere. Danke.
Wenn Sie sich den Quelltext anschauen, kann das beängstigend sein, aber am Ende, wenn Sie alle möglichen Regeln auflisten möchten (oder schnüffeln als PHP_CodeSniffer ruft sie auf) Sie müssen sich den Quellcode ansehen.
Ich hatte das gleiche Problem und habe drei Techniken verwendet:
-s
phpcs
verfügt über eine Option, die den Bezeichner von nicht beachteten Sniffs ausgibt. Schauen wir uns ein Beispiel an:
Im Bericht gibt jeder Fehler oder jede Warnung den Sniff aus.
ruleset.xml
Dateien im Quelltext Die Konfiguration der Regeln, die in einem Projekt befolgt oder ignoriert werden müssen, wird normalerweise in einer ruleset.xml
-Datei definiert. Der PHP_CodeSniffer-Quellcode enthält einige Beispiele. PHP_CodeSniffer definiert mehrere Standards: Generisch, PSR1, PSR2, ... Jede von ihnen hat eine ruleset.xml
Datei. Sie können von ihnen lernen, wie Sie Ihre eigenen erstellen.
Bei dieser Technik müssen Sie sich den Quellcode ansehen, aber Sie müssen nur Dateien lesen, die denen in Ihrem Projekt ähneln. Zum Beispiel finden Sie die Datei ruleset.xml
für den PSR2-Standard im Ordner CodeSniffer/Standards/PSR2
.
Wenn Sie am Ende eine umfassende Liste von Sniffs haben möchten, müssen Sie sie aus dem Quellcode extrahieren . Lassen Sie uns entschlüsseln, wie Sniff Bezeichner erstellt werden.
Es ist einfach, die PHP-Klasse zu kennen, die einen Sniff implementiert. Nehmen wir zum Beispiel Generic.Commenting.Todo.TaskFound
. Die drei ersten Token bedeuten:
Generic
: Dies ist der Standard und definiert den Standardordner CodeSniffer/Standards/Generic
Commenting
: Dies ist die Sniff-Gruppe unter dem Standard und verweist auch auf einen Ordner innerhalb des Standards: CodeSniffer/Standards/Generic/Sniffs/Commenting
Todo
: Es ist der Sniff, und es ist in einer Klasse namens <sniff name>Sniff.php
implementiert
Also, wir haben% c_de% sniff implementiert in Generic.Commenting.Todo.TaskFound
Klasse.
Wir können das anders herum machen. Wenn wir den Pfad zu einer PHP-Klasse kennen, können wir den Sniff kennen, den PHP_CodeSniffer melden wird. Zum Beispiel wurde die Klasse in CodeSniffer/Standards/Generic/Sniffs/Commenting/TodoSniff.php
implementiert generiert Sniffs mit dem Bezeichner CodeSniffer/Standards/Squiz/Sniffs/NamingConventions/ValidFunctionNameSniff.php
.
Tags und Links php coding-style pear