Uscita di PHPStan 1.0, un 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 ed è distribuito sotto licenza MIT.

L'analizzatore offre 10 livelli di verifica, ognuno dei quali espande le capacità del precedente e fornisce controlli più rigorosi:

  • Controlli di base, identificazione di classi, funzioni e metodi sconosciuti ($this), variabili non definite, oltre al passaggio di un numero errato di argomenti.
  • Identificazione di variabili probabilmente non definite, metodi magici sconosciuti e proprietà di 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à.
  • Rilevamento di codice 'morto' (mai invocato). Identificazione di chiamate instanceof che restituiscono sempre false, blocchi 'else' che non si attivano mai e codice che si trova dopo un return.
  • Verifica dei tipi di argomenti passati a metodi e funzioni.
  • Avviso per la mancanza di annotazioni informative sui tipi.
  • Avviso sui union-type non validi che definiscono collezioni di due o più tipi.
  • Avviso su chiamate di metodi e accesso a proprietà con tipi 'nullable'.
  • Verifica dell'uso del tipo 'mixed'.

    Esempi di problemi di base identificati:

    • Esistenza di classi utilizzate in instanceof, catch, typehints e altre costrutti linguistici.
    • Esistenza e accessibilità dei metodi e delle funzioni chiamabili, oltre al numero di argomenti passati.
    • Verifica del ritorno di dati da un metodo con lo stesso tipo definito nell'espressione return.
    • Esistenza e visibilità delle proprietà a cui si accede, oltre alla verifica dei tipi dichiarati e reali 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 generati dai comandi di branching e dai cicli.
    • Conversioni di tipo inutili (ad esempio, '(string) ‘foo’') e verifiche rigorose ('===' e '!==') di dati con tipi e operatori diversi, che restituiscono sempre false.

    Novità chiave di PHPStan 1.0:

    • È stato implementato un livello di verifica '9', che effettua controlli sull'uso del tipo 'mixed', destinato a gestire l'accettazione di parametri di funzione con tipi diversi. Il nono livello rileva pratiche non sicure nell'uso del 'mixed', come la trasmissione di valori di tipo 'mixed' a un altro tipo, la chiamata di metodi con tipo 'mixed' e l'accesso alle sue proprietà, poiché potrebbero non esistere.
    • Gestione della verifica di identità dei valori restituiti per chiamate a funzioni identiche utilizzando 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) definite ma non utilizzate.
    • Passaggio di callback incompatibili a funzioni di manipolazione degli array, come array_map e usort.
    • Ispezione dei tipi per annotazioni typehint mancanti.
    • Garantita la compatibilità delle descrizioni dei tipi con i PHPDocs, consentendo l'uso in PHPDocs di tipi provenienti dai messaggi di errore.

    Fonte: opennet.ru

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