ለPHP ኮድ የማይለዋወጥ ተንታኝ የPHPHPTAN 1.0 መልቀቅ

ከስድስት ዓመታት ልማት በኋላ፣ የመጀመሪያው የተረጋጋ የPHPStan 1.0 ልቀት፣ የማይንቀሳቀስ አናሊዘር፣ ተለቋል። በPHP ኮድ ውስጥ ስህተቶችን ሳያስፈጽሙ ወይም የዩኒት ሙከራዎችን ሳይጠቀሙ እንዲያገኙ ያስችልዎታል። የፕሮጀክቱ ኮድ በPHP የተጻፈ ሲሆን በMIT ፈቃድ ስር ይሰራጫል።

ተንታኙ 10 የማረጋገጫ ደረጃዎችን ይሰጣል፣ እያንዳንዱ ቀጣይ ደረጃ የቀደመውን አቅም ያሰፋዋል እና የበለጠ ጥብቅ ፍተሻዎችን ይሰጣል፡

  • መሰረታዊ ፍተሻዎች፣ የማይታወቁ ክፍሎችን መለየት፣ ተግባራት እና ዘዴዎች ($ይህ)፣ ያልተገለጹ ተለዋዋጮች እና የተሳሳተ የክርክር ብዛት ማለፍ።
  • ያልተገለጹ ሊሆኑ የሚችሉ ተለዋዋጮችን፣ የማይታወቁ የአስማት ዘዴዎችን እና የክፍል ባህሪያትን በ__call እና __get መለየት።
  • በሁሉም አገላለጾች ውስጥ የማይታወቁ ዘዴዎችን ይለያል፣ በ$this በኩል ለሚደረጉ ጥሪዎች ብቻ የተወሰነ አይደለም። የPHPDocs ቼከር።
  • የመመለሻ ዓይነቶችን መፈተሽ እና ዓይነቶችን ለባህሪያት መመደብ።
  • የ"ሞተ" (በፍፁም ያልተጠራ) ኮድ መሰረታዊ መለየት። ሁልጊዜ የሐሰት፣ "ሌላ" ብሎኮችን የሚመልሱ ጥሪዎችን ምሳሌ መለየት እና ከተመላሽ መግለጫዎች በኋላ ኮድ መስጠት።
  • ወደ ዘዴዎች እና ተግባራት የተላለፉ የክርክር ዓይነቶችን መፈተሽ።
  • የአይነት መረጃ ስላላቸው የጎደሉ ማብራሪያዎች ማስጠንቀቂያ።
  • ሁለት ወይም ከዚያ በላይ የሆኑ የስብስብ ዓይነቶችን የሚገልጹ ልክ ያልሆኑ የሰራተኛ ማህበር ዓይነቶችን በተመለከተ ማስጠንቀቂያ።
  • ስለ ጥሪ ዘዴዎች ማስጠንቀቂያ እና የማይታወቁ አይነቶች ያላቸውን ንብረቶች መድረስ።
  • የ"ድብልቅ" አይነት አጠቃቀምን ማረጋገጥ።

    የተገለጹት መሰረታዊ ችግሮች ምሳሌዎች፡

    • እንደ ምሳሌ፣ ማጥመጃ፣ የፊደል አጻጻፍ እና ሌሎች የቋንቋ ግንባታዎች ጥቅም ላይ የዋሉ የክፍሎች መኖር።
    • የተጠሩት ዘዴዎች እና ተግባራት መኖር እና መገኘት፣ እንዲሁም የሚተላለፉ የክርክር ብዛት።
    • አንድ ዘዴ በመመለሻ መግለጫው ውስጥ እንደተገለጸው ተመሳሳይ አይነት ውሂብ ይመልሳል ወይ የሚለውን ያረጋግጣል።
    • እየተደረሱ ያሉ ንብረቶች መኖር እና ታይነት፣ እና በንብረቶቹ ውስጥ ጥቅም ላይ የዋሉትን የተገለጸውን እና ትክክለኛ የውሂብ ዓይነቶችን መፈተሽ።
    • በክር ቅርጸት ብሎክ ውስጥ ወደ sprintf/printf ጥሪዎች የተላለፉ ትክክለኛ የልኬቶች ብዛት።
    • በቅርንጫፍ ኦፕሬተሮች እና ሉፖች የተፈጠሩ ብሎኮችን ግምት ውስጥ በማስገባት የተለዋዋጮች መኖር።
    • የማይጠቅሙ የአይነት ቀረጻዎች (ለምሳሌ "(string) 'foo'") እና ሁልጊዜ ሐሰት የሚመልሱ የተለያዩ አይነቶች እና ኦፔራዎች ባላቸው መረጃዎች ላይ ጥብቅ ፍተሻዎች ("===" እና "!==")።

    የ PHPStan 1.0 ቁልፍ ባህሪያት:

    • የማረጋገጫ ደረጃ "9" ተግባራዊ ሆኗል፣ ይህም የተለያዩ አይነቶችን መለኪያዎችን የሚቀበሉ ተግባራትን ለማስተናገድ የተነደፈውን "የተቀላቀለ" አይነት አጠቃቀምን ይፈትሻል። ደረጃ 9 "የተቀላቀለ" አይነት እሴቶችን ወደ ሌላ አይነት ማስተላለፍ፣ የ"የተቀላቀለ" አይነት ዘዴዎችን መጥራት እና ባህሪያቱን ማግኘት ያሉ ደህንነቱ የተጠበቀ አጠቃቀምን ይለያል፣ ምክንያቱም ላይኖሩ ይችላሉ።
    • ለተመሳሳይ የተግባር ጥሪዎች ተመሳሳይ የመመለሻ እሴቶችን ቼክ @phpstan-pure እና @phpstan-impure ማብራሪያዎችን በመጠቀም መቆጣጠር።
    • @throws ማብራሪያዎችን በመጠቀም በtry-catch-final ግንባታዎች ውስጥ የአይነት ትንተና።
    • የተገለጹ ነገር ግን ጥቅም ላይ ያልዋሉ ውስጣዊ (የግል) ባህሪያትን፣ ዘዴዎችን እና ቋሚዎችን መለየት።
    • ተኳሃኝ ያልሆኑ የጥሪ መልሶ ማገገሚያዎችን እንደ array_map እና usort ላሉ የድርድር አያያዝ ተግባራት ማስተላለፍ።
    • የታይፕ ፍንጭ ማብራሪያዎችን አለመኖራቸውን ዓይነቶችን ይመርምሩ።
    • የአይነት መግለጫዎች አሁን ከ PHPDocs ጋር ተኳሃኝ ናቸው፣ ይህም በ PHPDocs ውስጥ ከስህተት መልዕክቶች የመጡ አይነቶችን እንዲጠቀሙ ያስችልዎታል።

    ምንጭ: opennet.ru

  • በDDoS ጥበቃ፣ VPS VDS አገልጋዮች ለጣቢያዎች አስተማማኝ ማስተናገጃ ይግዙ 🔥 አስተማማኝ የድር ጣቢያ ማስተናገጃ በዲዶኤስ ጥበቃ፣ በቪፒኤስ ቪዲኤስ አገልጋዮች ይግዙ | ProHoster