PHPStan – “must have” każdego developera PHP

PHPStan to narzędzie, które umożliwia automatyczną statyczną analizę kodu żródłowego. Narzędzie jest bardzo proste w instalacji i konfiguracji: wystarczy wybrać katalog aplikacji, który chcemy przeanalizować, wskazać poziom analizy kodu jaka ma zostać wykonana i po chwili dostajemy szczegółowy raport dotyczące potencjalnych błędów w naszym kodzie.
Jeśli do tej pory jeszcze nie korzystasz ze statycznej analizy kodu w swioch projektach to jest to najlepszy moment i narzędzie od którego powinieneś zacząć.

Czym jest statyczna analiza kodu?

Statyczna analiza kodu to badanie kodu pod kątem błędów składniowych, standardów kodowania i innych typowych błędów (w zależności od konfiguracji) bez uruchamiania właściwiego kodu. W przypadku PHP jest to o tyle przydane, że nie dysponujemy kompilatorem kodu żródłowego i błędy w kodzie, który nie jest odpowiednio pokryty testami automatycznymi są bardzo trudne do wykrycia – w skrajnych przypadkach wykrywają / zgłaszają je dopiero użytkownicy końcowi.

Dobierz odpowiedni poziom analizy do swojego projektu

W zależności od typu projektu jaki chcemy analizować, powinniśmy na początku dobrać odpowiedni “poziom” analizy kodu. Im wyższy level tym większą liczbę błędów PHPStan będzie nam raportował. W tej sytuacji dobrze jest zacząć od domyślnego poziomu: 0 i doprowadzić kod do porządku. W kolejnych krokach możemy zwiększać poziom analizy kodu. Ciekawym rozwiązaniem jest możliwość konfiguracji uruchamiania PHPStan jako pre commit hook, dzięki temu analiza będzie uruchamiana automatycznie przed każdym commitem i nie pozwoli na wysłanie zmian, które zawierają błędy. PHPStan sprawdza się również swiętnie jako element CI (ang. Continuous Integration).

PHPStan vs testy jednostkowe

Statycznej analizy kodu nie możemy i nie powinniśmy traktować jako zamiennika dla testów jednostkowych. Tego typu analiza kodu pomaga wykryć błędy na wczesym etapie programowania i pozwala utrzymać odpowiednią jakość bo nawet dobrze pokryty testami kod może zawierać błędy. Każda nowo powstała linia kodu generuje potencjalne bugi, stad dodatkowa pomoc w postaci szybkiej analizy bez koniecznie wykonywania kodu jest tak istotna. Co więcej PHPStan będzie również bardzo przydatny w sytuacji kodu, których nie posiada żadnych testów, ale takich sytuacji należy się zdecydowanie wystrzegać.

Jako ciekawostkę dodam, że PHPStan dodatkowo oferuje możliwość skonfigurowania przydatnych rozszerzeń dla lepszej analizy testów jednotkowych z PHPUnit, Doctrine2, Symfony czy Laravel.

Projekt jest bardzo intensywnie rozwijany. Najnowsza wersja wymaga conajmniej PHP 7.1 ale dostępne są również wcześniejse wersje, które wspierają np PHP 7.0. Zachęcam do szerszego zapoznania się z tym narzędziem. Oficjalne repozytorium projektu: https://github.com/phpstan/phpstan.

Rate this post