Nakon šest godina razvoja, došlo je do prvog stabilnog izdanja statičkog analizatora PHPStan 1.0, koji vam omogućuje pronalaženje grešaka u PHP kodu bez njegovog izvršavanja i korištenja jediničnih testova. Kôd projekta je napisan u PHP-u i distribuiran pod licencom MIT-a.
Analizator nudi 10 razina provjere, pri čemu svaka sljedeća razina proširuje mogućnosti prethodne i pruža strože provjere:
Primjeri identificiranih temeljnih problema:
- Postojanje klasa koje se koriste u instanceof, catch, typehints i drugim jezičnim konstrukcijama.
- Postojanje i dostupnost pozvanih metoda i funkcija, kao i broj proslijeđenih argumenata.
- Provjera vraća li metoda podatke iste vrste kao što je definirano u povratnom izrazu.
- Postojanje i vidljivost svojstava kojima se pristupa te provjera deklariranih i stvarnih tipova podataka koji se koriste u svojstvima.
- Broj parametara proslijeđenih pozivima sprintf/printf u bloku za oblikovanje niza je točan.
- Postojanje varijabli uzimajući u obzir blokove formirane operatorima grananja i petljama.
- Beskorisni tipovi (npr. "(string) 'foo'") i strogi testovi ("===" i "!==") na podacima s različitim tipovima i operandima koji uvijek vraćaju false.
Ključne inovacije u PHPStan 1.0:
- Implementirana je razina provjere "9", koja provjerava korištenje "mješovitog" tipa, namijenjenog organiziranju prijema parametara s različitim tipovima funkcije. Razina devet identificira nesigurne upotrebe "mixed", kao što je prosljeđivanje vrijednosti tipa "mixed" drugom tipu, pozivanje metoda tipa "mixed" i pristupanje njegovim svojstvima jer ona možda ne postoje.
- Kontrolirajte jesu li povratne vrijednosti identične za identične pozive funkcija pomoću napomena @phpstan-pure i @phpstan-impure.
- Analiza tipa u konstrukcijama try-catch-finally pomoću @throws komentara.
- Identifikacija definiranih ali nekorištenih internih (privatnih) svojstava, metoda i konstanti.
- Prosljeđivanje nekompatibilnih povratnih poziva funkcijama polja kao što su array_map i usort.
- Provjera tipa za nedostajuće primjedbe typehinta.
- Napravljene su deklaracije tipa kompatibilne s PHPDocsom, dopuštajući da se tipovi iz poruka o pogrešci koriste u PHPDocsu.
Izvor: opennet.ru