Dopu à sei anni di sviluppu, a prima liberazione stabile di l'analizzatore staticu PHPStan 1.0 hè stata fatta, chì permette di truvà l'errore in u codice PHP senza eseguisce è utilizendu teste unità. U codice di u prughjettu hè scrittu in PHP è distribuitu sottu a licenza MIT.
L'analizzatore furnisce 10 livelli di cuntrollu, in quale ogni livellu sussegwente allarga e capacità di u precedente è furnisce cuntrolli più stretti:
Esempii di prublemi sottostanti identificati:
- L'esistenza di classi aduprate in instanceof, catch, typehints è altre custruzzioni di lingua.
- L'esistenza è a dispunibilità di i metudi è e funzioni chjamati, è ancu u numeru di argumenti passati.
- Verificate chì u metudu torna dati cù u listessu tipu definitu in l'espressione di ritornu.
- L'esistenza è a visibilità di e pruprietà accede, è cuntrollà i tipi di dati dichjarati è attuali utilizati in e proprietà.
- U numaru di paràmetri passati à sprintf / printf chjama in u bloccu di furmatu di stringa hè currettu.
- L'esistenza di variàbili pigliate in contu i blocchi furmati da l'operatori di branching è i loops.
- Casti di tipu inutilità (per esempiu "(stringa) 'foo'") è testi stretti ("===" è "!==") nantu à dati cù diversi tipi è operandi chì sempre tornanu falsi.
Innuvazioni chjave in PHPStan 1.0:
- U nivellu di verificazione "9" hè statu implementatu, chì verifica l'usu di u tipu "mixed", destinatu à urganizà a ricezione di a funzione di paràmetri cù diversi tipi. U Livellu XNUMX identifica usi micca sicuri di "mistu", cum'è passà valori di tipu "mistu" à un altru tipu, chjamà metudi di tipu "mistu", è accede à e so proprietà perchè ùn esiste micca.
- Cuntrolla se i valori di ritornu sò identici per e chjama di funzioni identiche utilizendu l'annotazioni @phpstan-pure è @phpstan-impure.
- Analisi di tipu in custruzzioni try-catch-finally utilizendu annotazioni @throws.
- Identificazione di proprietà, metudi è custanti interni definiti ma micca utilizati.
- Passendu callbacks incompatibili à e funzioni di array cum'è array_map è usort.
- Ispezione di tipu per l'annotazioni di suggerimentu di tipu mancanti.
- Fate dichjarazioni di tipu cumpatibili cù PHPDocs, chì permettenu i tipi da i missaghji di errore per esse utilizati in PHPDocs.
Source: opennet.ru