ShellCheck 0.9 موجود است، یک تحلیلگر استاتیک برای اسکریپت های پوسته

انتشار پروژه ShellCheck 0.9 منتشر شده است که سیستمی را برای تجزیه و تحلیل استاتیک اسکریپت های پوسته توسعه می دهد که از شناسایی خطاها در اسکریپت ها با در نظر گرفتن ویژگی های bash، sh، ksh و dash پشتیبانی می کند. کد پروژه به زبان 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}" به عنوان ناسازگار با dash و sh برجسته می شود.

در نسخه های جدید:

  • هشدار برای عباراتی مانند "فو فقط خواندنی محلی" اضافه شده است.
  • هشدار در مورد دستورات در دسترس اضافه شده است.
  • هشدار در مورد بک لینک ها به "اعلام x=1 y=$x" اضافه شده است.
  • هشدار اضافه شده اگر $؟ برای چاپ کد بازگشتی echo، printf، [ ]، [[]] و تست استفاده می شود.
  • توصیه برای حذف ((..))inarray[((idx))]=val.
  • توصیه ای برای الحاق دو پرانتز در زمینه های حسابی اضافه شده است.
  • یک توصیه برای حذف پرانتز در عبارت a[(x+1)]=val اضافه کرد.

منبع: opennet.ru

اضافه کردن نظر