ఆరు సంవత్సరాల అభివృద్ధి తర్వాత, స్టాటిక్ ఎనలైజర్ PHPStan 1.0 యొక్క మొదటి స్థిరమైన విడుదల జరిగింది, ఇది PHP కోడ్ను అమలు చేయకుండా మరియు యూనిట్ పరీక్షలను ఉపయోగించకుండా లోపాలను కనుగొనడానికి మిమ్మల్ని అనుమతిస్తుంది. ప్రాజెక్ట్ కోడ్ PHPలో వ్రాయబడింది మరియు MIT లైసెన్స్ క్రింద పంపిణీ చేయబడుతుంది.
ఎనలైజర్ 10 స్థాయిల తనిఖీని అందిస్తుంది, దీనిలో ప్రతి తదుపరి స్థాయి మునుపటి సామర్థ్యాలను విస్తరిస్తుంది మరియు మరింత కఠినమైన తనిఖీలను అందిస్తుంది:
గుర్తించబడిన అంతర్లీన సమస్యల ఉదాహరణలు:
- ఉదాహరణకు, క్యాచ్, టైప్హింట్స్ మరియు ఇతర భాషా నిర్మాణాలలో ఉపయోగించే తరగతుల ఉనికి.
- అనే పద్ధతులు మరియు ఫంక్షన్ల ఉనికి మరియు లభ్యత, అలాగే ఆమోదించబడిన వాదనల సంఖ్య.
- పద్ధతి రిటర్న్ ఎక్స్ప్రెషన్లో నిర్వచించిన అదే రకంతో డేటాను తిరిగి ఇస్తుందో లేదో తనిఖీ చేస్తోంది.
- ప్రాపర్టీల ఉనికి మరియు దృశ్యమానత యాక్సెస్ చేయబడుతున్నాయి మరియు ప్రాపర్టీలలో ఉపయోగించిన డిక్లేర్డ్ మరియు వాస్తవ డేటా రకాలను తనిఖీ చేయడం.
- స్ట్రింగ్ ఫార్మాటింగ్ బ్లాక్లో sprintf/printf కాల్లకు పంపబడిన పారామితుల సంఖ్య సరైనది.
- బ్రాంచ్ ఆపరేటర్లు మరియు లూప్ల ద్వారా ఏర్పడిన బ్లాక్లను పరిగణనలోకి తీసుకుని వేరియబుల్స్ ఉనికి.
- పనికిరాని టైప్ క్యాస్ట్లు (ఉదా. "(స్ట్రింగ్) 'ఫూ'") మరియు ఎల్లప్పుడూ తప్పుగా ఉండే విభిన్న రకాలు మరియు ఆపరాండ్లతో కూడిన డేటాపై కఠినమైన పరీక్షలు ("===" మరియు "!==").
PHPStan 1.0లో కీలక ఆవిష్కరణలు:
- "9" చెక్ స్థాయి అమలు చేయబడింది, ఇది "మిశ్రమ" రకం యొక్క ఉపయోగాన్ని తనిఖీ చేస్తుంది, ఇది వివిధ రకాలైన పారామితుల యొక్క ఫంక్షన్ యొక్క స్వీకరణను నిర్వహించడానికి ఉద్దేశించబడింది. స్థాయి XNUMX "మిశ్రమ" యొక్క అసురక్షిత ఉపయోగాలను గుర్తిస్తుంది, ఉదాహరణకు "మిశ్రమ" రకం విలువలను మరొక రకానికి పంపడం, "మిశ్రమ" పద్ధతిని పిలవడం మరియు దాని లక్షణాలు ఉనికిలో లేనందున వాటిని యాక్సెస్ చేయడం వంటివి.
- @phpstan-pure మరియు @phpstan-impure ఉల్లేఖనాలను ఉపయోగించి ఒకే విధమైన ఫంక్షన్ కాల్లకు రిటర్న్ విలువలు ఒకేలా ఉన్నాయో లేదో నియంత్రించండి.
- @throws ఉల్లేఖనాలను ఉపయోగించి ట్రై-క్యాచ్-ఫైనల్లీ కన్స్ట్రక్ట్లలో విశ్లేషణను టైప్ చేయండి.
- నిర్వచించిన కానీ ఉపయోగించని అంతర్గత (ప్రైవేట్) లక్షణాలు, పద్ధతులు మరియు స్థిరాంకాల గుర్తింపు.
- array_map మరియు usort వంటి శ్రేణి ఫంక్షన్లకు అననుకూల కాల్బ్యాక్లను పంపడం.
- తప్పిపోయిన టైప్హింట్ ఉల్లేఖనాల కోసం టైప్ తనిఖీ.
- PHPDocsకి అనుకూలంగా ఉండే రకం డిక్లరేషన్లు, PHPDocsలో ఎర్రర్ మెసేజ్ల నుండి రకాలను ఉపయోగించడానికి అనుమతిస్తుంది.
మూలం: opennet.ru