Kutolewa kwa Zaburi 3.12, kichanganuzi tuli cha lugha ya PHP. Kutolewa kwa alpha kwa PHP 8.0

Kampuni ya Vimeo опубликовала toleo jipya la analyzer tuli Zaburi 3.12, ambayo hukuruhusu kutambua makosa ya wazi na ya hila katika nambari ya PHP, na pia kurekebisha kiotomati aina fulani za makosa. Mfumo unafaa kwa kutambua matatizo katika msimbo wa zamani na katika msimbo unaotumia vipengele vya kisasa vilivyoletwa katika matawi mapya ya PHP. Nambari ya mradi imeandikwa katika PHP na kusambazwa na chini ya leseni ya MIT.

Zaburi inabainisha matatizo mengi yanayohusiana na matumizi ya aina isiyo sahihi, pamoja na mbalimbali makosa ya kawaida. Kwa mfano, inasaidia maonyo kuhusu kuchanganya vigeu vya aina tofauti katika usemi, majaribio ya kimantiki yasiyo sahihi (kama vile “ikiwa ($a && $a) {}”, “ikiwa ($a && !$a) {}” na “ ikiwa ( $a) {} elseif ($a) {}"), uanzishaji usio kamili wa sifa za kitu. Kichanganuzi huendesha katika hali ya nyuzi nyingi. Inawezekana kufanya uchunguzi wa ziada, ambao unachambua faili tu ambazo zimebadilika tangu tambazo la mwisho.

Zaidi ya hayo, zana salama za programu hutolewa ili kuruhusu kutumia maelezo katika umbizo Docblock (“/** @var Aina */”) ili kutoa maelezo kuhusu aina tofauti, thamani za kurejesha, vigezo vya utendakazi, sifa za kitu. Kufafanua aina za mifumo ya utumiaji na kutumia kauli za kudai pia kunatumika. Kwa mfano:

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

/** @var string $a */
echo strpos($a, 'hello');

/** @zaburi-assert-kama-kweli B $a */
kazi isValidB(A $a) : bool {
return $a exampleof B && $a->isValid();
}

Ili kuharakisha uondoaji wa shida zilizopatikana, matumizi ya Psalter hutolewa, ambayo inasaidia programu-jalizi na inaruhusu suluhisha matatizo ya msimbo wa kawaida, ongeza maelezo ya aina, na utekeleze ghiliba kama vile kuhamisha madarasa kutoka nafasi moja ya majina hadi nyingine, kusogeza mbinu kati ya madarasa, na kubadilisha upya madarasa na mbinu.

Katika toleo jipya la Zaburi kutekelezwa chaguo la "--tant-analysis" hukuruhusu kufuatilia uhusiano kati ya vigezo vya ingizo vilivyopokelewa kutoka kwa mtumiaji (kwa mfano, $_GET['name']) na matumizi yao katika maeneo ambayo yanahitaji kutoroka kwa herufi (kwa mfano, echo " $jina "), ikijumuisha kupitia misururu ya ufuatiliaji wa kazi za kati na simu za utendaji. Matumizi ya safu shirikishi $_GET, $_POST na $_COOKIE inachukuliwa kuwa vyanzo vya data inayoweza kuwa hatari, lakini pia inawezekana. ufafanuzi vyanzo mwenyewe. Vitendo vinavyohitaji ufuatiliaji wa kuepuka ni pamoja na shughuli za kutoa zinazozalisha maudhui ya HTML, kuongeza vichwa vya HTTP, au kutekeleza hoja za SQL.

Uthibitishaji hutumika wakati wa kutumia vitendakazi kama vile mwangwi, kutekeleza, pamoja na kichwa. Wakati wa kuchanganua hitaji la kutoroka, aina za data kama vile maandishi, mifuatano yenye SQL, HTML na msimbo wa Shell, mifuatano yenye vigezo vya uthibitishaji huzingatiwa. Hali inayopendekezwa hukuruhusu kutambua udhaifu katika msimbo unaosababisha uandishi wa tovuti mbalimbali (XSS) au uingizwaji wa SQL.

Kwa kuongeza, inaweza kuzingatiwa mwanzo majaribio ya alpha ya tawi jipya la PHP 8.0. Toleo hilo limepangwa Novemba 26. Yafuatayo yanatarajiwa katika tawi jipya: ubunifuKama:

  • Ushirikishwaji Mkusanyaji wa JIT, matumizi ambayo yataboresha tija.
  • Support aina za muungano, ikifafanua mikusanyiko ya aina mbili au zaidi (kwa mfano, "funzo za umma foo(Foo|Bar $input): int|float;").
  • Support sifa (ufafanuzi) unaokuruhusu kufunga metadata (kama vile maelezo ya aina) kwa madarasa bila kutumia syntax ya Docblock.
  • Sintaksia iliyofupishwa ufafanuzi wa darasa, hukuruhusu kuchanganya ufafanuzi wa mjenzi na mali.
  • Aina mpya ya kurudi - tuli.
  • Aina mpya - mchanganyiko, ambayo inaweza kutumika kubainisha kama chaguo za kukokotoa hukubali vigezo vya aina tofauti.
  • Kuonyesha kutupa kushughulikia ubaguzi.
  • WeakMap kuunda vitu vinavyoweza kutolewa wakati wa kukusanya takataka (kwa mfano, kuhifadhi cache zisizohitajika).
  • Fursa kwa kutumia usemi "::class" kwa vitu (sawa na kupiga get_class()).
  • Fursa ufafanuzi katika kizuizi cha kukamata cha tofauti ambazo hazifungwi na vigeuzo.
  • Fursa kuacha koma baada ya kipengele cha mwisho katika orodha ya vigezo vya kazi.
  • Kiolesura kipya Inayowezekana kutambua aina zozote za mfuatano au data inayoweza kubadilishwa kuwa mfuatano (ambayo mbinu ya __toString() inapatikana).
  • Kipengele kipya str_contains(), analogi iliyorahisishwa ya strpos ya kubaini kutokea kwa kamba ndogo, na vile vile chaguo za kukokotoa str_starts_with() na str_ends_with() za kuangalia mechi mwanzoni na mwisho wa mfuatano.
  • Kipengele kilichoongezwa fdiv(), ambayo hufanya operesheni ya mgawanyiko bila kutupa kosa wakati wa kugawanya kwa sifuri.
  • Imebadilishwa mantiki ya kuunganisha kamba. Kwa mfano, usemi 'echo "jumla:" . $a + $b' hapo awali ilifasiriwa kama 'echo ("sum: " . $a) + $b', na katika PHP 8 itachukuliwa kama 'echo "sum: " . ($a + $b)'.
  • Imekazwa kuangalia shughuli za hesabu na biti, kwa mfano, maneno "[] % [42]" na "$object + 4" yatasababisha hitilafu.
  • Imetekelezwa algorithm thabiti ya kupanga ambayo mpangilio wa maadili sawa huhifadhiwa kwa njia tofauti.

Chanzo: opennet.ru

Kuongeza maoni