PHP കോഡിനുള്ള സ്റ്റാറ്റിക് അനലൈസറായ PHPStan 1.0-ന്റെ റിലീസ്

ആറ് വർഷത്തെ വികസനത്തിന് ശേഷം, സ്റ്റാറ്റിക് അനലൈസർ PHPStan 1.0 ന്റെ ആദ്യത്തെ സ്ഥിരതയുള്ള റിലീസ് നടന്നു, ഇത് PHP കോഡ് എക്സിക്യൂട്ട് ചെയ്യാതെയും യൂണിറ്റ് ടെസ്റ്റുകൾ ഉപയോഗിക്കാതെയും പിശകുകൾ കണ്ടെത്താൻ നിങ്ങളെ അനുവദിക്കുന്നു. പ്രോജക്റ്റ് കോഡ് PHP-യിൽ എഴുതുകയും MIT ലൈസൻസിന് കീഴിൽ വിതരണം ചെയ്യുകയും ചെയ്യുന്നു.

അനലൈസർ 10 ലെവലുകൾ പരിശോധിക്കുന്നു, അതിൽ ഓരോ തുടർന്നുള്ള ലെവലും മുമ്പത്തേതിന്റെ കഴിവുകൾ വികസിപ്പിക്കുകയും കൂടുതൽ കർശനമായ പരിശോധനകൾ നൽകുകയും ചെയ്യുന്നു:

  • അടിസ്ഥാന പരിശോധനകൾ, അജ്ഞാത ക്ലാസുകൾ, ഫംഗ്‌ഷനുകൾ, രീതികൾ ($ഇത്), നിർവചിക്കാത്ത വേരിയബിളുകൾ, തെറ്റായ ആർഗ്യുമെന്റുകൾ എന്നിവ നിർവചിക്കുന്നു.
  • __കോൾ, __ഗെറ്റ് എന്നിവ ഉപയോഗിച്ച് നിർവചിക്കാത്ത വേരിയബിളുകൾ, അജ്ഞാതമായ മാജിക് രീതികൾ, ക്ലാസുകളുടെ ഗുണവിശേഷതകൾ എന്നിവ തിരിച്ചറിയുന്നു.
  • $this വഴിയുള്ള കോളുകൾക്ക് മാത്രമായി പരിമിതപ്പെടുത്താതെ, എല്ലാ എക്സ്പ്രഷനുകളിലും അജ്ഞാത രീതികൾ കണ്ടെത്തൽ. PHPDocs പരിശോധിക്കുന്നു.
  • റിട്ടേൺ തരങ്ങൾ പരിശോധിക്കുകയും പ്രോപ്പർട്ടികൾക്ക് തരങ്ങൾ നൽകുകയും ചെയ്യുന്നു.
  • "മരിച്ച" (ഒരിക്കലും വിളിച്ചിട്ടില്ല) കോഡിന്റെ അടിസ്ഥാന തിരിച്ചറിയൽ. എല്ലായ്‌പ്പോഴും തെറ്റായി നൽകുന്ന കോളുകൾ, ഒരിക്കലും ഫയർ ചെയ്യാത്ത "മറ്റുള്ള" ബ്ലോക്കുകൾ, തിരിച്ചുവന്നതിന് ശേഷം കോഡ് എന്നിവ തിരിച്ചറിയുക.
  • രീതികളിലേക്കും പ്രവർത്തനങ്ങളിലേക്കും കൈമാറിയ ആർഗ്യുമെന്റുകളുടെ തരങ്ങൾ പരിശോധിക്കുന്നു.
  • നഷ്‌ടമായ തരത്തിലുള്ള വിവര വ്യാഖ്യാനങ്ങളെക്കുറിച്ചുള്ള മുന്നറിയിപ്പ്.
  • രണ്ടോ അതിലധികമോ തരങ്ങളുടെ ശേഖരങ്ങളെ നിർവചിക്കുന്ന തെറ്റായ യൂണിയൻ തരങ്ങളെക്കുറിച്ചുള്ള മുന്നറിയിപ്പ്.
  • "അസാധുവാക്കാവുന്ന" തരങ്ങളുള്ള കോൾ രീതികളെക്കുറിച്ചും പ്രോപ്പർട്ടികൾ ആക്സസ് ചെയ്യുന്നതിനെക്കുറിച്ചും മുന്നറിയിപ്പ്.
  • "മിക്സഡ്" തരം ഉപയോഗം പരിശോധിക്കുന്നു.

    തിരിച്ചറിഞ്ഞ അടിസ്ഥാന പ്രശ്നങ്ങളുടെ ഉദാഹരണങ്ങൾ:

    • ഉദാഹരണങ്ങൾ, ക്യാച്ച്, ടൈപ്പ്ഹിന്റുകൾ, മറ്റ് ഭാഷാ നിർമ്മാണങ്ങൾ എന്നിവയിൽ ഉപയോഗിക്കുന്ന ക്ലാസുകളുടെ അസ്തിത്വം.
    • വിളിക്കപ്പെടുന്ന രീതികളുടെയും പ്രവർത്തനങ്ങളുടെയും നിലനിൽപ്പും ലഭ്യതയും, അതുപോലെ പാസാക്കിയ ആർഗ്യുമെന്റുകളുടെ എണ്ണവും.
    • റിട്ടേൺ എക്‌സ്‌പ്രഷനിൽ നിർവചിച്ചിരിക്കുന്ന അതേ തരത്തിൽ രീതി ഡാറ്റ നൽകുന്നു എന്ന് പരിശോധിക്കുന്നു.
    • ആക്‌സസ് ചെയ്യപ്പെടുന്ന പ്രോപ്പർട്ടികളുടെ നിലനിൽപ്പും ദൃശ്യപരതയും, പ്രോപ്പർട്ടികളിൽ ഉപയോഗിക്കുന്ന പ്രഖ്യാപിതവും യഥാർത്ഥവുമായ ഡാറ്റ തരങ്ങൾ പരിശോധിക്കുന്നു.
    • സ്‌ട്രിംഗ് ഫോർമാറ്റിംഗ് ബ്ലോക്കിലെ സ്‌പ്രിന്റ്‌എഫ്/പ്രിന്റ്‌എഫ് കോളുകളിലേക്ക് നൽകിയ പാരാമീറ്ററുകളുടെ എണ്ണം ശരിയാണ്.
    • ബ്രാഞ്ചിംഗ് ഓപ്പറേറ്റർമാരും ലൂപ്പുകളും രൂപീകരിച്ച ബ്ലോക്കുകൾ കണക്കിലെടുത്ത് വേരിയബിളുകളുടെ അസ്തിത്വം.
    • ഉപയോഗശൂന്യമായ തരം കാസ്റ്റുകളും (ഉദാ. "(സ്ട്രിംഗ്) 'foo'") വ്യത്യസ്‌ത തരങ്ങളും പ്രവർത്തനങ്ങളുമുള്ള ഡാറ്റയിൽ കർശനമായ പരിശോധനകളും ("===" കൂടാതെ "!==") എപ്പോഴും തെറ്റായി നൽകുന്നവ.

    PHPStan 1.0-ലെ പ്രധാന കണ്ടുപിടുത്തങ്ങൾ:

    • "9" ചെക്ക് ലെവൽ നടപ്പിലാക്കി, അത് "മിക്സഡ്" തരത്തിന്റെ ഉപയോഗം പരിശോധിക്കുന്നു, വ്യത്യസ്ത തരങ്ങളുള്ള പാരാമീറ്ററുകളുടെ ഫംഗ്ഷന്റെ സ്വീകരണം സംഘടിപ്പിക്കുന്നതിന് ഉദ്ദേശിച്ചുള്ളതാണ്. ലെവൽ XNUMX "മിക്സഡ്" എന്നതിന്റെ സുരക്ഷിതമല്ലാത്ത ഉപയോഗങ്ങൾ തിരിച്ചറിയുന്നു, ഉദാഹരണത്തിന്, "മിക്സഡ്" എന്ന തരത്തിന്റെ മൂല്യങ്ങൾ മറ്റൊരു തരത്തിലേക്ക് കൈമാറുക, രീതികളെ "മിക്സഡ്" എന്ന് വിളിക്കുക, അവ നിലവിലില്ല എന്നതിനാൽ അതിന്റെ പ്രോപ്പർട്ടികൾ ആക്സസ് ചെയ്യുക.
    • @phpstan-pure, @phpstan-impure വ്യാഖ്യാനങ്ങൾ ഉപയോഗിച്ച് സമാന ഫംഗ്‌ഷൻ കോളുകൾക്ക് റിട്ടേൺ മൂല്യങ്ങൾ സമാനമാണോ എന്ന് നിയന്ത്രിക്കുക.
    • @throws വ്യാഖ്യാനങ്ങൾ ഉപയോഗിച്ച് try-catch-finally constructs-ൽ വിശകലനം ടൈപ്പ് ചെയ്യുക.
    • നിർവചിക്കപ്പെട്ടതും എന്നാൽ ഉപയോഗിക്കാത്തതുമായ ആന്തരിക (സ്വകാര്യ) പ്രോപ്പർട്ടികൾ, രീതികൾ, സ്ഥിരാങ്കങ്ങൾ എന്നിവയുടെ തിരിച്ചറിയൽ.
    • array_map, usort എന്നിവ പോലുള്ള അറേ ഫംഗ്‌ഷനുകളിലേക്ക് അനുയോജ്യമല്ലാത്ത കോൾബാക്കുകൾ കൈമാറുന്നു.
    • നഷ്‌ടമായ ടൈപ്പ്‌ഹൈന്റ് വ്യാഖ്യാനങ്ങൾക്കുള്ള ടൈപ്പ് പരിശോധന.
    • PHPDocs-ന് അനുയോജ്യമായ തരത്തിലുള്ള പ്രഖ്യാപനങ്ങൾ ഉണ്ടാക്കി, പിശക് സന്ദേശങ്ങളിൽ നിന്നുള്ള തരങ്ങൾ PHPDocs-ൽ ഉപയോഗിക്കാൻ അനുവദിക്കുന്നു.

    അവലംബം: opennet.ru

  • ഒരു അഭിപ്രായം ചേർക്കുക