Liberazione di PHPStan 1.0, un analizzatore staticu per u codice PHP

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:

  • Cuntrolli basi, definisce classi scunnisciuti, funzioni è metudi ($this), variabili indefiniti, è passendu u numeru sbagliatu di argumenti.
  • Identificà variabili possibbilmente indefiniti, metudi magichi scunnisciuti è proprietà di classi cù __call è __get.
  • Rilevazione di metudi scunnisciuti in tutte l'espressioni, micca limitati à e chjama via $this. Verificate PHPDocs.
  • Cuntrollà i tipi di ritornu è assignà tipi à e pruprietà.
  • Identificazione basica di codice "mortu" (mai chjamatu). Identificà l'istanza di chjamate chì tornanu sempre falsi, blocchi "altri" chì ùn sparanu mai, è codice dopu ritornu.
  • Verificate i tipi di argumenti passati à i metudi è e funzioni.
  • Avvisu annantu à l'annotazioni d'infurmazioni di tippu mancanti.
  • Avvisu nantu à i tipi di unioni sbagliati chì definiscenu cullezzione di dui o più tipi.
  • Avvisu nantu à i metudi di chjamà è accede à e pruprietà cù tipi "nullable".
  • Verificate l'usu di u tipu "mixed".

    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

  • Add a comment