PHPStan అనేది PHP ప్రాజెక్టులకు స్థిరమైన విశ్లేషణ వ్యవస్థ. సోర్స్ ఫైళ్ళను పరిశీలించడం ద్వారా మీ కోడ్ బేస్ లో దోషాలను కనుగొనండి. సమస్యలను తెలుసుకోవడానికి పరీక్షలు కోడ్ చేయాల్సిన అవసరం లేదు లేదా మానవీయంగా పరీక్షలు రాయాలి!

“స్టాటిక్ అనాలిసిస్” అనే పదాన్ని డీబగ్గింగ్ కోడ్ వాస్తవానికి అమలు చేయకుండా నిర్వచించారు. సంకలనం చేసిన భాషలలో కంపైల్ సమయంలో అది కనుగొన్న సమస్యలు ఉద్భవించినందున ఇది తరచుగా PHP వంటి వ్యాఖ్యాన భాషలతో ఉపయోగించబడుతుంది.

స్టాటిక్ అనాలిసిస్ బాగా నిర్మాణాత్మకంగా మరియు గట్టిగా టైప్ చేసిన కోడ్ బేస్ లో ప్రదర్శించినప్పుడు ఉత్తమంగా పనిచేస్తుంది. PHPStan డాక్యుమెంటేషన్ “ఆధునిక ఆబ్జెక్ట్ ఓరియెంటెడ్ కోడ్” చాలా ప్రయోజనం చేకూరుస్తుందని సిఫారసు చేస్తుంది, ఎందుకంటే ఈ ప్రాజెక్టులు PHPStan తో పనిచేయడానికి మరింత సమాచారం ఇస్తాయి.

ప్రాజెక్టుకు PHPStan ని కలుపుతోంది

PHPStan ను అమలు చేయడానికి, మీకు PHP 7.1 లేదా తరువాత అవసరం. ఈ అవసరం PHPStan ను అమలు చేయడానికి ఉపయోగించే PHP సంస్కరణకు మాత్రమే వర్తిస్తుంది. ఈ సాధనం PHP యొక్క పాత సంస్కరణల కోసం ఉద్దేశించిన సోర్స్ ఫైళ్ళను విశ్లేషించగలదు.

PHPStan ని డిపెండెన్సీగా జోడించడానికి కంపోజర్‌ను ఉపయోగించమని సిఫార్సు చేయబడింది:

composer require --dev phpstan/phpstan

లో మీ ప్రాజెక్ట్‌కు PHPStan బైనరీ జోడించబడుతుంది vendor/bin/phpstan. ఇప్పుడు మీరు మొదటిసారి మీ కోడ్ బేస్ను విశ్లేషించడానికి దీన్ని ఉపయోగించవచ్చు:

vendor/bin/phpstan analyse src

పైన చూపిన ఆదేశం మీలోని అన్ని సోర్స్ ఫైళ్ళలో PHPStan పరీక్షలను అమలు చేస్తుంది src డైరెక్టరీ. బేస్ కోడ్ పరిమాణాన్ని బట్టి, ఇది పూర్తి కావడానికి కొన్ని నిమిషాలు పట్టవచ్చు.

విజయవంతమైన PHPStan పరుగు

మీరు ఆకుపచ్చ చూస్తారు “[OK] అన్ని పరీక్షలు ఉత్తీర్ణులైతే లోపాలు లేవు ”. లేకపోతే, కనుగొనబడిన లోపాల జాబితా ప్రదర్శించబడుతుంది. PHPStan ను మళ్లీ అమలు చేయడానికి ముందు ఏదైనా లోపాలను పరిష్కరించడానికి చూపిన గైడ్‌ను అనుసరించండి.

రకాలు మరియు లోపాల స్థాయిలు

PHPStan అనేక రకాలైన కోడ్‌బేస్ సమస్యలను కవర్ చేసే అనేక రకాల తనిఖీలను కలిగి ఉంది. మీరు ఎదుర్కొనే కొన్ని సాధారణమైనవి ఈ క్రింది వాటిని కలిగి ఉన్నాయి:

  • సిస్టమ్ సమస్యలను టైప్ చేయండి – టైప్ చేసిన ఆస్తికి చెల్లని విలువను ఇవ్వండి లేదా అక్షరదోష పారామితులను ఒక పద్ధతికి పంపండి. ఇంటర్‌ఫేస్‌ను తప్పుగా అమలు చేసే తరగతి వంటి కాంట్రాక్ట్ సమస్యలు కూడా ఇందులో ఉన్నాయి.
  • ఫంక్షన్ ఆహ్వానాలు – ఒక ఫంక్షన్ లేదా పద్ధతిని పిలిచేటప్పుడు చాలా ఎక్కువ లేదా చాలా తక్కువ పారామితులను దాటడం (ఉదాహరణకు 4 కి బదులుగా 3).
  • తెలియని తరగతులు, పద్ధతులు మరియు విధులు – కోడ్ బేస్‌లో లేనిదాన్ని ఉపయోగించడానికి ప్రయత్నం.
  • నిర్వచించబడని / సాధ్యమయ్యే వేరియబుల్స్ యాక్సెస్ – ఒక నిర్దిష్ట పరిధిలో నిర్వచించబడని వేరియబుల్‌ను ఉపయోగించటానికి ప్రయత్నం, లేదా ఎల్లప్పుడూ విలువను కలిగి ఉండకపోవచ్చు కాని ఒక సందర్భంలో ఉపయోగించబడుతుంది.
  • డెడ్ కోడ్ చెక్ – పనికిరాని కోడ్ యొక్క రిపోర్టింగ్, బూలియన్ పోలికలు ఎల్లప్పుడూ ఒకే విలువకు మరియు ఎప్పటికీ అమలు చేయని కోడ్ యొక్క శాఖలకు పరిష్కరిస్తాయి (ఉదా. return ఫంక్షన్లలో సూచన).

నియమాలు 9 వేర్వేరు “స్థాయిలు” గా క్రమబద్ధీకరించబడతాయి, వీటిని 0 నుండి 8 వరకు లేబుల్ చేస్తారు. ప్రత్యేక స్థాయి max సాధ్యమైనంత ఎక్కువ స్థాయికి మారుపేరుగా పనిచేస్తుంది. కాలక్రమేణా, PHPStan అదనపు సంఖ్యా స్థాయిలను జోడించగలదు, తద్వారా ఉపయోగిస్తుంది max మీరు ఎల్లప్పుడూ సాధ్యమైనంత కఠినమైన తనిఖీలను పొందుతారని నిర్ధారిస్తుంది.

PHPStan అమలు విఫలమైంది

అప్రమేయంగా, PHPStan స్థాయి 0 ను నడుపుతుంది. ఇందులో చాలా ప్రాథమిక పరీక్షలు మాత్రమే ఉంటాయి. కోడ్ బేస్ ప్రతి స్థాయికి ఒక్కొక్కటిగా పాస్ అవ్వడం మంచిది. పరిపక్వ ప్రాజెక్టులు ప్రతి కొత్త స్థాయిలో మరో సమస్యలను ఎదుర్కొనే అవకాశం ఉంది.

PHPStan ఉపయోగించే స్థాయిని మార్చడానికి, మీరు మించిపోవచ్చు --level కమాండ్ లైన్ పరామితి:

vendor/bin/phpstan analyse src --level 8

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

PHPStan కాన్ఫిగరేషన్

ప్రారంభ ప్రయోగానికి మించి, PHPStan యొక్క కమాండ్ లైన్ ఇంటర్ఫేస్ ఉపయోగించడం త్వరగా బోరింగ్ అవుతుంది. ప్రాజెక్ట్కు కాన్ఫిగరేషన్ ఫైల్ను జోడించడం ఉత్తమం, తరువాత అన్ని డెవలపర్లు ఉపయోగించటానికి సోర్స్ కంట్రోల్కు కేటాయించవచ్చు.

PHPStan నియాన్ కాన్ఫిగరేషన్ ఫైల్ ఫార్మాట్‌ను ఉపయోగిస్తుంది, ఇది YAML కు సమానమైన వాక్యనిర్మాణాన్ని కలిగి ఉంది. సృష్టించండి a phpstan.neon ప్రాజెక్ట్ రూట్ డైరెక్టరీలో ఫైల్. PHPStan ప్రారంభమైనప్పుడు ఈ ఫైల్ స్వయంచాలకంగా లోడ్ అవుతుంది, కాబట్టి మీరు ఇప్పుడు దీన్ని అమలు చేయవచ్చు analyse తదుపరి వాదనలు లేని ఆదేశం:

vendor/bin/phpstan analyse

ఉపయోగించిన కాన్ఫిగరేషన్ ఫైల్ను ఓవర్రైట్ చేయడానికి, పాస్ చేయండి --configuration జెండా:

vendor/bin/phpstan analyse --configuration /phpstan-config.neon

ఇప్పుడు మీరు మీ ఫైల్‌ను జనసాంద్రత చేయాలి phpstan.neon కొంత కంటెంట్‌తో ఫైల్‌లు. మంచి ప్రారంభ స్థానం ఇది కావచ్చు:

parameters:
  level: 0
  paths:
    - src

ఈ ప్రాథమిక కాన్ఫిగరేషన్ ఫైల్ పైన చూపిన కమాండ్ లైన్ కాల్ వలె అదే అవుట్పుట్ను అందించాలి. ఫైల్‌లో కొత్త పంక్తులుగా స్కాన్ చేయడానికి మీరు అదనపు డైరెక్టరీలను జోడించవచ్చు paths విభాగం. ఫైల్‌లు మరియు డైరెక్టరీలను మినహాయించడానికి, వాటిని ఫైల్‌కు జోడించండి excludes_analyse దాని లోపల ఆకు parameters విభాగం.

తప్పులను విస్మరించండి

అప్పుడప్పుడు, PHPStan అనివార్యమైన సమస్యను తెస్తుంది. మీరు వెంటనే పరిష్కరించలేని సమస్య ఉంటే, పరీక్షలు ఉత్తీర్ణత సాధించడానికి మీరు దానిని స్పష్టంగా విస్మరించవచ్చు.

మీరు మరొక స్థాయి నియంత్రణలకు వెళ్లాలనుకున్నప్పుడు లేదా CI వాతావరణంలో PHPStan ను ఉపయోగిస్తున్నప్పుడు ఇది చాలా ముఖ్యమైనది, ఇక్కడ విఫలమైన పరుగు బిల్డ్ విస్తరణకు అంతరాయం కలిగిస్తుంది. అయినప్పటికీ, ఈ కోర్సును తేలికగా తీసుకోకండి – అలా చేయటం సురక్షితం అని మీకు ఖచ్చితంగా తెలిస్తే మాత్రమే నివేదించబడిన లోపాన్ని విస్మరించడాన్ని మీరు ఎంచుకోవాలి.

నిర్ణయం తీసుకున్న తర్వాత, క్రొత్త ఫైల్‌ను జోడించండి ignoreErrors లోపల విభాగం parameters కాన్ఫిగరేషన్ ఫైల్. సరిపోలడానికి సందేశాన్ని మీరు నిర్వచించాలి, అంటే రిజెక్స్ మరియు మినహాయింపును వర్తించే మార్గాలు:

parameters:
  level: 0
  paths:
    - src
  ignoreErrors:
    - message: '/Return type string of method ExampleClass::example() is not covariant(.*).'
      path: src/ExampleClass.php

ఐచ్ఛికంగా మీరు పేర్కొనవచ్చు paths మార్గాల శ్రేణిగా, సింగిల్ స్థానంలో path కీ పైన చూపబడింది.

ఐచ్ఛిక నియమాలు

PHPStan యొక్క దృ g త్వాన్ని అనేక కాన్ఫిగరేషన్ వేరియబుల్స్ ద్వారా సర్దుబాటు చేయవచ్చు. పైన వివరించిన స్థాయి వ్యవస్థకు వెలుపల, తనిఖీలను చక్కగా ట్యూన్ చేయడానికి అవి అనుమతిస్తాయి. వీటిలో కొన్ని వివాదాస్పదమైనవి లేదా అన్ని ప్రైవేట్ స్టైల్ గైడ్‌లతో సరిపడే అవకాశం లేదు, కాబట్టి అవి అప్రమేయంగా నిలిచిపోతాయి.

ప్రారంభించడానికి విలువైన కొన్ని సెట్టింగ్‌లు:

  • checkAlwaysTrueInstanceof – యొక్క జెండాలను ఉపయోగిస్తుంది instanceof ఇది ఎల్లప్పుడూ మూల్యాంకనం చేస్తుంది true.
  • checkAlwaysTrueStrictComparison – వ్యక్తీకరణ ఉపయోగించినప్పుడు ఫ్లాగ్ చేయండి === లేదా !== ఎల్లప్పుడూ అంచనా వేస్తుంది a true.
  • checkFunctionNameCase – కోడ్‌బేస్ అంతటా పిలిచినప్పుడు ఫంక్షన్ పేర్ల షెల్ వాటి నిర్వచనంతో సరిపోలుతుందని నిర్ధారిస్తుంది.
  • polluteScopeWithLoopInitialAssignments – సెట్ చేసినప్పుడు false (తన true అప్రమేయంగా), ప్రారంభ లూప్ స్టేట్‌మెంట్లలో ప్రకటించిన వేరియబుల్స్ (ఉదా. $i లో $for ($i = 1; $i < 10; $i++)) లూప్ కోడ్ బ్లాక్ వెలుపల ప్రాప్యత నిరోధించబడుతుంది, మాతృ ప్రాంతం యొక్క కాలుష్యాన్ని నివారించవచ్చు.
  • reportStaticMethodSignatures – చైల్డ్ క్లాస్ ఓవర్రైడ్ చేసినప్పుడు పారామితుల కోసం పూర్తి రకం తనిఖీని మరియు స్టాటిక్ పద్ధతుల్లో తిరిగి రకాలను అమలు చేయండి.

ఈ ఐచ్ఛిక సెట్టింగులపై పూర్తి వివరాలు – మరియు మరెన్నో – PHPStan కాన్ఫిగరేషన్ రిఫరెన్స్‌లో చూడవచ్చు.

ముగింపు

ఇది PHPStan కు మా పరిచయం ముగింపు. ఇది మీ కోడ్ బేస్ మీద విశ్వాసం కలిగి ఉండటానికి మీకు సహాయపడుతుంది మరియు ఉత్పత్తిలో సమస్యగా మారడానికి ముందు సాధ్యమయ్యే సమస్యలను హైలైట్ చేస్తుంది.

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

Source link