Nakon šest godina razvoja, objavljeno je prvo stabilno izdanje PHPStan 1.0, statičkog analizatora. Omogućuje vam pronalaženje grešaka u PHP kodu bez njegovog izvršavanja ili korištenja jediničnih testova. Kod projekta napisan je u PHP-u i distribuira se pod MIT licencom.
Analizator nudi 10 razina provjere, pri čemu svaka sljedeća razina proširuje mogućnosti prethodne i pruža strože provjere:
Primjeri utvrđenih temeljnih problema:
- Postojanje klasa korištenih u instanceof, catch, typehints i drugim jezičnim konstrukcijama.
- Postojanje i dostupnost metoda i funkcija koje se pozivaju, kao i broj argumenata koji se prosljeđuju.
- Provjerava vraća li metoda podatke istog tipa kao što je definirano u naredbi return.
- Postojanje i vidljivost svojstava kojima se pristupa te provjera deklariranih i stvarnih tipova podataka korištenih u svojstvima.
- Ispravan broj parametara proslijeđenih pozivima sprintf/printf u bloku formata stringa.
- Postojanje varijabli uzimajući u obzir blokove formirane operatorima grananja i petljama.
- Beskorisna pretvaranja tipova (npr. "(string) 'foo'") i stroge provjere ("===" i "!==") na podacima s različitim tipovima i operandima koje uvijek vraćaju false.
Ključne značajke PHPStan-a 1.0:
- Implementirana je razina validacije "9" koja provjerava upotrebu tipa "mixed", koji je dizajniran za prilagođavanje funkcijama koje prihvaćaju parametre različitih tipova. Razina 9 otkriva nesigurnu upotrebu tipa "mixed", kao što je prenošenje vrijednosti tipa "mixed" drugom tipu, pozivanje metoda tipa "mixed" i pristup njegovim svojstvima, budući da možda ne postoje.
- Kontroliranje provjere identičnih povratnih vrijednosti za identične pozive funkcija pomoću anotacija @phpstan-pure i @phpstan-impure.
- Analiza tipova u try-catch-finally konstrukcijama korištenjem @throws anotacija.
- Identificiranje definiranih, ali nekorištenih internih (privatnih) svojstava, metoda i konstanti.
- Prosljeđivanje nekompatibilnih povratnih funkcija funkcijama za rukovanje nizovima kao što su array_map i usort.
- Pregledajte tipove za nedostajuće anotacije s napomenama o tipu.
- Opisi tipova sada su kompatibilni s PHPDocsom, što vam omogućuje korištenje tipova iz poruka o pogreškama u PHPDocsu.
Izvor: opennet.ru
