fbpx

Jakość ma znaczenie – PHPStan

phpstan

Jakość ma znaczenie – PHPStan

Gdy planowałam ten artykuł, miał on być porównaniem dwóch narzędzi jakimi są PHPStan i Code Sniffer. Jednak podczas pisania zrobił się z tego tekstu taki kolos. Doszłam do wniosku, że na bank odpadniecie czytając go i wcale nie zachęcę nim do dbania o jakość kodu. Dlatego powstanie kilka artykułów na ten temat w serii Jakość ma znaczenie, w których będę pokazywać Wam narzędzia, które pomagają mi na co dzień dbać o jakość kodu.

Na pierwszy ogień idzie PHP Stan. Jest to narzędzie, które poznałam niedawno, jednak od samego początku skradło moje serce, dlaczego? Z kilku powodów. Po pierwsze instalacja w projekcie jest banalnie prosta, wpięcie w Phinga jeszcze prostsze, nie wspomnę nawet o konfiguracji, którą każdy będzie w stanie zrobić dosłownie w parę minut. Tym sposobem bardzo małym kosztem nie tylko podniesiemy jakość naszego kodu w projekcie, ale także pomożemy innym zrobić to samo poprzez drobne i proste automatyzacje. Dodatkowo zapewniając jednolitość standardów w zespole.

Instalacja

Do instalacji paczki potrzebujemy jedynie composera. Zalecam jej instalację tylko na środowiskach deweloperskich, ponieważ nie ma potrzeby mieć dostęp do niego na produkcji.

composer require --dev phpstan/phpstan

Po zainstalowaniu paczki w folderze bin, pojawi się skrypt phpstan, który pozwoli nam na odpalenie analizy naszego kodu.

Jak używać PHPStan?

Po instalacji od razu mamy dostępne kilka komend, jednak najistotniejszą jest komenda analyse. To ona uruchamia analizę naszego kodu. Jednak, żeby zadziałała poprawnie, musimy podać ścieżki, które ma przeanalizować. Zwykle analizuje się jedynie nasz własny kod, czyli ten tworzony przez zespół, który znajduje się w folderach src/ oraz tests/. Nasza komenda będzie wyglądać następująco:

bin/phpstan analyse src tests

Prawdopodobnie, jeśli to pierwsze uruchomienie tego narzędzia w projekcie, który ma już jakiś kod, pojawią się błędy. Jednak będą to błędy bardzo błahe np. błędna ilość argumentów, złe typowanie w dokumentacji, czy problemy z konstruktorem. Te błędy prawdopodobnie nie wywoływały większych konsekwencji do tej pory i pewnie jeszcze długo byśmy ich nie znaleźli.

To jednak nie wszystko!

PHP Stan definiuje kilka poziomów analizy błędów. Ten, który jest uruchamiany domyślnie to poziom 0. Wszystkich jest aż 8(0-7). Żeby uruchomić konkretny poziom wystarczy podczas wywoływania komendy analizującej dodać parametr:

bin/phpstan analyse src tests --level 0(0-7 lub max)

Dla porównania w mojej aplikacji pisanej od pół roku, która jest stosunkowo niewielka uruchomiłam z ciekawości analizę właśnie na wspomnianych dwóch folderach. Poziom domyślny wykazał mi jeden bardzo drobny błąd z konstruktorem. Jednak z kiedy uruchomiłam analizę na maksymalnym poziomie dostałam aż 206 błędów. Były to błędy typowania, zmiennych itp.

Oczywiście nie popadajmy w paranoje. Kto ma ambicje mieć 100% poprawności na maksymalnym poziomie i ją utrzymać to trzymam kciuki i biję brawo. Jednak, jeśli osiągniesz poprawność na poziomie 3 lub 4 to będzie całkowicie wystarczające, aby poczuć różnicę w późniejszym utrzymywaniu projektu.

Uruchomienie w Phingu

Wszystkie narzędzia do analizy kodu możemy uruchomić w trakcie budowania aplikacji. Oprócz Code Sniffera analogicznie można wpiąć analizę PHPStan. Jest to bardzo proste, wystarczy zdeklarować poniższy scenariusz, wprowadzając parametry jakie Ci odpowiadają.

<target name="check:phpstan" description="PHPStan checker">
         <echo msg="Running phpstan..."/>
         <exec command="bin/phpstan analyse src tests --level 3"
               checkreturn="true"
               logoutput="true"
               passthru="true"
         >
         </exec>
</target> 

Jeśli zainteresowało Cię to narzędzie i czujesz niedosyt, to mam dla Ciebie dobrą wiadomość. Dokumentacja na githubie jest bardzo przyjemna i myślę, że odpowie na większość Twoich pytań. Gdybyś jednak miał dodatkowe pytania to dawaj znać w komentarzu, z chęcią odpowiem, a może nawet powstania kolejny tekst rozszerzający ten temat.

Zgarnij darmowy ebook i cotygodniową dawkę wiedzy

.
Magdalena Limanówka-Kuciel
magdalena@panizkomputerem.pl

Jestem programistką, która lubi mieć ręce pełne roboty. Do życia potrzebuje komputera z internetem i kubka gorącej kawy. Więcej na stronie o mnie.