Ħruġ ta 'Salm 3.12, analizzatur statiku għal-lingwa PHP. Rilaxx Alpha ta' PHP 8.0
Kumpanija Vimeo ippubblikat rilaxx ġdid ta 'analizzatur statiku Salm 3.12, li jippermettilek tidentifika żbalji kemm ovvji kif ukoll sottili fil-kodiċi PHP, kif ukoll tikkoreġi awtomatikament xi tipi ta 'żbalji. Is-sistema hija adattata biex tidentifika problemi kemm fil-kodiċi legati kif ukoll f'kodiċi li juża karatteristiċi moderni introdotti f'fergħat ġodda tal-PHP. Il-kodiċi tal-proġett huwa miktub fil-PHP u imqassma minn taħt il-liċenzja MIT.
Salm jidentifika ħafna mill-problemi assoċjati ma 'użu ta' tip mhux korrett, kif ukoll diversi żbalji tipiċi. Pereżempju, jappoġġja twissijiet dwar it-taħlit ta’ varjabbli ta’ tipi differenti f’espressjoni, testijiet loġiċi mhux korretti (bħal “jekk ($a && $a) {}”, “jekk ($a && !$a) {}” u “ if ($a) {} elseif ($a) {}"), inizjalizzazzjoni mhux kompluta tal-proprjetajiet tal-oġġett. L-analizzatur jaħdem f'modalità multi-kamin. Huwa possibbli li jsiru skans inkrementali, li janalizzaw biss fajls li nbidlu mill-aħħar skan.
Barra minn hekk, għodod ta 'programmar siguri huma pprovduti biex jippermettu użu annotazzjonijiet fil-format Docblock (“/** @var Tip */”) biex tipprovdi informazzjoni dwar tipi varjabbli, valuri ta’ ritorn, parametri tal-funzjoni, proprjetajiet tal-oġġett. Id-definizzjoni ta' mudelli ta' użu tat-tip u l-użu ta' dikjarazzjonijiet ta' affermazzjoni hija appoġġjata wkoll. Pereżempju:
/** @var string|null */
$a = foo();
/** @var string $a */
echo strpos($a, 'hello');
/** @salm-assert-jekk-veru B $a */
il-funzjoni hijaValidB(A $a): bool {
ritorn $a instanceof B && $a->isValid();
}
Biex tiġi awtomatizzata l-eliminazzjoni ta 'problemi misjuba, hija pprovduta l-utilità Psalter, li tappoġġja plugins u tippermetti issolvi problemi ta' kodiċi komuni, żid annotazzjonijiet tat-tip, u wettaq manipulazzjonijiet bħal ċaqliq ta' klassijiet minn spazju tal-isem għal ieħor, ċaqliq ta' metodi bejn klassijiet, u tibdil tal-isem ta' klassijiet u metodi.
Fil-ħarġa l-ġdida tas-Salm implimentati l-għażla "--taint-analysis" tippermettilek li tintraċċa r-relazzjoni bejn il-parametri tal-input riċevuti mill-utent (per eżempju, $_GET['name']) u l-użu tagħhom f'postijiet li jeħtieġu l-ħarba tal-karattri (per eżempju, echo " $isem "), inkluż permezz ta' ktajjen ta' traċċar ta' inkarigi intermedji u sejħiet ta' funzjoni. L-użu ta' arrays assoċjati $_GET, $_POST u $_COOKIE huwa meqjus bħala sorsi ta' data potenzjalment perikoluża, iżda huwa wkoll possibbli determinazzjoni ta ' sorsi proprji. Azzjonijiet li jeħtieġu li jaħarbu t-traċċar jinkludu operazzjonijiet ta' output li jiġġeneraw kontenut HTML, iżidu headers HTTP, jew jeżegwixxu mistoqsijiet SQL.
Il-validazzjoni tintuża meta jintużaw funzjonijiet bħal echo, exec, include u header. Meta tiġi analizzata l-ħtieġa ta 'ħarba, tipi ta' dejta bħal test, kordi b'kodiċi SQL, HTML u Shell, kordi b'parametri ta 'awtentikazzjoni huma kkunsidrati. Il-mod propost jippermettilek tidentifika vulnerabbiltajiet fil-kodiċi li jwasslu għal cross-site scripting (XSS) jew sostituzzjoni SQL.
Barra minn hekk, tista 'tinnota Bidu ittestjar alfa tal-fergħa ġdida PHP 8.0. Ir-rilaxx huwa skedat għas-26 ta’ Novembru. Dawn li ġejjin huma mistennija fil-fergħa l-ġdida: innovazzjonijietbħal:
Appoġġ tipi ta' unjoni, li tiddefinixxi kollezzjonijiet ta' żewġ tipi jew aktar (per eżempju, “public function foo(Foo|Bar $input): int|float;”).
Appoġġ attributi (annotazzjonijiet) li jippermettulek torbot metadata (bħal informazzjoni tat-tip) ma' klassijiet mingħajr ma tuża s-sintassi ta' Docblock.
Sintassi mqassra definizzjonijiet tal-klassi, li jippermettulek tgħaqqad id-definizzjoni ta 'kostruttur u proprjetajiet.
Opportunità definizzjonijiet fil-blokk tal-qbid ta’ eċċezzjonijiet li mhumiex marbuta ma’ varjabbli.
Opportunità li tħalli virgola wara l-aħħar element fil-lista tal-parametri tal-funzjoni.
Interfaċċa ġdida Stringable biex tidentifika kwalunkwe tip ta' string jew data li tista' tiġi kkonvertita fi string (li għaliha l-metodu __toString() huwa disponibbli).
Karatteristika ġdida str_contains(), analogu simplifikat ta 'strpos għad-determinazzjoni tal-okkorrenza ta' substring, kif ukoll il-funzjonijiet str_starts_with() u str_ends_with() għall-iċċekkjar ta 'logħbiet fil-bidu u fit-tmiem ta' string.
Funzjoni miżjuda fdiv(), li twettaq operazzjoni ta 'diviżjoni mingħajr ma tarmi żball meta tiddividi b'żero.
Mibdul loġika li tgħaqqad is-sekwenza. Pereżempju, l-espressjoni 'echo "somma:" . $a + $b' qabel kien interpretat bħala 'echo ("somma: " . $a) + $b', u f'PHP 8 se jiġi ttrattat bħala "echo "somma: " . ($a + $b)'.
Issikkat l-iċċekkjar ta' operazzjonijiet aritmetiċi u bit, pereżempju, l-espressjonijiet "[] % [42]" u "$object + 4" se jirriżultaw fi żball.
Implimentati algoritmu ta’ għażla stabbli li fih l-ordni ta’ valuri identiċi tiġi ppreservata f’ġirjiet differenti.