ProHoster > Blog > nutizie internet > Liberazione di Salmu 3.12, un analizatore staticu per a lingua PHP. Liberazione Alpha di PHP 8.0
Liberazione di Salmu 3.12, un analizatore staticu per a lingua PHP. Liberazione Alpha di PHP 8.0
Cumpagnia Vimeo publicatu nova versione di l'analizzatore staticu Salmu 3.12, chì vi permette di identificà l'errori evidenti è sottili in u codice PHP, è ancu corregge automaticamente certi tipi d'errori. U sistema hè adattatu per identificà i prublemi sia in u codice legatu sia in u codice chì usa funzioni muderne introdutte in novi rami di PHP. U codice di u prugettu hè scrittu in PHP è distribuitu da sottu a licenza MIT.
U Salmu identifica a maiò parte di i prublemi assuciati cù l'usu di tipu incorrectu, è ancu diversi errori tipici. Per esempiu, sustene l'avvirtimenti nantu à mischjà variabili di diversi tipi in una espressione, testi logichi sbagliati (cum'è "se ($a && $a) {}", "if ($a && !$a) {}" è " if ($a) {} elseif ($a) {}"), inizializazione incompleta di pruprietà di l'ughjettu. L'analizzatore funziona in modu multi-threaded. Hè pussibule di realizà scans incrementali, chì analizanu solu i fugliali chì anu cambiatu da l'ultima scansione.
Inoltre, i strumenti di prugrammazione sicuri sò furniti per permette usu annotazioni in u furmatu Docblock ("/** @var Type */") per furnisce infurmazioni nantu à i tipi di variàbili, i valori di ritornu, i paràmetri di funzione, e proprietà di l'ughjettu. A definizione di mudelli d'usu di u tipu è l'usu di dichjarazioni assert sò ancu supportati. Per esempiu:
/** @var string|null */
$a = foo();
/** @var string $a */
echo strpos($a, 'ciao');
/** @psalm-assert-if-true B $a */
funzione isValidB(A $a): bool {
return $a istanza di B && $a->isValid();
}
Per automatizà l'eliminazione di i prublemi truvati, l'utilità Psalter hè furnita, chì sustene i plugins è si permette di risolve i prublemi di codice cumuni, aghjunghje annotazioni di tipu, è eseguisce manipulazioni cum'è u muvimentu di e classi da un spaziu di nomi à l'altru, u muvimentu di metudi trà e classi, è rinominà classi è metudi.
In u novu numeru di Salmu implementatu l'opzione "--taint-analysis" permette di tracciate a relazione trà i paràmetri di input ricevuti da l'utilizatore (per esempiu, $_GET ['name']) è u so usu in i posti chì necessitanu di scappà di caratteri (per esempiu, echo " $ nome "), ancu attraversu catene di seguimentu di assignazioni intermedie è chjama di funzione. L'usu di array associative $_GET, $_POST è $_COOKIE hè cunsideratu cum'è fonti di dati potenzialmente periculosi, ma hè ancu pussibule. definizione fonti proprie. L'azzioni chì necessitanu di fughje u seguimentu includenu operazioni di output chì generanu cuntenutu HTML, aghjunghje intestazioni HTTP, o eseguite dumande SQL.
A validazione hè aduprata quandu utilizate funzioni cum'è echo, exec, include è header. Quandu analizà a necessità di scappà, i tipi di dati cum'è u testu, stringhe cù codice SQL, HTML è Shell, strings cù paràmetri di autentificazione sò cunsiderate. U modu prupostu permette di identificà vulnerabili in u codice chì portanu à scripting cross-site (XSS) o injection SQL.
Inoltre, pò esse nutatu principiu test alfa di a nova filiera PHP 8.0. A liberazione hè prevista per u 26 di nuvembre. I seguenti sò previsti in a nova filiera: innovazioni, cum'è:
WeakMap per creà oggetti chì ponu esse sacrificati durante a cullizzioni di basura (per esempiu, per almacenà cache innecessarii).
uppurtunità usendu l'espressione "::class" per l'uggetti (analogicu à chjamà get_class()).
uppurtunità definizioni in u bloccu di catch di eccezzioni chì ùn sò micca ligati à variàbili.
uppurtunità lassannu una virgola dopu à l'ultimu elementu in a lista di i paràmetri di funzione.
Nova interfaccia Stringable per identificà ogni tipu di stringa o dati chì ponu esse cunvertiti in una stringa (per quale u metudu __toString() hè dispunibule).
Nova funzione str_contains(), un analogu simplificatu di strpos per determinà l'occurrence di una substringa, è ancu e funzioni str_starts_with () è str_ends_with () per verificà e partite à l'iniziu è a fine di una stringa.
Funzione aghjuntu fdiv(), chì rializeghja una operazione di divisione senza scaccià un errore quandu si divide per zero.
Cambiatu una logica di stringa. Per esempiu, l'espressione 'echo "sum:" . $a + $b' era prima interpretatu cum'è "echo ("sum: " . $a) + $b', è in PHP 8 serà trattatu cum'è "echo "sum: " . ($a + $b)'.
Strettu cuntrollà l'operazioni aritmetiche è di bit, per esempiu, l'espressioni "[] % [42]" è "$object + 4" seranu un errore.
Implementatu un algoritmu di classificazione stabile in quale l'ordine di i valori identichi hè cunservatu in diverse corse.