Rilis Jabur 3.12, analisa statis kanggo basa PHP. Alpha release PHP 8.0

Perusahaan Vimeo diterbitake release anyar saka analyzer statis Jabur 3.12, sing ngidini sampeyan ngenali kesalahan sing jelas lan subtle ing kode PHP, uga kanthi otomatis mbenerake sawetara jinis kesalahan. Sistem iki cocok kanggo ngenali masalah ing kode warisan lan kode sing nggunakake fitur modern sing dikenalake ing cabang PHP anyar. Kode project ditulis ing PHP lan disebarake dening miturut lisensi MIT.

Jabur ngenali umume masalah sing ana gandhengane karo panggunaan jinis sing salah, uga macem-macem kesalahane khas. Contone, ndhukung bebaya babagan nyampur variabel saka macem-macem jinis ing ekspresi, tes logis sing salah (kayata "yen ($a && $a) {}", "yen ($a && !$a) {}" lan " yen ($a) {} elseif ($a) {}"), initialization ora lengkap sifat obyek. Analyzer mlaku ing mode multi-threaded. Sampeyan bisa nindakake scan tambahan, sing mung nganalisa file sing wis diganti wiwit pindai pungkasan.

Kajaba iku, alat pamrograman sing aman diwenehake kanggo ngidini nggunakake anotasi ing format Docblock (β€œ/** @var Type */”) kanggo nyedhiyakake informasi babagan jinis variabel, nilai bali, parameter fungsi, properti obyek. Nemtokake pola panggunaan jinis lan nggunakake pernyataan tegas uga didhukung. Tuladhane:

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

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

/** @masmur-menegas-yen-bener B $a */
function isValidB(A $a): bool {
bali $a instanceof B && $a-> isValid();
}

Kanggo ngotomatisasi ngilangi masalah sing ditemokake, sarana Psalter diwenehake, sing ndhukung plugin lan Nanging ngidini troubleshoot masalah kode umum, nambah jinis anotasi, lan nindakake manipulasi kayata mindhah kelas saka siji namespace liyane, cara obah antarane kelas, lan ngganti jeneng kelas lan cara.

Ing edisi anyar Jabur dileksanakake opsi "--taint-analysis" ngidini sampeyan nglacak hubungan antarane paramèter input sing ditampa saka pangguna (contone, $_GET['jeneng']) lan panggunaane ing panggonan sing mbutuhake karakter uwal (contone, echo " $jeneng "), kalebu liwat rantai nelusuri tugas penengah lan telpon fungsi. Panganggone array asosiatif $_GET, $_POST lan $_COOKIE dianggep minangka sumber data sing bisa mbebayani, nanging bisa uga. definisi sumber dhewe. Tindakan sing mbutuhake pelacakan mlayu kalebu operasi output sing ngasilake konten HTML, nambah header HTTP, utawa nglakokake pitakon SQL.

Validasi digunakake nalika nggunakake fungsi kayata gema, exec, kalebu lan header. Nalika nganalisa perlu kanggo uwal, jinis data kayata teks, strings karo SQL, HTML lan kode Shell, strings karo paramèter otentikasi dianggep. Mode sing diusulake ngidini sampeyan ngenali kerentanan ing kode sing nyebabake skrip lintas situs (XSS) utawa substitusi SQL.

Kajaba iku, bisa dicathet wiwitan testing alpha saka cabang PHP 8.0 anyar. Rilis kasebut dijadwalake tanggal 26 November. Ing ngisor iki samesthine ing cabang anyar: inovasi, minangka:

  • Nggawe JIT compiler, panggunaan sing bakal nambah produktivitas.
  • support jinis union, nemtokake koleksi saka loro utawa luwih jinis (contone, "fungsi umum foo (Foo|Bar $ input): int|float;").
  • support atribut (anotasi) sing ngidini sampeyan ngiket metadata (kayata jinis informasi) menyang kelas tanpa nggunakake sintaks Docblock.
  • Sintaks sing disingkat definisi kelas, ngijini sampeyan kanggo gabungke definisi konstruktor lan sifat.
  • Tipe bali anyar - Statis.
  • Tipe anyar - campuran, sing bisa digunakake kanggo nemtokake apa fungsi nampa paramΓ¨ter saka macem-macem jinis.
  • Babagan uncalan kanggo nangani istimΓ©wa.
  • WeakMap kanggo nggawe obyek sing bisa dikorbanake sajrone koleksi sampah (contone, kanggo nyimpen cache sing ora perlu).
  • Opportunity nggunakake expression ":: class" kanggo obyek (analog kanggo nelpon get_class ()).
  • Opportunity definisi ing blok nyekel pangecualian sing ora kaiket kanggo variabel.
  • Opportunity ninggalake koma sawise unsur pungkasan ing dhaptar parameter fungsi.
  • Antarmuka anyar Stringable kanggo ngenali sembarang jinis senar utawa data sing bisa diowahi kanggo senar (kang __toString () cara kasedhiya).
  • Fitur anyar str_contains(), analog strpos sing disederhanakake kanggo nemtokake kedadeyan substring, uga fungsi str_starts_with () lan str_ends_with () kanggo mriksa pertandhingan ing wiwitan lan pungkasan senar.
  • Fitur ditambahake fdiv(), sing nindakake operasi divisi tanpa mbuwang kesalahan nalika dibagi karo nul.
  • Diganti logika penggabungan string. Contone, ekspresi 'echo "sum:" . $a + $b' sadurunge diinterpretasikake minangka 'echo ("sum: ". $a) + $b', lan ing PHP 8 bakal dianggep minangka 'echo "sum: " . ($a + $b)'.
  • Kenceng mriksa operasi aritmetika lan bit, contone, ekspresi "[] % [42]" lan "$obyek + 4" bakal nyebabake kesalahan.
  • Dilaksanakake Algoritma ngurutake stabil ing ngendi urutan nilai sing padha disimpen ing macem-macem mlaku.

Source: opennet.ru

Add a comment