مع ظهور تطبيقات الواجهة الأمامية للويب الغنية، يتعين على المطورين إعادة النظر والاهتمام بقدرات واستخدام لغة JavaScript، والتخلي عن النموذج السابق المتمثل في "نسخ/لصق" البرامج النصية الشائعة لإكمال مهام الواجهة الأمامية البسيطة . لغة جافا سكريبت نفسها هي لغة برمجة مكتوبة بشكل ضعيف مع قيود أكثر مرونة من لغة C ++ أو لغة جافا، كما توفر جميع أفكار البرمجة الوظيفية التي تركز على الوظائف للمطورين تطبيقات بناء جملة أكثر مرونة. ومع ذلك، في حين أن هذه المرونة تجلب الكفاءة، فإنها تصبح أيضًا كابوسًا لمطوري JavaScript المبتدئين أو عديمي الخبرة. لقد أثرت أنماط البرمجة المختلفة وسلوكيات التعليمات البرمجية الخاطئة بشكل خطير على سهولة قراءة التعليمات البرمجية العامة واستقرارها، وأصبحت واحدة من أكثر المشكلات شيوعًا في مشاريع الويب.
لذلك، نحتاج إلى أداة فعالة لجودة كود JavaScript حتى نتمكن من اكتشاف المشكلات المخفية في كود JavaScript وتصحيحها على الفور وضمان جودة تسليم التعليمات البرمجية. باعتبارها أداة مرنة وفعالة لفحص جودة تعليمات برمجية JavaScript، تسمح JSLint للمستخدمين بتحديد اصطلاحات نمط الترميز التي تلبي احتياجاتهم المحددة لتطوير التطبيقات، مما يجعل المشروع بأكمله موحدًا في الأسلوب. طريقة العمل المبنية على "القواعد" (الخيارات) تجعل JSLint قابلاً للتطبيق لتلبية احتياجات الكشف عن التعليمات البرمجية المختلفة. ستقدم هذه المقالة للقراء أولاً المفاهيم والوظائف الأساسية لـ JSLint، وتشرح طريقة عملها القائمة على القواعد، ثم توضح استخدامها الأساسي من خلال مثال، وأخيرًا، ستقدم كيفية دمج JSLint في عملية تطبيق Ant وEclipse لتوضيح جميع الجوانب كيفية استخدام JSLint في مهام التطوير اليومية.
ما هو JSLint
باعتبارها لغة حديثة ذات بنية مرنة ومتطلبات تنسيق فضفاضة نسبيًا، تحتوي JavaScript على تنسيقات تعليمات برمجية مربكة واستخدام غير صحيح لميزات لغة معينة، مما يؤدي غالبًا إلى احتواء المنتج النهائي الذي تم تسليمه على العديد من الأخطاء غير المتوقعة الناتجة عن سلوكيات أو أخطاء في أسلوب البرمجة لا تتم الإشارة إلى المشكلات المعتادة وتصحيحها في الوقت المناسب، بل غالبًا ما تتكرر أثناء عملية تكرار المشروع، مما يؤثر بشكل خطير على استقرار وأمن منتجات الويب. JSLint هي أداة أنشأها Douglas Crockford لحل مثل هذه المشكلات، بالإضافة إلى الإشارة إلى هذه الاصطلاحات غير المعقولة، يمكن لـ JSLint أيضًا تحديد المشكلات الهيكلية. على الرغم من أن JSLint لا يمكنها ضمان صحة منطق التعليمات البرمجية، إلا أنها يمكن أن تساعد في العثور على الأخطاء وتعليم المطورين بعض ممارسات البرمجة الجيدة. ومن الجدير بالذكر أن أداة JSLint نفسها هي أيضًا جزء من كود JavaScript وهي عبارة عن برنامج JavaScript يتحقق من جودة كود JavaScript. يتضمن فحص جودة JSLint لنصوص JavaScript بشكل أساسي الجوانب التالية:
• اكتشاف الأخطاء النحوية: على سبيل المثال، الاقتران غير الصحيح بين الأقواس المتعرجة "{}".
•مواصفات تعريف المتغير: مثل الكشف عن المتغيرات غير المحددة.
•مواصفات تنسيق الكود: على سبيل المثال، الفاصلة المنقوطة المفقودة في نهاية الجملة.
• الكشف عن استخدام ميزات اللغة السيئة: قيود الاستخدام مثل التقييم ومع.
لقد كان تحديث إصدار JSLint نشطًا حتى وقت كتابة هذه المقالة، وتم إصدار أحدث إصدار من JSLint بتاريخ 2010-10-10. توفر العديد من برامج تحرير التعليمات البرمجية السائدة دعمًا موسعًا جيدًا لـ JSLint، بما في ذلك Eclipse وVS2008 وما إلى ذلك.
يوجد حاليًا العديد من أدوات اكتشاف أكواد JavaScript ذات وظائف مشابهة لـ JSLint، بما في ذلك: YUI Test وFirebug وMS Script Debugger وCompanionJS وما إلى ذلك. ويوجد معظمها في شكل مكونات إضافية للمتصفح في متصفح العميل لتشغيل JavaScript. الفرق المهم بين JSLint وهذه الأدوات هو أنها تولي المزيد من الاهتمام لاكتشاف وتصحيح تنسيقات التعليمات البرمجية الثابتة، وهو بالضبط ما هو مطلوب ويدعو إليه البناء المستمر في التطوير السريع الحالي.
فهم قواعد JSLint
يكمن المبدأ الأساسي لفحص جودة كود JSLint في مجموعة القواعد التي وضعها المستخدم. تحتوي مجموعة القواعد التي توفرها JSLint افتراضيًا على أنماط التطوير التي تراكمت لدى مطوري الويب على مر السنين ونعتبرها سيئة، ويمكننا اختيار بناء مجموعة محددة من القواعد وفقًا لاحتياجات مشاريعنا الخاصة. سيقوم JSLint بفحص نصوص JavaScript بناءً عليها ويقدم معلومات وصف المشكلة المقابلة. القواعد في شكل مجموعات متعددة من أزواج القيمة الرئيسية: [param:option]، مع اسم القاعدة كمفتاح وما إذا كانت القاعدة تسمى أم لا كقيمة. على سبيل المثال، القاعدة: "plusplus:true" لا تسمح بظهور عوامل التشغيل ++ و-، ولا تسمح القاعدة "undef:true" باستخدام متغيرات غير محددة.
نظرًا لأن أداة JSLint هي في الأساس برنامج نصي JS عادي، فإن تشغيلها يعتمد بشكل طبيعي على محرك وقت تشغيل JS، بعد تحميله بواسطة المحرك، سيقوم بإنشاء كائن دالة JSLint عام في الذاكرة. يتطلب كائن الوظيفة هذا مدخلين: المصدر والخيارات. يتم استخدام الأول لتحديد السلسلة أو صفيف السلسلة الذي تم إنشاؤه بعد تحليل ملف البرنامج النصي المراد اكتشافه، ويمثل الأخير خيارات القاعدة المحددة من قبل المستخدم. إذا كانت الخيارات فارغة، يستخدم JSLint قواعده الافتراضية لفحص المصدر واكتشافه.
عملية الكشف بأكملها هي عملية تنفيذ لوظيفة JSLINT (المصدر، الخيارات) الموجودة في البرنامج النصي. عندما يمرر البرنامج النصي المصدر المحدد الاكتشاف ضمن شرط الخيارات، يُرجع JSLint صحيحًا، وإلا فإنه يُرجع خطأ، وفي هذا الوقت، يمكن الحصول على معلومات مفصلة عن الخطأ من خلال كائن JSLINT.errors. يوضح الشكل 1 عملية عمل JSLint بأكملها.
الشكل 1. رسم تخطيطي لعملية عمل JSLint
كما هو موضح في الشكل، هناك ثلاث طرق لتكوين مجموعة القواعد:
1. قم بتعديل القواعد الافتراضية مباشرة عن طريق تعديل كود مصدر JSLint.js.
2. عند تشغيل وظيفة JSLint، قم بتعيين معلمة الخيارات في نفس الوقت وقم بتغيير خيارات القاعدة الخاصة بها ديناميكيًا (الكتابة الفوقية أولاً). هذه الطريقة مناسبة لاستخدام نفس مجموعة القواعد المخصصة لملفات js الدفعية.
3. أضف قواعد خاصة (الكتابة الثانية) تنطبق على كود ملف js واحد عن طريق إضافة قواعد نوع التعليق التوضيحي إلى رأس ملف js المراد اكتشافه. هذه الطريقة مناسبة لتعيين قواعد اكتشاف محددة لملفات js المختلفة، وعادةً ما تُستخدم لإدخال بعض المتغيرات العامة في الملف.