ShellCheck 0.9 شتون لري، د شیل سکریپټونو لپاره یو جامد تحلیل کونکی

د ShellCheck 0.9 پروژې خپرول خپاره شوي، د شیل سکریپټونو د جامد تحلیل لپاره یو سیسټم رامینځته کوي چې د bash، sh، ksh او dash ځانګړتیاوو په پام کې نیولو سره په سکریپټونو کې د غلطیو پیژندلو ملاتړ کوي. د پروژې کوډ په هاسکل کې لیکل شوی او د GPLv3 جواز لاندې ویشل شوی. اجزاوې د Vim، Emacs، VSCode، Sublime، Atom، او مختلف چوکاټونو سره د ادغام لپاره چمتو شوي چې د GCC سره مطابقت لرونکي خطا راپور ورکولو ملاتړ کوي.

ShellCheck 0.9 شتون لري، د شیل سکریپټونو لپاره یو جامد تحلیل کونکی

دا په کوډ کې د دواړو نحوي غلطیو پیژندلو ملاتړ کوي، کوم چې د ژباړونکي د اجرا کولو په وخت کې د خطا ښودنه کوي، او سیمانټیک ستونزې، چې له امله یې اجرا کول نه ګډوډ کیږي، مګر د سکریپټ په چلند کې ګډوډي رامنځته کیږي. تحلیل کونکی کولی شي خنډونه ، غیر څرګند ستونزې او نیمګړتیاوې هم وپیژني چې په ځانګړو شرایطو کې د ناکامۍ لامل کیدی شي.

د کشف شوي غلطیو ټولګیو په مینځ کې ، موږ کولی شو د ځانګړو حروفونو څخه د تیښتې او په نرخونو کې د چوکاټ کولو ستونزې یاد کړو ، په مشروط څرګندونو کې غلطۍ ، د کمانډونو ناسمه کارول ، د وخت او نیټو پروسس کولو ستونزې ، او د پیل کونکو لپاره د نحوي ترکیب غلطۍ. د مثال په توګه، د ځای نشتوالی کله چې د "[[$foo==0 ]]" پرتله کول، د ځایونو شتون "var = 42" یا د $ سمبول نښه کله چې د "$foo=42" ټاکل، د متغیرونو کارول پرته له نرخونو "echo $1"، په "tr -cd '[a-zA-Z0-9]' کې د اضافي مربع بندونو نښه"،

سربیره پردې ، دا د کوډ سټایل ښه کولو ، د پورټ وړتیا ستونزې له مینځه وړو ، او د سکریپټونو اعتبار ډیرولو لپاره د وړاندیزونو محصول ملاتړ کوي. د مثال په توګه، د "ایکو $[1+2]" پر ځای به د "$((..))" نحو کارولو وړاندیز وشي، ساختمان 'rm -rf "$STEAMROOT/"*' به د غیر خوندي په توګه نښه شي او د روټ ډایرکټر د ړنګولو توان لري که چیرې متغیر $STEAMROOT ډک شوی نه وي، او د "echo {1..10}" کارول به د ډش او sh سره غیر مطابقت لرونکي په توګه روښانه شي.

په نوې نسخه کې:

  • د څرګندونو لپاره اخطار اضافه شوی لکه د 'ځایی لوستلو یوازې foo'.
  • د نه شتون کمانډونو په اړه خبرداری اضافه شوی.
  • 'x=1 y=$x اعلان کړئ' ته د بیک لنکس په اړه خبرداری اضافه شوی.
  • اضافه اخطار که $؟ د echo، printf، []، [[]] او ټیسټ د بیرته راستنیدو کوډ چاپ کولو لپاره کارول کیږي.
  • د ((..))inarray [((idx))]=val د لرې کولو لپاره وړاندیز اضافه شوی.
  • د ریاضی په شرایطو کې د دوه ګونی قوسونو د یوځای کولو لپاره وړاندیز اضافه شوی.
  • په بیان a[(x+1)]=val کې د قوسونو لرې کولو لپاره وړاندیز اضافه شوی.

سرچینه: opennet.ru

Add a comment