Vimeo Társaság statikus analizátor új kiadása , amely lehetővé teszi a PHP-kód nyilvánvaló és finom hibáinak azonosítását, valamint bizonyos típusú hibák automatikus kijavítását. A rendszer alkalmas mind a régebbi, mind a PHP új ágaiban bevezetett modern szolgáltatásokat használó kódok problémáinak azonosítására. A projekt kódja PHP és az MIT engedélye alapján.
A Zsoltár azonosítja a legtöbb, a helytelen típushasználattal kapcsolatos problémát, valamint különféle . Például támogatja a figyelmeztetéseket a különböző típusú változók egy kifejezésben való keverésére, a helytelen logikai teszteket (például „if ($a && $a) {}”, „if ($a && !$a) {}” és „ if ( $a) {} elseif ($a) {}"), az objektumtulajdonságok hiányos inicializálása. Az analizátor többszálas üzemmódban működik. Lehetőség van növekményes ellenőrzések végrehajtására, amelyek csak azokat a fájlokat elemzik, amelyek az utolsó vizsgálat óta megváltoztak.
Ezenkívül biztonságos programozási eszközök állnak rendelkezésre, amelyek lehetővé teszik megjegyzéseket a formátumban (“/** @var Type */”), hogy információkat adjon a változótípusokról, visszatérési értékekről, függvényparaméterekről és objektumtulajdonságokról. A típushasználati minták meghatározása és az assert utasítások használata szintén támogatott. Például:
/** @var string|null */
$a = foo();
/** @var string $a */
echo strpos($a, 'hello');
/** @psalm-assert-if-true B $a */
function isValidB(A $a) : bool {
return $a példánya B && $a->isValid();
}
A talált problémák kiküszöbölésének automatizálásához rendelkezésre áll a Psalter segédprogram, amely támogatja a bővítményeket és a Elháríthatja a gyakori kódproblémákat, hozzáadhat típusjegyzeteket, és olyan manipulációkat hajthat végre, mint például osztályok áthelyezése egyik névtérből a másikba, metódusok áthelyezése az osztályok között, valamint osztályok és metódusok átnevezése.
A Zsoltár új számában a "--taint-analysis" opció lehetővé teszi a felhasználótól kapott bemeneti paraméterek (például $_GET['name']) és azok használatának követését azokon a helyeken, ahol szükség van karakterkihagyásra (például echo " $név "), beleértve a közbenső hozzárendelések és funkcióhívások nyomkövetési láncait is. A $_GET, $_POST és $_COOKIE asszociatív tömbök használata potenciálisan veszélyes adatok forrásának tekinthető, de ez is lehetséges saját források. A megmenekülést igénylő műveletek közé tartoznak azok a kimeneti műveletek, amelyek HTML-tartalmat generálnak, HTTP-fejléceket adnak hozzá, vagy SQL-lekérdezéseket hajtanak végre.
Az érvényesítés olyan függvények használatakor használatos, mint az echo, exec, include és header. A menekülés szükségességének elemzésekor figyelembe veszik az olyan adattípusokat, mint a szöveg, SQL-, HTML- és Shell-kóddal rendelkező karakterláncok, hitelesítési paraméterekkel rendelkező karakterláncok. A javasolt mód lehetővé teszi a kód azon sérülékenységeinek azonosítását, amelyek webhelyek közötti parancsfájl-kezeléshez (XSS) vagy SQL-helyettesítéshez vezetnek.
Ezenkívül meg lehet jegyezni az új PHP 8.0 ág alfa tesztelése. A megjelenés november 26-ra várható. Az új fiókban a következők várhatók: As:
- , amelyek használata javítja a termelékenységet.
- Támogatás , amely két vagy több típusú gyűjteményt határoz meg (például „public function foo(Foo|Bar $input): int|float;”).
- Támogatás (annotációk), amelyek lehetővé teszik metaadatok (például típusinformációk) osztályokhoz való kötését Docblock szintaxis használata nélkül.
- osztálydefiníciókat, lehetővé téve a konstruktor definíciójának és a tulajdonságok kombinálását.
- Új visszaküldési típus - .
- Új típus - , amellyel megállapítható, hogy egy függvény elfogad-e különböző típusú paramétereket.
- kifejezés a kivételek kezelésére.
- szemétgyűjtés során feláldozható objektumok létrehozására (például szükségtelen gyorsítótárak tárolására).
- a „::class” kifejezést használva az objektumokhoz (a get_class() hívásához hasonlóan).
- definíciók a változókhoz nem kötött kivételek fogási blokkjában.
- a függvényparaméterek listájában az utolsó elem után vesszőt hagyva.
- Új felület hogy azonosítsa azokat a karakterlánctípusokat vagy adatokat, amelyek karakterláncokká alakíthatók (amelyhez elérhető a __toString() metódus).
- Új funkció , az strpos egyszerűsített analógja egy részkarakterlánc előfordulásának meghatározására, valamint az str_starts_with() és str_ends_with() függvények a karakterlánc elején és végén lévő egyezések ellenőrzésére.
- Funkció hozzáadva , amely osztási műveletet hajt végre anélkül, hogy hibát dobna, ha nullával osztjuk.
- karakterlánc-csatlakozási logika. Például az 'echo "sum:" kifejezés. Az $a + $b' korábban 'echo ("sum: " . $a) + $b'-ként volt értelmezve, a PHP 8-ban pedig 'echo "sum: "-ként fog kezelni. ($a + $b)”.
- az aritmetikai és bitműveletek ellenőrzése, például a "[] % [42]" és a "$object + 4" kifejezések hibát eredményeznek.
- egy stabil rendezési algoritmus, amelyben az azonos értékek sorrendje megőrződik a különböző futtatások során.
Forrás: opennet.ru
