عن المشروع

AutoFFF هو أداة Python مبنية على الحوسبة تُنتج تلقائيًا تعريفات دالة وهمية (FFF) للملفات الرأسية لـ C، مما يحل مشكلة شائعة في اختبار الوحدات للبرمجيات المدمجة. تواجه اختبار البرمجيات المدمجة على جهاز الاستضافة صعوبة لأن بنية الاستضافة تختلف عن بنية الجهاز المستهدف، ولا يدعم بيئات الاستضافة عادةً الربط الديناميكي، كما أن لغة C لا توفر مراجعة وقت التشغيل للشفرة المختبرة لتعديلها. الفرضية العامة لحذف واجهات برمجة التطبيقات المستهدفة عبر ربط الشفرة المختبرة مع تنفيذات وهمية تحل هذه المشكلة، لكن كتابة تعريفات وهمية يدويًا لكل دالة API متعبة، تتطلب جهدًا كبيرًا، عرضة للأخطاء، وتؤدي إلى تدهور الكود (code rot) عندما تتغير الواجهات الأصلية. AutoFFF يُ automatize هذه العملية عبر تحليل ملفات الرأسية لـ C وتوليد رؤوس اختبار جاهزة للاستخدام مع تعريفات وهمية متوافق مع FFF. يتبع الفلسفة "التغليف" (wrapping): تحتوي رؤوس الاختبار المولدة على رأس الملف الأصلي لتستمد كل أنواع المتغيرات، والدوال، والإعلانات، وتضيف فقط التعريفات الوهمية الضرورية. هذا أكثر قابلية للصيانة مقارنة بالاستراتيجية "حظر" (banning) التي تتطلب إعادة إعلان يدوي لكل عنصر واجهة برمجة التطبيقات وتكون أكثر عرضة للاختلاف عن الرؤوس الأصلية. يحتوي الأداة على حل مدمج لتعامل مع الدوال المعرفة داخل ملفات الرأس، والتي قد تسبب أخطاء إعادة تعريف عند الفتح. يستخدم هذا الحل إعادة توجيه عبر ماكرو (macro) لتحويل استدعاءات الدالة داخل الرأس إلى التعريف الوهمي المولد، شريطة أن يُضمّن رأس الاختبار قبل شفرة الاختبار في ملفات الاختبار. يدعم AutoFFF العمل مع مكتبات ذات سياسات تضمين صارمة (مثل FreeRTOS أو CMSIS) عبر خيارات سطر الأوامر لإدراج رؤوس إضافية أو تعريف ماكرو أثناء التحليل. يتيح لك خيارات متعددة للتكامل: تشغيله كجهة مستقلة في سطر الأوامر، استخدامه كحزمة Python في سكريبتات مخصصة، أو دمجه في أنظمة البناء مثل Make عبر ملفات Makefile مثالية. يوفر أداتان لتوليد: BareFakeGenerator ينتج تعريفات وهمية صريحة فقط دون غلاف رأس، للمستخدمين الذين يرغبون في إضافة معالجة مخصصة، بينما SimpleFakeGenerator يولد رؤوس اختبار قابلة للتجميع الحد الأدنى مع حواجز تضمين (include guards) وال включات المطلوبة جاهزة. AutoFFF مُتوفر تحت رخصة MIT، متاح عبر PyPI، ويحتاج إلى مجموعة رؤوس libc الوهمية (fake_libc_include) من مشروع pycparser لتحليل C، وهي ليست مرفقة مع إصدارة pip ويجب الحصول عليها بشكل منفصل من مستودع pycparser.