ከስድስት ዓመታት ልማት በኋላ፣ የመጀመሪያው የተረጋጋ የPHPStan 1.0 ልቀት፣ የማይንቀሳቀስ አናሊዘር፣ ተለቋል። በPHP ኮድ ውስጥ ስህተቶችን ሳያስፈጽሙ ወይም የዩኒት ሙከራዎችን ሳይጠቀሙ እንዲያገኙ ያስችልዎታል። የፕሮጀክቱ ኮድ በPHP የተጻፈ ሲሆን በMIT ፈቃድ ስር ይሰራጫል።
ተንታኙ 10 የማረጋገጫ ደረጃዎችን ይሰጣል፣ እያንዳንዱ ቀጣይ ደረጃ የቀደመውን አቅም ያሰፋዋል እና የበለጠ ጥብቅ ፍተሻዎችን ይሰጣል፡
የተገለጹት መሰረታዊ ችግሮች ምሳሌዎች፡
- እንደ ምሳሌ፣ ማጥመጃ፣ የፊደል አጻጻፍ እና ሌሎች የቋንቋ ግንባታዎች ጥቅም ላይ የዋሉ የክፍሎች መኖር።
- የተጠሩት ዘዴዎች እና ተግባራት መኖር እና መገኘት፣ እንዲሁም የሚተላለፉ የክርክር ብዛት።
- አንድ ዘዴ በመመለሻ መግለጫው ውስጥ እንደተገለጸው ተመሳሳይ አይነት ውሂብ ይመልሳል ወይ የሚለውን ያረጋግጣል።
- እየተደረሱ ያሉ ንብረቶች መኖር እና ታይነት፣ እና በንብረቶቹ ውስጥ ጥቅም ላይ የዋሉትን የተገለጸውን እና ትክክለኛ የውሂብ ዓይነቶችን መፈተሽ።
- በክር ቅርጸት ብሎክ ውስጥ ወደ sprintf/printf ጥሪዎች የተላለፉ ትክክለኛ የልኬቶች ብዛት።
- በቅርንጫፍ ኦፕሬተሮች እና ሉፖች የተፈጠሩ ብሎኮችን ግምት ውስጥ በማስገባት የተለዋዋጮች መኖር።
- የማይጠቅሙ የአይነት ቀረጻዎች (ለምሳሌ "(string) 'foo'") እና ሁልጊዜ ሐሰት የሚመልሱ የተለያዩ አይነቶች እና ኦፔራዎች ባላቸው መረጃዎች ላይ ጥብቅ ፍተሻዎች ("===" እና "!==")።
የ PHPStan 1.0 ቁልፍ ባህሪያት:
- የማረጋገጫ ደረጃ "9" ተግባራዊ ሆኗል፣ ይህም የተለያዩ አይነቶችን መለኪያዎችን የሚቀበሉ ተግባራትን ለማስተናገድ የተነደፈውን "የተቀላቀለ" አይነት አጠቃቀምን ይፈትሻል። ደረጃ 9 "የተቀላቀለ" አይነት እሴቶችን ወደ ሌላ አይነት ማስተላለፍ፣ የ"የተቀላቀለ" አይነት ዘዴዎችን መጥራት እና ባህሪያቱን ማግኘት ያሉ ደህንነቱ የተጠበቀ አጠቃቀምን ይለያል፣ ምክንያቱም ላይኖሩ ይችላሉ።
- ለተመሳሳይ የተግባር ጥሪዎች ተመሳሳይ የመመለሻ እሴቶችን ቼክ @phpstan-pure እና @phpstan-impure ማብራሪያዎችን በመጠቀም መቆጣጠር።
- @throws ማብራሪያዎችን በመጠቀም በtry-catch-final ግንባታዎች ውስጥ የአይነት ትንተና።
- የተገለጹ ነገር ግን ጥቅም ላይ ያልዋሉ ውስጣዊ (የግል) ባህሪያትን፣ ዘዴዎችን እና ቋሚዎችን መለየት።
- ተኳሃኝ ያልሆኑ የጥሪ መልሶ ማገገሚያዎችን እንደ array_map እና usort ላሉ የድርድር አያያዝ ተግባራት ማስተላለፍ።
- የታይፕ ፍንጭ ማብራሪያዎችን አለመኖራቸውን ዓይነቶችን ይመርምሩ።
- የአይነት መግለጫዎች አሁን ከ PHPDocs ጋር ተኳሃኝ ናቸው፣ ይህም በ PHPDocs ውስጥ ከስህተት መልዕክቶች የመጡ አይነቶችን እንዲጠቀሙ ያስችልዎታል።
ምንጭ: opennet.ru
