Kontrola správnosti PHP syntaxe

PHP, Laravel, Kvalita kódu

Nástroj PHP Parallel Lint dokáže provést hromadnou kontrolu PHP souborů a reportovat syntaktické chyby. Je tak možné zamezit chybám, které se projeví až při spuštění na produkci.

Kontrola správnosti PHP syntaxe

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