عن المشروع

ShellCheck أداة تحليل ثابتة لنصوص bash/sh، مُتاحة تحت رخصة GNU GPLv3. تفحص النصوص وتُصدر تحذيرات واقتراحات بدلًا من تنفيذها. تهدف إلى توضيح أخطاء الصياغة للمبتدئين التي تُنتج أخطاء صياغية معقدة، والمشاكل الدلالية المتوسطة التي تجعل الأصداف تعمل بشكل غير متوقع، والاعتبارات الدقيقة أو الحالات الحدية التي قد تُعطل النصوص التي تعمل بشكل جيد. يُوثق الملف README مجموعة واسعة من فئات المشكلات المُكتشفة: مشكلات الإشارة (متغيرات غير مُشار إليها، توسيع تيلدا المُشار إليه، إشارات مُغلقة في المتغيرات، مُضاعفات مُشار إليها مبكرًا)، أخطاء الشروط (تعبيرات اختبار ثابتة، فراغات مفقودة، تعبيرات منتظمة مُشار إليها في =~، مشغلات [ ] غير مدعومة)، الأوامر المُستخدمة بشكل خاطئ (أقنعة في سياقات تعبيرات منتظمة، إعادة توجيه sudo، استخدام exec الخاطئ، ترتيب العثور الضمني)، أخطاء صياغة المبتدئين (مسافات حول = في التعيينات، مصفوفات مفصولة بفواصل، else if)، اقتراحات الأسلوب (cat الزائد، الاقتباسات العكسية مقابل $()، كتل إعادة التوجيه)، أخطاء البيانات والأنواع (تعيين مصفوفات إلى سلاسل، اختلاف عدد 매개ات printf، تعيينات في subshells)، مخاوف الموثوقية (حذف مُدمر، أقنعة قد تصبح خيارات، اختراق shell في find -exec)، وتحذيرات التوافق المرتبطة بالShebang، مشابهة لـ checkbashisms. تُصف خيارات الاستخدام: لصق النصوص على shellcheck.net، تشغيل `shellcheck yourscript` في Terminal، تكاملات المحرر (Vim عبر ALE/Neomake/Syntastic، Emacs عبر Flycheck/Flymake، Sublime عبر SublimeLinter، Pulsar، VSCode، وتوافق GCC لمحررات أخرى)، ودمجها في مجموعات البناء أو الاختبار باستخدام أكواد الخروج، مع أمثلة لملفات Make وTravis CI. يشير الملف README إلى توفره مُثبتًا مسبقًا على خدمات مثل Travis CI، Codacy، Code Climate، Code Factor، CircleCI، GitHub Actions (فقط Linux)، Trunk Code Quality، وCodeRabbit، ويُوصي بتثبيت إصدار محدد لتجنب كسر البناء المفاجئ. تنسق التنسيقات الإخراجية بين نص قابل للقراءة بوضوح مع أو بدون ألوان ANSI، وJSON، وXML متوافقة مع CheckStyle، وتحذيرات مماثلة لـ GCC، مع وثائق التكامل على ويكى المشروع. يُغطي التثبيت عبر العديد من مُدرّجي الحزم (Cabal، Stack، apt، pacman، emerge، yum، dnf، pkg، Homebrew، MacPorts، zypper، eopkg، Chocolatey، winget، scoop، conda-forge، Snap، Nix، Flox)، صور Docker (koalaman/shellcheck وshellcheck-alpine)، ملفات ثنائية مُعدة مسبقًا لـ Linux x86_64/armv6hf/aarch64، macOS aarch64/x86_64، وWindows x86، بالإضافة إلى تكوين مُعدّل مسبقًا. يتطلب بناء من المصدر Haskell وCabal، مع ملاحظة حوالي 2 جيجابايت من الذاكرة العشوائية للاستدراك، ويُجرى الاختبارات عبر `cabal test`. يمكن تجاهل المشكلات عبر متغير بيئة، سطر الأوامر، بشكل فردي، أو عالمي داخل ملف. تُقبل المساهمات كطلبات سحب على GitHub تحت رخصة GPLv3، ويُشير الملف README إلى ويكى لوصف مفصل لكل رمز تحذير، و إلى shfmt للتنسيق، الذي لا يُفرضه ShellCheck بشكل قسري.