يتوفر ShellCheck 0.9 ، وهو محلل ثابت لبرامج shell النصية

تم نشر إصدار مشروع ShellCheck 0.9، لتطوير نظام للتحليل الثابت لنصوص Shell التي تدعم تحديد الأخطاء في البرامج النصية مع مراعاة ميزات bash وsh وksh وdash. كود المشروع مكتوب بلغة هاسكل ويتم توزيعه بموجب ترخيص GPLv3. يتم توفير المكونات للتكامل مع Vim وEmacs وVSCode وSublime وAtom وأطر العمل المختلفة التي تدعم الإبلاغ عن الأخطاء المتوافقة مع دول مجلس التعاون الخليجي.

يتوفر ShellCheck 0.9 ، وهو محلل ثابت لبرامج shell النصية

وهو يدعم تحديد كل من الأخطاء النحوية في التعليمات البرمجية، والتي تؤدي إلى عرض المترجم خطأً في وقت التنفيذ، والمشكلات الدلالية، والتي بسببها لا يتم تعطيل التنفيذ، ولكن تحدث حالات شاذة في سلوك البرنامج النصي. يمكن للمحلل أيضًا تحديد الاختناقات والمشاكل غير الواضحة والمزالق التي يمكن أن تؤدي إلى الفشل في ظل ظروف معينة.

من بين فئات الأخطاء المكتشفة، يمكننا ملاحظة مشاكل الهروب من الأحرف الخاصة وتأطيرها بين علامتي اقتباس، والأخطاء في التعبيرات الشرطية، والاستخدام غير الصحيح للأوامر، ومشاكل معالجة الوقت والتواريخ، والأخطاء النحوية النموذجية للمبتدئين. على سبيل المثال، عدم وجود مسافات عند مقارنة “[[ $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.

новой версии:

  • تمت إضافة تحذير لتعبيرات مثل "foo للقراءة المحلية فقط".
  • تمت إضافة تحذير حول الأوامر غير المتاحة.
  • تمت إضافة تحذير بشأن الروابط الخلفية لـ "declare x=1 y=$x".
  • تمت إضافة تحذير إذا $؟ يستخدم لطباعة رمز الإرجاع الخاص بـ echo وprintf و[ ] و [[ ]] والاختبار.
  • تمت إضافة توصية لإزالة ((..))inarray[((idx))]=val.
  • تمت إضافة توصية لتسلسل الأقواس المزدوجة في السياقات الحسابية.
  • تمت إضافة توصية لإزالة الأقواس في التعبير a[(x+1)]=val.

المصدر: opennet.ru

إضافة تعليق