Gefa út Sálm 3.12, kyrrstöðugreiningartæki fyrir PHP tungumálið. Alfa útgáfa af PHP 8.0

Vimeo fyrirtæki опубликовала ný útgáfa af kyrrstöðugreiningartæki Sálmarnir 3.12, sem gerir þér kleift að bera kennsl á bæði augljósar og lúmskar villur í PHP kóða, sem og sjálfkrafa leiðrétta sumar tegundir villna. Kerfið hentar til að bera kennsl á vandamál bæði í eldri kóða og kóða sem notar nútíma eiginleika sem kynntir eru í nýjum greinum PHP. Verkefniskóðinn er skrifaður í PHP og dreift af undir MIT leyfi.

Sálmurinn greinir flest vandamálin sem tengjast rangri leturnotkun, auk ýmissa dæmigerð mistök. Til dæmis styður það viðvaranir um að blanda breytum af mismunandi gerðum í segð, röng rökræn próf (eins og „ef ($a && $a) {}“, „if ($a && !$a) {}“ og „ if ( $a) {} elseif ($a) {}"), ófullkomin frumstilling á eiginleikum hlutar. Greiningartækið keyrir í fjölþráðum ham. Það er hægt að framkvæma stigvaxandi skannanir, sem greina aðeins skrár sem hafa breyst frá síðustu skönnun.

Að auki eru örugg forritunarverkfæri til staðar til að leyfa nota athugasemdir í formi Docblock (“/** @var Type */”) til að veita upplýsingar um breytugerðir, skilgildi, fallfæribreytur, hlutareiginleika. Einnig er stutt við að skilgreina notkunarmynstur tegunda og nota fullyrðingar. Til dæmis:

/** @var strengur|null */
$a = foo();

/** @var strengur $a */
echo strpos($a, 'halló');

/** @psalm-sert-ef-true B $a */
fall isValidB(A $a): bool {
skila $a tilviki B && $a->isValid();
}

Til að gera sjálfvirkan útrýming á fundnum vandamálum er Psalter tólið til staðar, sem styður viðbætur og gerir leysa algeng kóðavandamál, bæta við tegundaskýringum og framkvæma meðhöndlun eins og að færa flokka frá einu nafnrými í annað, færa aðferðir á milli flokka og endurnefna flokka og aðferðir.

Í nýju hefti Sálms komið til framkvæmda "--taint-analysis" valmöguleikinn gerir þér kleift að rekja sambandið milli inntaksbreyta sem berast frá notanda (til dæmis $_GET['nafn']) og notkun þeirra á stöðum sem krefjast þess að stafa sleppi (til dæmis, echo " $nafn "), þar á meðal í gegnum rekja keðjur milliverkefna og aðgerðarkalla. Notkun á tengdum fylkjum $_GET, $_POST og $_COOKIE er talin uppspretta hugsanlega hættulegra gagna, en það er líka mögulegt ákvörðun um eigin heimildum. Aðgerðir sem krefjast sleppirakningar fela í sér úttaksaðgerðir sem búa til HTML efni, bæta við HTTP hausum eða framkvæma SQL fyrirspurnir.

Staðfesting er notuð þegar notuð eru aðgerðir eins og echo, exec, include og header. Við greiningu á þörfinni fyrir flótta er tekið tillit til gagnategunda eins og texta, strengja með SQL, HTML og Shell kóða, strengi með auðkenningarfæribreytum. Fyrirhuguð háttur gerir þér kleift að bera kennsl á veikleika í kóðanum sem leiða til forskrifta á milli vefsvæða (XSS) eða SQL-skipta.

Auk þess má geta þess Byrja alfa prófun á nýju PHP 8.0 útibúinu. Stefnt er að útgáfu 26. nóvember. Eftirfarandi er væntanlegt í nýja útibúið: nýjungarSem:

  • Aðlögun JIT þýðanda, sem mun auka framleiðni.
  • Stuðningur tegundir stéttarfélaga, skilgreina söfn af tveimur eða fleiri gerðum (til dæmis „public function foo(Foo|Bar $input): int|float;“).
  • Stuðningur eiginleikar (skýringar) sem gera þér kleift að binda lýsigögn (eins og tegundarupplýsingar) við flokka án þess að nota Docblock setningafræði.
  • Stytt setningafræði flokkaskilgreiningar, sem gerir þér kleift að sameina skilgreiningu byggingaraðila og eiginleika.
  • Ný skilategund - truflanir.
  • Ný tegund - blandað, sem hægt er að nota til að ákvarða hvort fall tekur við breytum af mismunandi gerðum.
  • Tjáning kasta að sinna undantekningum.
  • Veikt kort að búa til hluti sem hægt er að fórna við sorphirðu (til dæmis til að geyma óþarfa skyndiminni).
  • Tækifæri með því að nota orðatiltækið “::class” fyrir hluti (samlíkt því að kalla get_class()).
  • Tækifæri skilgreiningar í aflaflokki undantekninga sem ekki eru bundnar breytum.
  • Tækifæri skilja eftir kommu á eftir síðasta stakinu í listanum yfir fallfæribreytur.
  • Nýtt viðmót Strengjanlegt til að bera kennsl á allar strengjagerðir eða gögn sem hægt er að breyta í streng (sem __toString() aðferðin er tiltæk fyrir).
  • Nýr eiginleiki str_inniheldur(), einfölduð hliðstæða strpos til að ákvarða tilvik undirstrengs, sem og föllin str_starts_with() og str_ends_with() til að athuga samsvörun í upphafi og lok strengs.
  • Bætt við eiginleika fdiv(), sem framkvæmir deilingaraðgerð án þess að kasta villu þegar deilt er með núll.
  • Breytt strengjatengingarrökfræði. Til dæmis, orðatiltækið ' echo "summa:" . $a + $b' var áður túlkað sem 'echo ("summa: " . $a) + $b', og í PHP 8 verður meðhöndlað sem 'echo "summa: " . ($a + $b)'.
  • Hert að athuga reikninga og bitaaðgerðir, til dæmis, orðatiltækin „[] % [42]“ og „$object + 4“ munu leiða til villu.
  • Framkvæmt stöðugt flokkunaralgrím þar sem röð sömu gilda er varðveitt í mismunandi keyrslum.

Heimild: opennet.ru

Bæta við athugasemd