కీర్తన 3.12 విడుదల, PHP భాష కోసం స్టాటిక్ ఎనలైజర్. PHP 8.0 ఆల్ఫా విడుదల

Vimeo కంపెనీ ప్రచురించిన స్టాటిక్ ఎనలైజర్ యొక్క కొత్త విడుదల కీర్తన 3.12, ఇది PHP కోడ్‌లోని స్పష్టమైన మరియు సూక్ష్మ లోపాలను గుర్తించడానికి మిమ్మల్ని అనుమతిస్తుంది, అలాగే కొన్ని రకాల లోపాలను స్వయంచాలకంగా సరిదిద్దుతుంది. లెగసీ కోడ్ మరియు PHP యొక్క కొత్త శాఖలలో ప్రవేశపెట్టిన ఆధునిక ఫీచర్లను ఉపయోగించే కోడ్‌లో సమస్యలను గుర్తించడానికి సిస్టమ్ అనుకూలంగా ఉంటుంది. ప్రాజెక్ట్ కోడ్ PHPలో వ్రాయబడింది మరియు ద్వారా పంపిణీ చేయబడింది MIT లైసెన్స్ కింద.

కీర్తన తప్పు రకం వినియోగంతో సంబంధం ఉన్న చాలా సమస్యలను గుర్తిస్తుంది, అలాగే వివిధ సాధారణ తప్పులు. ఉదాహరణకు, ఎక్స్‌ప్రెషన్‌లో వివిధ రకాల వేరియబుల్స్ కలపడం గురించి హెచ్చరికలు, తప్పు లాజికల్ పరీక్షలు (“if ($a && $a) {}”, “if ($a && !$a) {}” మరియు “ అయితే ( $a) {} elseif ($a) {}"), ఆబ్జెక్ట్ లక్షణాల అసంపూర్ణ ప్రారంభీకరణ. ఎనలైజర్ బహుళ-థ్రెడ్ మోడ్‌లో నడుస్తుంది. చివరి స్కాన్ నుండి మారిన ఫైల్‌లను మాత్రమే విశ్లేషించే ఇంక్రిమెంటల్ స్కాన్‌లను నిర్వహించడం సాధ్యమవుతుంది.

అదనంగా, అనుమతించడానికి సురక్షిత ప్రోగ్రామింగ్ సాధనాలు అందించబడ్డాయి ఉపయోగించడానికి ఆకృతిలో ఉల్లేఖనాలు డాక్‌బ్లాక్ (“/** @var రకం */”) వేరియబుల్ రకాలు, రిటర్న్ విలువలు, ఫంక్షన్ పారామితులు, ఆబ్జెక్ట్ లక్షణాల గురించి సమాచారాన్ని అందించడానికి. టైప్ యూసేజ్ ప్యాటర్న్‌లను నిర్వచించడం మరియు నిశ్చిత ప్రకటనలను ఉపయోగించడం కూడా మద్దతు ఇస్తుంది. ఉదాహరణకి:

/** @var స్ట్రింగ్|శూన్య */
$a = foo();

/** @var స్ట్రింగ్ $a */
echo strpos($a, 'హలో');

/** @psalm-assert-if-true B $a */
ఫంక్షన్ isValidB(A $a) : bool {
B && $a->isValid();
}

కనుగొనబడిన సమస్యల తొలగింపును ఆటోమేట్ చేయడానికి, సాల్టర్ యుటిలిటీ అందించబడుతుంది, ఇది ప్లగిన్‌లకు మద్దతు ఇస్తుంది మరియు ఇది అనుమతిస్తుంది సాధారణ కోడ్ సమస్యలను పరిష్కరించడం, టైప్ ఉల్లేఖనాలను జోడించడం మరియు తరగతులను ఒక నేమ్‌స్పేస్ నుండి మరొక నేమ్‌స్పేస్‌కు తరలించడం, తరగతుల మధ్య పద్ధతులను తరలించడం మరియు తరగతులు మరియు పద్ధతుల పేరు మార్చడం వంటి అవకతవకలను నిర్వహించండి.

కీర్తన కొత్త సంచికలో అమలు చేశారు "--taint-analysis" ఎంపిక వినియోగదారు నుండి స్వీకరించబడిన ఇన్‌పుట్ పారామీటర్‌ల మధ్య సంబంధాన్ని కనుగొనడానికి మిమ్మల్ని అనుమతిస్తుంది (ఉదాహరణకు, $_GET['name']) మరియు అక్షరాలు తప్పించుకోవాల్సిన ప్రదేశాలలో వాటి ఉపయోగం (ఉదాహరణకు, echo " $పేరు "), ఇంటర్మీడియట్ అసైన్‌మెంట్‌లు మరియు ఫంక్షన్ కాల్‌ల ట్రాకింగ్ చైన్‌లతో సహా. అనుబంధ శ్రేణుల ఉపయోగం $_GET, $_POST మరియు $_COOKIE సంభావ్య ప్రమాదకరమైన డేటా యొక్క మూలాలుగా పరిగణించబడుతుంది, అయితే ఇది కూడా సాధ్యమే నిర్వచనం సొంత మూలాలు. ట్రాకింగ్ నుండి తప్పించుకోవడానికి అవసరమైన చర్యలలో HTML కంటెంట్‌ను రూపొందించే అవుట్‌పుట్ ఆపరేషన్‌లు ఉంటాయి, HTTP హెడర్‌లను జోడించవచ్చు లేదా SQL ప్రశ్నలను అమలు చేస్తుంది.

ఎకో, ఎగ్జిక్యూటివ్, ఇన్‌కార్డ్ మరియు హెడర్ వంటి ఫంక్షన్‌లను ఉపయోగిస్తున్నప్పుడు ధ్రువీకరణ ఉపయోగించబడుతుంది. ఎస్కేపింగ్ అవసరాన్ని విశ్లేషించేటప్పుడు, టెక్స్ట్, SQLతో స్ట్రింగ్స్, HTML మరియు షెల్ కోడ్ వంటి డేటా రకాలు, ప్రమాణీకరణ పారామితులతో స్ట్రింగ్‌లు పరిగణనలోకి తీసుకోబడతాయి. క్రాస్-సైట్ స్క్రిప్టింగ్ (XSS) లేదా SQL ప్రత్యామ్నాయానికి దారితీసే కోడ్‌లోని దుర్బలత్వాలను గుర్తించడానికి ప్రతిపాదిత మోడ్ మిమ్మల్ని అనుమతిస్తుంది.

అదనంగా, ఇది గమనించవచ్చు ప్రారంభం కొత్త PHP 8.0 శాఖ యొక్క ఆల్ఫా పరీక్ష. నవంబర్ 26న రిలీజ్ ప్లాన్ చేస్తున్నారు. కొత్త శాఖలో కిందివి ఆశించబడతాయి: ఆవిష్కరణలుఇటువంటి వంటి:

  • పవర్ అప్ JIT కంపైలర్, దీని ఉపయోగం ఉత్పాదకతను మెరుగుపరుస్తుంది.
  • Поддержка యూనియన్ రకాలు, రెండు లేదా అంతకంటే ఎక్కువ రకాల సేకరణలను నిర్వచించడం (ఉదాహరణకు, “పబ్లిక్ ఫంక్షన్ foo(Foo|Bar $input): int|float;”).
  • Поддержка గుణాలు (ఉల్లేఖనాలు) డాక్‌బ్లాక్ సింటాక్స్‌ని ఉపయోగించకుండా తరగతులకు మెటాడేటాను (టైప్ ఇన్ఫర్మేషన్ వంటివి) బైండ్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది.
  • సంక్షిప్త వాక్యనిర్మాణం తరగతి నిర్వచనాలు, కన్స్ట్రక్టర్ మరియు లక్షణాల నిర్వచనాన్ని మిళితం చేయడానికి మిమ్మల్ని అనుమతిస్తుంది.
  • కొత్త రిటర్న్ రకం - స్టాటిక్.
  • కొత్త రకం - మిశ్రమ, ఒక ఫంక్షన్ వివిధ రకాల పారామితులను అంగీకరిస్తుందో లేదో తెలుసుకోవడానికి ఇది ఉపయోగించబడుతుంది.
  • వ్యక్తీకరణ త్రో మినహాయింపులను నిర్వహించడానికి.
  • బలహీన మ్యాప్ చెత్త సేకరణ సమయంలో త్యాగం చేయగల వస్తువులను రూపొందించడానికి (ఉదాహరణకు, అనవసరమైన కాష్లను నిల్వ చేయడానికి).
  • అవకాశం ఆబ్జెక్ట్‌ల కోసం “::class” అనే వ్యక్తీకరణను ఉపయోగించడం (get_class() అని పిలవడానికి సమానంగా ఉంటుంది).
  • అవకాశం వేరియబుల్స్‌కు కట్టుబడి లేని మినహాయింపుల క్యాచ్ బ్లాక్‌లో నిర్వచనాలు.
  • అవకాశం ఫంక్షన్ పారామితుల జాబితాలో చివరి మూలకం తర్వాత కామాను వదిలివేయడం.
  • కొత్త ఇంటర్ఫేస్ స్ట్రింగ్ చేయదగినది స్ట్రింగ్‌గా మార్చబడే ఏదైనా స్ట్రింగ్ రకాలు లేదా డేటాను గుర్తించడానికి (దీని కోసం __toString() పద్ధతి అందుబాటులో ఉంది).
  • కొత్త కథనం str_contains(), సబ్‌స్ట్రింగ్ సంభవించడాన్ని నిర్ణయించడానికి strpos యొక్క సరళీకృత అనలాగ్, అలాగే స్ట్రింగ్ ప్రారంభంలో మరియు చివరిలో సరిపోలికలను తనిఖీ చేయడానికి str_starts_with() మరియు str_ends_with() ఫంక్షన్‌లు.
  • ఫీచర్ జోడించబడింది fdiv(), ఇది సున్నాతో భాగించినప్పుడు లోపాన్ని విసిరివేయకుండా విభజన చర్యను నిర్వహిస్తుంది.
  • మార్చబడింది స్ట్రింగ్ జాయినింగ్ లాజిక్. ఉదాహరణకు, వ్యక్తీకరణ 'ఎకో "సమ్:" . $a + $b' మునుపు 'echo ("మొత్తం: ". $a) + $b'గా అన్వయించబడింది మరియు PHP 8లో 'echo "sum:" గా పరిగణించబడుతుంది. ($a + $b)'.
  • బిగుసుకుపోయింది అంకగణితం మరియు బిట్ ఆపరేషన్‌లను తనిఖీ చేయడం, ఉదాహరణకు, "[] % [42]" మరియు "$object + 4" వ్యక్తీకరణలు దోషానికి దారితీస్తాయి.
  • అమలు చేశారు స్థిరమైన క్రమబద్ధీకరణ అల్గోరిథం, దీనిలో ఒకే విలువల క్రమం వేర్వేరు పరుగులలో భద్రపరచబడుతుంది.

మూలం: opennet.ru

ఒక వ్యాఖ్యను జోడించండి