PHP కోడ్ కోసం స్టాటిక్ ఎనలైజర్ అయిన PHPSstan 1.0 విడుదల

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

ఎనలైజర్ 10 స్థాయిల తనిఖీని అందిస్తుంది, దీనిలో ప్రతి తదుపరి స్థాయి మునుపటి సామర్థ్యాలను విస్తరిస్తుంది మరియు మరింత కఠినమైన తనిఖీలను అందిస్తుంది:

  • ప్రాథమిక తనిఖీలు, తెలియని తరగతులను నిర్వచించడం, విధులు మరియు పద్ధతులు ($దిస్), నిర్వచించబడని వేరియబుల్స్ మరియు తప్పుడు ఆర్గ్యుమెంట్‌లను పాస్ చేయడం.
  • __call మరియు __getతో బహుశా నిర్వచించబడని వేరియబుల్స్, తెలియని మ్యాజిక్ పద్ధతులు మరియు తరగతుల లక్షణాలను గుర్తించడం.
  • $this ద్వారా కాల్‌లకే పరిమితం కాకుండా అన్ని వ్యక్తీకరణలలో తెలియని పద్ధతులను గుర్తించడం. PHPDocsని తనిఖీ చేస్తోంది.
  • రిటర్న్ రకాలను తనిఖీ చేయడం మరియు లక్షణాలకు రకాలను కేటాయించడం.
  • "చనిపోయిన" (ఎప్పుడూ పిలవని) కోడ్ యొక్క ప్రాథమిక గుర్తింపు. ఎల్లప్పుడూ తప్పుడు రిటర్న్ చేసే కాల్‌ల ఉదాహరణను గుర్తించండి, ఎప్పుడూ కాల్ చేయని "వేరే" బ్లాక్‌లు మరియు తిరిగి వచ్చిన తర్వాత కోడ్ చేయండి.
  • పద్ధతులు మరియు ఫంక్షన్‌లకు పంపబడిన ఆర్గ్యుమెంట్‌ల రకాలను తనిఖీ చేస్తోంది.
  • తప్పిపోయిన రకం సమాచార ఉల్లేఖనాల గురించి హెచ్చరిక.
  • రెండు లేదా అంతకంటే ఎక్కువ రకాల సేకరణలను నిర్వచించే సరికాని యూనియన్ రకాల గురించి హెచ్చరిక.
  • "శూన్యం" రకాలతో కాల్ చేసే పద్ధతులు మరియు ప్రాపర్టీలను యాక్సెస్ చేయడం గురించి హెచ్చరిక.
  • "మిశ్రమ" రకం వినియోగాన్ని తనిఖీ చేస్తోంది.

    గుర్తించబడిన అంతర్లీన సమస్యల ఉదాహరణలు:

    • ఉదాహరణకు, క్యాచ్, టైప్‌హింట్స్ మరియు ఇతర భాషా నిర్మాణాలలో ఉపయోగించే తరగతుల ఉనికి.
    • అనే పద్ధతులు మరియు ఫంక్షన్ల ఉనికి మరియు లభ్యత, అలాగే ఆమోదించబడిన వాదనల సంఖ్య.
    • పద్ధతి రిటర్న్ ఎక్స్‌ప్రెషన్‌లో నిర్వచించిన అదే రకంతో డేటాను తిరిగి ఇస్తుందో లేదో తనిఖీ చేస్తోంది.
    • ప్రాపర్టీల ఉనికి మరియు దృశ్యమానత యాక్సెస్ చేయబడుతున్నాయి మరియు ప్రాపర్టీలలో ఉపయోగించిన డిక్లేర్డ్ మరియు వాస్తవ డేటా రకాలను తనిఖీ చేయడం.
    • స్ట్రింగ్ ఫార్మాటింగ్ బ్లాక్‌లో sprintf/printf కాల్‌లకు పంపబడిన పారామితుల సంఖ్య సరైనది.
    • బ్రాంచ్ ఆపరేటర్లు మరియు లూప్‌ల ద్వారా ఏర్పడిన బ్లాక్‌లను పరిగణనలోకి తీసుకుని వేరియబుల్స్ ఉనికి.
    • పనికిరాని టైప్ క్యాస్ట్‌లు (ఉదా. "(స్ట్రింగ్) 'ఫూ'") మరియు ఎల్లప్పుడూ తప్పుగా ఉండే విభిన్న రకాలు మరియు ఆపరాండ్‌లతో కూడిన డేటాపై కఠినమైన పరీక్షలు ("===" మరియు "!==").

    PHPStan 1.0లో కీలక ఆవిష్కరణలు:

    • "9" చెక్ స్థాయి అమలు చేయబడింది, ఇది "మిశ్రమ" రకం యొక్క ఉపయోగాన్ని తనిఖీ చేస్తుంది, ఇది వివిధ రకాలైన పారామితుల యొక్క ఫంక్షన్ యొక్క స్వీకరణను నిర్వహించడానికి ఉద్దేశించబడింది. స్థాయి XNUMX "మిశ్రమ" యొక్క అసురక్షిత ఉపయోగాలను గుర్తిస్తుంది, ఉదాహరణకు "మిశ్రమ" రకం విలువలను మరొక రకానికి పంపడం, "మిశ్రమ" పద్ధతిని పిలవడం మరియు దాని లక్షణాలు ఉనికిలో లేనందున వాటిని యాక్సెస్ చేయడం వంటివి.
    • @phpstan-pure మరియు @phpstan-impure ఉల్లేఖనాలను ఉపయోగించి ఒకే విధమైన ఫంక్షన్ కాల్‌లకు రిటర్న్ విలువలు ఒకేలా ఉన్నాయో లేదో నియంత్రించండి.
    • @throws ఉల్లేఖనాలను ఉపయోగించి ట్రై-క్యాచ్-ఫైనల్లీ కన్‌స్ట్రక్ట్‌లలో విశ్లేషణను టైప్ చేయండి.
    • నిర్వచించిన కానీ ఉపయోగించని అంతర్గత (ప్రైవేట్) లక్షణాలు, పద్ధతులు మరియు స్థిరాంకాల గుర్తింపు.
    • array_map మరియు usort వంటి శ్రేణి ఫంక్షన్‌లకు అననుకూల కాల్‌బ్యాక్‌లను పంపడం.
    • తప్పిపోయిన టైప్‌హింట్ ఉల్లేఖనాల కోసం టైప్ తనిఖీ.
    • PHPDocsకి అనుకూలంగా ఉండే రకం డిక్లరేషన్‌లు, PHPDocsలో ఎర్రర్ మెసేజ్‌ల నుండి రకాలను ఉపయోగించడానికి అనుమతిస్తుంది.

    మూలం: opennet.ru

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