ShellCheck 0.9 байгаа бөгөөд бүрхүүлийн скриптүүдэд зориулсан статик анализатор

ShellCheck 0.9 төслийн хувилбар хэвлэгдэн гарсан бөгөөд энэ нь bash, sh, ksh болон зураасны онцлогийг харгалзан скриптийн алдааг тодорхойлох боломжийг олгодог бүрхүүлийн скриптүүдийн статик дүн шинжилгээ хийх системийг боловсруулжээ. Төслийн кодыг Haskell дээр бичсэн бөгөөд GPLv3 лицензийн дагуу түгээдэг. Бүрэлдэхүүн хэсгүүдийг Vim, Emacs, VSCode, Sublime, Atom болон GCC-тэй нийцтэй алдааны тайлагналыг дэмждэг төрөл бүрийн хүрээтэй нэгтгэх зорилгоор хангасан.

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-тэй нийцэхгүй гэж тодотгох болно.

Шинэ хувилбарт:

  • 'local readonly foo' гэх мэт илэрхийлэлд анхааруулга нэмсэн.
  • Боломжгүй тушаалуудын талаар анхааруулга нэмсэн.
  • 'x=1 y=$x гэж зарлах' буцах холбоосын талаар анхааруулга нэмсэн.
  • $ бол анхааруулга нэмсэн үү? echo, printf, [ ], [[ ]] болон тестийн буцах кодыг хэвлэхэд ашигладаг.
  • ((..))inarray[((idx))]=val арилгах зөвлөмжийг нэмсэн.
  • Арифметик контекстэд давхар хашилтыг холбох зөвлөмжийг нэмсэн.
  • a[(x+1)]=val илэрхийлэл дэх хаалт арилгах зөвлөмжийг нэмсэн.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх