Nette Coding Standard
Der Coding Standard formatiert Ihren PHP-Code automatisch nach dem Coding Standard von Nette, von der Einrückung und den Klammern bis zu den Abständen und der Reihenfolge der Imports.
Unter der Haube kombiniert er zwei Standardwerkzeuge der Branche, PHP CS Fixer und PHP CodeSniffer, die vorkonfiguriert mitkommen, sodass Sie selbst nichts einrichten müssen.
Installation
Installieren Sie das Werkzeug global mit Composer:
composer global require nette/coding-standard
und stellen Sie sicher, dass Ihr globales Verzeichnis für Vendor-Binaries in der Umgebungsvariablen $PATH liegt.
Verwendung
Das Werkzeug bietet zwei Befehle. Der Befehl check meldet nur Verstöße, während fix sie
automatisch behebt:
ecs check
ecs fix
Ohne Argumente durchsucht es die Verzeichnisse src/ und tests/; Sie können auch einen oder mehrere
eigene Pfade übergeben, zum Beispiel ecs check app bin.
Bevor Sie den Fixer zum ersten Mal ausführen, sichern Sie unbedingt Ihre Dateien.
PHP-Version
Das Werkzeug unterstützt PHP 8.0 bis 8.5 und wendet die Regeln je nach Version schrittweise an. Es erkennt die Version
automatisch aus der composer.json Ihres Projekts, Sie können sie aber auch ausdrücklich mit der Option
--preset setzen:
ecs check --preset php81
Eigene Regeln
Sie können die Regeln für Ihr Projekt anpassen. Um die Regeln von PHP CS Fixer zu ändern, legen Sie im Wurzelverzeichnis des
Projekts eine Datei ncs.php an:
<?php
return [
'strict_comparison' => false,
];
Um die Regeln von PHP CodeSniffer zu ändern, legen Sie eine Datei ncs.xml an. Sie muss nicht auf das Preset der
Version verweisen (es wird automatisch damit kombiniert), und Sie können mit $presets/ jedes mitgelieferte Preset
einbinden:
<?xml version="1.0"?>
<ruleset name="MyProject">
<!-- enable use function/const imports -->
<rule ref="$presets/optimize-fn.xml"/>
<!-- disable a rule -->
<exclude name="SlevomatCodingStandard.TypeHints.ReturnTypeHint"/>
</ruleset>
Beide Dateien werden automatisch gefunden, und Ihre Regeln haben Vorrang vor dem Preset. Für eine einmalige Überschreibung,
die Sie nicht committen wollen, übergeben Sie mit --config-file eine zusätzliche Datei (.php für den
Fixer, .xml für den Sniffer).
Continuous Integration
Installieren Sie das Werkzeug in einer CI-Pipeline als Projekt und führen Sie es von dort aus:
- run: composer create-project nette/coding-standard temp/coding-standard
- run: php temp/coding-standard/ecs check