Uscita di PHPStan 1.0, analizzatore statico per codice PHP

Dopo sei anni di sviluppo è stata rilasciata la prima versione stabile dell'analizzatore statico PHPStan 1.0, che consente di trovare errori nel codice PHP senza eseguirlo e senza utilizzare unit test. Il codice del progetto è scritto in PHP e viene distribuito con licenza MIT.

L'analizzatore offre 10 livelli di verifica, in cui ogni livello successivo amplia le possibilità del precedente e fornisce controlli più rigorosi:

  • Controlli di base, identificazione di classi, funzioni e metodi sconosciuti ($this), variabili non definite e passaggio di un numero errato di argomenti.
  • Identificazione di variabili potenzialmente non definite, metodi magic sconosciuti e proprietà delle classi con __call e __get.
  • Identificazione di metodi sconosciuti in tutte le espressioni, non limitandosi alla chiamata tramite $this. Verifica dei PHPDocs.
  • Verifica dei tipi di ritorno e assegnazione dei tipi alle proprietà.
  • Identificazione di codice 'morto' (mai invocato). Identificazione di chiamate instanceof che restituiscono sempre false, blocchi 'else' mai attivati e codice presente dopo return.
  • Verifica dei tipi degli argomenti passati a metodi e funzioni.
  • Avviso in caso di assenza di annotazioni con informazioni sui tipi.
  • Avviso riguardo ai tipi union non corretti, che definiscono collezioni di due o più tipi.
  • Avviso riguardo alla chiamata di metodi e accesso a proprietà con tipi 'nullable'.
  • Verifica dell'uso del tipo 'mixed'.

    Esempi di problemi di base identificabili:

    • Esistenza di classi utilizzate in instanceof, catch, typehints e altre strutture linguistiche.
    • Esistenza e accessibilità di metodi e funzioni richiamabili, nonché numero di argomenti passati.
    • Verifica che i dati restituiti da un metodo abbiano lo stesso tipo definito nell'espressione return.
    • Esistenza e visibilità delle proprietà a cui si accede, oltre alla verifica dei tipi dichiarati e reali dei dati utilizzati nelle proprietà.
    • Correttezza del numero di parametri passati alle chiamate sprintf/printf nel blocco di formattazione delle stringhe.
    • Esistenza di variabili tenendo conto dei blocchi formati da operatori di branching e cicli.
    • Conversioni di tipo inutili (ad esempio, '(string) 'foo'') e verifiche rigorose ('===' e '!==') dei dati con tipi e operatori diversi, che restituiscono sempre false.

    Innovazioni chiave di PHPStan 1.0:

    • È stato implementato il livello di verifica «9», che esegue controlli sull'uso del tipo «mixed», destinato ad organizzare l'accettazione di parametri di funzione con tipi diversi. Il nono livello rileva pratiche di utilizzo «mixed» non sicure, come la trasmissione di valori di tipo «mixed» ad un altro tipo, la chiamata di metodi con tipo «mixed» e l'accesso alle sue proprietà, poiché potrebbero non esistere.
    • Gestione della verifica dell'identità dei valori restituiti per chiamate di funzioni identiche usando le annotazioni @phpstan-pure e @phpstan-impure.
    • Analisi dei tipi nelle strutture try-catch-finally utilizzando le annotazioni @throws.
    • Identificazione di proprietà, metodi e costanti interni (private) specifici ma non utilizzati.
    • Trasmissione di chiamate di callback incompatibili in funzioni di lavoro con array, come array_map e usort.
    • Ispezione dei tipi per annotazioni typehint mancanti.
    • È garantita la compatibilità delle descrizioni dei tipi con PHPDocs, consentendo di utilizzare in PHPDocs tipi dai messaggi di errore.

    Fonte: opennet.ru

  • Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster