Protože PHP není kompilovaný ale interpretovaný jazyk, kontrola syntaxe probíhá až při interpretaci a vykonávání. To může být problém, pokud v nějakém málo používaném souboru, který není pokrytý testy, chybí středník, závorka nebo je tam jiná syntaktická chyba.
Pokud se na takovém kódu s chybnou syntaxí spustí PHP Code Sniffer, může některé chyby ignorovat nebo naopak zahlásit neexistující chyby. PHP Stan sice již na chybnou syntaxi upozorní, jenže pro jeho správnou funkci se musí nainstalovat i celý vendor, což v CI zabírá drahý čas.
PHP Parallel lint
Vhodným nástrojem pro kontrolu, který je možné spustit na všech PHP souborech je PHP Parallel lint. Jak je z názvu patrné, provádí kontrolu syntaxe, linting, a to i paralelně. Nemusí se instalovat celý vendor čímž se operace může urychlit. Především při použití v CI pipelině je možné takto ušetřit trochu času a tím i peněz. Lze jej ale také pouštět pouze lokálně.
# Spuštění lintu na celé složce app
./vendor/bin/parallel-lint ./app
Laravel a Blade šablony
PHP CodeSniffer ani PHP Stan nelze jednoduše spustit na Blade šablonách. Pomocí Artisan příkazu view:cache
je možné vygenerovat kód pro všechny Blade šablony, které jsou poté uloženy ve složce ./storage/frameworks/views
. Následně je spuštěn Lint na všech souborech v projektu pro Laravel včetně vygenerovaných šablonách. Dají se tak eliminovat chyby, které by jinak objevily jedině akceptační prohlížečové testy.
# Spuštění lintu pro celý Laravel projekt
php artisan view:cache
./vendor/bin/parallel-lint ./app ./bootstrap/app.php ./config ./database ./resources/lang ./routes ./tests ./storage/framework/views ./tests
Pokud je chyba v Blade šabloně, cesta k chybnému souboru bude vypadat přibližně takto: ./storage/framework/views/86ffb2f8fb82a7291a39fabd8718f5b16448bf47.php
Pokud se daný soubor otevře, na posledním řádku je komentář, který obsahuje název původního souboru.
Osobní zkušenosti s podobnými nástroji můžete sdílet v komentářích
K tomuto článku již není možné přidávat další komentáře