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