ShellCheck 0.9 አለ፣ ለሼል ስክሪፕቶች የማይንቀሳቀስ ተንታኝ

የሼል ቼክ 0.9 ፕሮጀክት ታትሟል፣ የሼል ስክሪፕቶችን የማይለዋወጥ ትንተና ስርዓት በማዘጋጀት በስክሪፕት ውስጥ ያሉ ስህተቶችን የባሽ፣ sh፣ ksh እና dash ባህሪያትን ከግምት ውስጥ በማስገባት። የፕሮጀክት ኮድ በ Haskell የተጻፈ እና በ GPLv3 ፍቃድ ስር ተሰራጭቷል። አካላት ከጂሲሲ ጋር ተኳሃኝ የሆነ የስህተት ሪፖርት ማድረግን የሚደግፉ ከቪም፣ ኢማክስ፣ ቪኤስኮድ፣ ሱብሊም፣ አቶም እና የተለያዩ ማዕቀፎች ጋር ለመዋሃድ ቀርበዋል።

ShellCheck 0.9 አለ፣ ለሼል ስክሪፕቶች የማይንቀሳቀስ ተንታኝ

በኮዱ ውስጥ ያሉትን ሁለቱንም የአገባብ ስሕተቶች መለየትን ይደግፋል፣ ይህም አስተርጓሚው በሚፈፀምበት ጊዜ ስህተትን እንዲያሳይ እና የትርጉም ችግሮች እንዲፈጠሩ ያደርጋል፣ በዚህ ምክንያት አፈፃፀም ያልተስተጓጎለ ነገር ግን በስክሪፕቱ ባህሪ ላይ ያልተለመዱ ነገሮች ይከሰታሉ። ተንታኙ በአንዳንድ ሁኔታዎች ወደ ውድቀቶች ሊመሩ የሚችሉ ማነቆዎችን፣ ግልጽ ያልሆኑ ችግሮችን እና ወጥመዶችን መለየት ይችላል።

ከተገኙ ስህተቶች ክፍሎች መካከል ልዩ ቁምፊዎችን በማምለጥ እና በጥቅሶች ውስጥ በመቅረጽ ፣ በሁኔታዊ መግለጫዎች ላይ ስህተቶች ፣ ትዕዛዞችን በትክክል አለመጠቀም ፣ ጊዜ እና ቀናትን የማስኬድ ችግሮች እና ለጀማሪዎች የተለመዱ የአገባብ ስህተቶችን ማስተዋል እንችላለን። ለምሳሌ፣ “[[$foo==0]]”ን ሲያወዳድሩ የቦታዎች አለመኖር፣የቦታዎች መገኘት “var = 42” ወይም የ$ ምልክቱ “$foo=42” ሲመደብ፣ ተለዋዋጮችን መጠቀም ያለ ጥቅሶች "echo $1"፣ በ"tr -cd '[a-zA-Z0-9]'" ውስጥ ያሉ ተጨማሪ የካሬ ቅንፎች ማሳያ

በተጨማሪም፣ የኮድ ዘይቤን ለማሻሻል፣ የመንቀሳቀስ ችግሮችን ለማስወገድ እና የስክሪፕቶችን አስተማማኝነት ለመጨመር ምክሮችን መውጣቱን ይደግፋል። ለምሳሌ፣ ከ “echo $[1+2]” ይልቅ “$((..))” የሚለውን አገባብ ለመጠቀም ይመከራል፣ የግንባታ 'rm -rf “$STEAMROOT/”*' ደህንነቱ ያልተጠበቀ ምልክት ይደረግበታል። እና ተለዋዋጭው $STEAMROOT ካልተሞላ የስር ማውጫውን መሰረዝ የሚችል እና የ"echo {1..10}" አጠቃቀም ከዳሽ እና sh.

በአዲሱ ስሪት:

  • እንደ «አካባቢያዊ ተነባቢ ብቻ foo» ላሉ አባባሎች የታከለ ማስጠንቀቂያ።
  • ስለማይገኙ ትዕዛዞች ተጨማሪ ማስጠንቀቂያ።
  • ስለ የኋላ አገናኞች 'ማወጅ x=1 y=$x' ማስጠንቀቂያ ታክሏል።
  • $ ከሆነ ማስጠንቀቂያ ታክሏል? የ echo፣ printf፣ []፣ [[]] እና የፈተናውን መመለሻ ኮድ ለማተም ያገለግላል።
  • ለማስወገድ ምክር ታክሏል ((...)) inarray[((idx))]=ቫል።
  • ድርብ ቅንፎችን በስሌት አውዶች ውስጥ ለማጣመር ምክር ታክሏል።
  • a[(x+1)]=val በሚለው አገላለጽ ቅንፍ ለማስወገድ ምክር ታክሏል።

ምንጭ: opennet.ru

አስተያየት ያክሉ