PHP භාෂාව සඳහා ස්ථිතික විශ්ලේෂකයක් වන ගීතාවලිය 3.12 නිකුත් කිරීම. PHP 8.0 ඇල්ෆා නිකුතුව

Vimeo සමාගම පළ කර ඇත ස්ථිතික විශ්ලේෂකයේ නව නිකුතුව ගීතාවලිය 3.12, එය ඔබට PHP කේතයේ පැහැදිලි සහ සියුම් දෝෂ හඳුනා ගැනීමට මෙන්ම සමහර ආකාරයේ දෝෂ ස්වයංක්‍රීයව නිවැරදි කිරීමට ඉඩ සලසයි. PHP හි නව ශාඛා තුළ හඳුන්වා දී ඇති නවීන විශේෂාංග භාවිතා කරන ලෙගසි කේතයේ සහ කේතයේ ගැටළු හඳුනා ගැනීමට පද්ධතිය සුදුසු වේ. ව්යාපෘති කේතය PHP සහ ලියා ඇත විසින් බෙදා හරිනු ලැබේ MIT බලපත්‍රය යටතේ.

ගීතාවලිය වැරදි ආකාරයේ භාවිතය හා සම්බන්ධ ගැටළු බොහොමයක් මෙන්ම විවිධ හඳුනා ගනී සාමාන්ය වැරදි. උදාහරණයක් ලෙස, එය ප්‍රකාශනයක විවිධ වර්ගවල විචල්‍ය මිශ්‍ර කිරීම පිළිබඳ අනතුරු ඇඟවීම් සඳහා සහය දක්වයි, වැරදි තාර්කික පරීක්ෂණ (“if ($a && $a) {}”, “if ($a && !$a) {}” සහ “ නම් ($a) {} elseif ($a) {}"), වස්තු ගුණාංගවල අසම්පූර්ණ ආරම්භය. විශ්ලේෂකය බහු-නූල් ආකාරයෙන් ක්රියාත්මක වේ. අවසාන ස්කෑන් කිරීමෙන් පසු වෙනස් වූ ගොනු පමණක් විශ්ලේෂණය කරන වර්ධක ස්කෑන් සිදු කළ හැකිය.

අතිරේකව, ඉඩ දීමට ආරක්ෂිත ක්‍රමලේඛන මෙවලම් සපයා ඇත භාවිතා කරන්න ආකෘතියේ විවරණ Docblock (“/** @var වර්ගය */”) විචල්‍ය වර්ග, ප්‍රතිලාභ අගයන්, ක්‍රියාකාරී පරාමිති, වස්තු ගුණාංග පිළිබඳ තොරතුරු සැපයීමට. වර්ග භාවිත රටා නිර්වචනය කිරීම සහ ස්ථීර ප්‍රකාශ භාවිතා කිරීම ද සහාය වේ. උදාහරණ වශයෙන්:

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

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

/** @psalm-assert-if-true B $a */
ශ්‍රිතය ValidB(A $a) : bool {
B && $a->isValid();
}

සොයාගත් ගැටළු ඉවත් කිරීම ස්වයංක්‍රීය කිරීම සඳහා, Psalter උපයෝගීතාව සපයනු ලැබේ, එය ප්ලගීන සඳහා සහය දක්වයි. එය ඉඩ පොදු කේත ගැටළු නිරාකරණය කිරීම, වර්ග විවරණ එකතු කිරීම සහ පන්ති එක් නාම අවකාශයකින් තවත් ස්ථානයකට ගෙන යාම, පන්ති අතර ක්‍රම චලනය කිරීම සහ පන්ති සහ ක්‍රම නැවත නම් කිරීම වැනි හැසිරවීම් සිදු කරන්න.

ගීතාවලියේ නව කලාපයෙහි ක්රියාත්මක කර ඇත "--taint-analysis" විකල්පය මඟින් පරිශීලකයාගෙන් ලැබෙන ආදාන පරාමිති (උදාහරණයක් ලෙස, $_GET['name']) සහ අක්ෂර ගැලවී යාමට අවශ්‍ය ස්ථානවල ඒවා භාවිතා කිරීම අතර සම්බන්ධතාවය සොයා ගැනීමට ඔබට ඉඩ සලසයි (උදාහරණයක් ලෙස, echo " $නම "), අතරමැදි පැවරුම් සහ ක්‍රියාකාරී ඇමතුම් ලුහුබැඳීමේ දාම හරහා ඇතුළුව. $_GET, $_POST සහ $_COOKIE ආශ්‍රිත අරා භාවිතය අනතුරුදායක දත්තවල මූලාශ්‍ර ලෙස සලකනු ලැබේ, නමුත් එය ද හැකි ය අර්ථ දැක්වීම තමන්ගේම මූලාශ්ර. ගැලවී යාම ලුහුබැඳීම අවශ්‍ය වන ක්‍රියාවලට HTML අන්තර්ගතය ජනනය කරන, HTTP ශීර්ෂ එකතු කරන, හෝ SQL විමසුම් ක්‍රියාත්මක කරන ප්‍රතිදාන මෙහෙයුම් ඇතුළත් වේ.

echo, exec, include සහ header වැනි ශ්‍රිත භාවිතා කරන විට වලංගුකරණය භාවිතා වේ. ගැලවී යාමේ අවශ්‍යතාවය විශ්ලේෂණය කිරීමේදී, පෙළ වැනි දත්ත වර්ග, SQL සහිත නූල්, HTML සහ Shell කේතය, සත්‍යාපන පරාමිති සහිත තන්තු සැලකිල්ලට ගනී. යෝජිත මාදිලිය මඟින් හරස්-අඩවි විධානාවලි (XSS) හෝ SQL ආදේශනයට තුඩු දෙන කේතයේ ඇති දුර්වලතා හඳුනා ගැනීමට ඔබට ඉඩ සලසයි.

ඊට අමතරව, එය සටහන් කළ හැකිය ආරම්භය නව PHP 8.0 ශාඛාවේ ඇල්ෆා පරීක්ෂාව. නිකුතුව නොවැම්බර් 26 වැනිදාට නියමිතයි. නව ශාඛාව තුළ පහත සඳහන් දෑ අපේක්ෂා කෙරේ. නවෝත්පාදනවැනි:

  • ඇතුළත් කිරීම JIT සම්පාදකය, භාවිතා කිරීම ඵලදායිතාව වැඩි දියුණු කරනු ඇත.
  • සහාය සමිති වර්ග, වර්ග දෙකක හෝ වැඩි ගණනක එකතු කිරීම් නිර්වචනය කිරීම (උදාහරණයක් ලෙස, "public function foo(Foo|Bar $input): int|float;").
  • සහාය ගුණාංග (විවරණ) ඩොක්බ්ලොක් වාක්‍ය ඛණ්ඩ භාවිතා නොකර පන්තිවලට පාර-දත්ත (වර්ග තොරතුරු වැනි) බැඳීමට ඔබට ඉඩ සලසයි.
  • කෙටි කරන ලද වාක්‍ය ඛණ්ඩය පන්ති නිර්වචන, ඉදිකිරීම්කරුවෙකු සහ ගුණාංගවල අර්ථ දැක්වීම ඒකාබද්ධ කිරීමට ඔබට ඉඩ සලසයි.
  • නව ප්රතිලාභ වර්ගය - ස්ථිතිකයි.
  • නව වර්ගය - මිශ්ර, ශ්‍රිතයක් විවිධ වර්ගවල පරාමිතීන් පිළිගන්නේද යන්න තීරණය කිරීමට භාවිතා කළ හැක.
  • ප්‍රකාශනය විසි ව්යතිරේක හැසිරවීමට.
  • දුර්වල සිතියම කසළ එකතු කිරීමේදී පූජා කළ හැකි වස්තූන් නිර්මාණය කිරීමට (උදාහරණයක් ලෙස, අනවශ්ය හැඹිලි ගබඩා කිරීමට).
  • අවස්ථාව වස්තූන් සඳහා "::class" ප්‍රකාශනය භාවිතා කිරීම (get_class() ඇමතීමට සමානයි).
  • අවස්ථාව විචල්‍යයන් සමඟ බැඳී නැති ව්‍යතිරේකයේ අල්ලා ගැනීමේ කොටසෙහි අර්ථ දැක්වීම්.
  • අවස්ථාව ශ්‍රිත පරාමිති ලැයිස්තුවේ අවසාන මූලද්‍රව්‍යයට පසුව කොමාවක් තබයි.
  • නව අතුරු මුහුණත නූල් කළ හැකි තන්තුවකට පරිවර්තනය කළ හැකි ඕනෑම තන්තු වර්ග හෝ දත්ත හඳුනා ගැනීමට (ඒ සඳහා __toString() ක්‍රමය පවතී).
  • නව ලක්ෂණය str_contains(), උප තන්තුවක සිදුවීම නිර්ණය කිරීම සඳහා strpos හි සරල කළ ප්‍රතිසමයක් මෙන්ම str_starts_with() සහ str_ends_with() තන්තුවක ආරම්භයේ සහ අවසානයේ ගැලපීම් පරීක්ෂා කිරීම සඳහා.
  • එකතු කරන ලද කාර්යය fdiv(), ශුන්‍යයෙන් බෙදීමේදී දෝෂයක් ඇති නොකර බෙදීමේ මෙහෙයුමක් සිදු කරයි.
  • වෙනස් කළා string joining logic. උදාහරණයක් ලෙස, 'echo "sum:" යන ප්‍රකාශනය . $a + $b' පෙරදී 'echo ("sum: ". $a) + $b' ලෙස අර්ථකථනය කර ඇති අතර, PHP 8 හි 'echo "sum:" ලෙස සලකනු ලැබේ. ($a + $b)'.
  • තද කළා අංක ගණිතය සහ බිට් මෙහෙයුම් පරීක්ෂා කිරීම, උදාහරණයක් ලෙස, "[] % [42]" සහ "$object + 4" යන ප්‍රකාශන දෝෂයක් ඇති කරයි.
  • ක්‍රියාත්මක කළා ස්ථායී වර්ග කිරීමේ ඇල්ගොරිතමයක්, විවිධ ධාවන හරහා සමාන අගයන් අනුපිළිවෙල සංරක්ෂණය කර ඇත.

මූලාශ්රය: opennet.ru

අදහස් එක් කරන්න