بعد ثلاث سنوات من التطوير تم الإعلان عن إصدار الإصدار الجديد من الأداة GNU cflow 1.7. بالنسبة لأولئك الذين ليسوا على دراية بهذه الأداة ، يجب أن يعرفوا أنها كذلك مصمم لبناء رسم بياني مرئي لاستدعاءات الوظائف في برامج سي، والتي يمكن استخدامها لتبسيط دراسة منطق التطبيق.
الرسم البيانيأو أنها مبنية فقط من تحليل النصوص المصدر، دون الحاجة إلى تشغيل البرنامج ، بالإضافة إلى أنه يدعم إنشاء الرسوم البيانية للتدفق الأمامي والخلفي ، بالإضافة إلى إنشاء قوائم المراجع التبادلية للملفات ذات التعليمات البرمجية.
الحزمة تعمل بكامل طاقتها وتجمع وتعمل على أي توزيعة GNU / Linux وأيضًا على أنظمة أحدث شبيهة بـ UNIX. وهو يدعم جميع أوامر تبديل الخط المطلوبة بواسطة POSIX. إنه قادر على إنتاج مخرجات بصيغتين: تنسيق GNU cflow (وهو الإعداد الافتراضي) وتنسيق POSIX.
حاليًا ، يمكن للأداة المساعدة معالجة خطوط C فقط ، لأن هذا هو الانحراف الوحيد عن مواصفات POSIX ، الأمر الذي يتطلب القدرة على معالجة خطوط YACC و LEX ، بالإضافة إلى ملفات الكائنات الثنائية.
تعمل وحدة cflow-mode.el Emacs مع الملفات بتنسيق GNU cflow (على عكس تنسيق POSIX) وتم اختبارها باستخدام Emacs 24.2.1.
الميزات الرئيسية الجديدة لـ GNU cflow 1.7
في هذا الإصدار الجديد ملحوظًا في تقديم الدعم لتنسيق الإخراج "نقطة" ('–format = dot') لتوليد نتيجة DOT لمزيد من المعالجة في حزمة Graphviz.
بالإضافة إلى ذلك ، تم تسليط الضوء أيضًا على أن إضافة القدرة على تحديد وظائف متعددة لبدء التشغيل من خلال تكرار خيارات "الرئيسية" ، والتي سيتم إنشاؤها برسم بياني منفصل لكل من هذه الوظائف.
ويلاحظ أيضًا أنه تمت إضافة الخيار "–target = FUNCTION" لتقييد الرسم البياني الناتج بفرع واحد فقط الذي يتضمن وظائف معينة (يمكن تحديد خيار "الهدف" عدة مرات).
تغيير آخر تم دمجه في هذا الإصدار الجديد من جنو cflow 1.7 هو أن تمت إضافة أوامر جديدة للتنقل في المخطط a cflow-mode: "c" الذي يستخدم للانتقال إلى وظيفة الاستدعاء ، "n" التي تُستخدم للانتقال إلى الوظيفة التالية في مستوى التداخل هذا و "p" للانتقال إلى الوظيفة السابقة بنفس مستوى التداخل .
من ناحية أخرى ، تم ذكره أيضًا في الإعلان عن هذا الإصدار الجديد من GNU cflow 1.7 أيضًا اثنين من نقاط الضعف إزالتها التي تم تحديدها في عام 2019 مما تسبب في تلف الذاكرة عند معالجة نصوص المصدر المصممة خصيصًا في cflow.
من نقاط الضعف التي تم إصلاحها ، تم ذكر ما يلي:
- تحدث الثغرة الأمنية الأولى (CVE-2019-16165) عندما يتم الوصول إلى الذاكرة بعد الاستخدام المجاني (الاستخدام بعد الحر) في رمز المحلل اللغوي (الوظيفة المشار إليها في parser.c).
- ترتبط الثغرة الأمنية الثانية (CVE-2019-16166) بتدفق المخزن المؤقت في دالة nexttoken (). في رأي المطورين ، لا تمثل هذه المشكلات تهديدًا أمنيًا ، لأنها تقتصر على الإنهاء غير الطبيعي للأداة.
أخيرا إذا كنت مهتمًا بمعرفة المزيد عنها حول هذا الإصدار الجديد ، يمكنك التحقق من التفاصيل في الرابط التالي.
كيفية تثبيت cflow على نظام Linux؟
بالنسبة لأولئك الذين يرغبون في التمكن من تثبيت هذه الأداة المساعدة على نظامهم ، يجب أن يعرفوا أن cflow موجود داخل مستودعات بعض توزيعات Linux الرئيسية. لا يسعني إلا أن أذكر أن النسخة الجديدة لم يتم تنفيذها بعد في بعضها ، لكنها ستكون جاهزة في غضون أيام.
في حالة مستخدمي Debian أو Ubuntu أو أي من مشتقاتها ، يمكنهم التثبيت من الجهاز الطرفي عن طريق كتابة الأمر التالي:
sudo apt install cflow -y
في حالة مستخدمي Arch Linux أو Manjaro أو أي توزيعة أخرى مشتقة منها ، يجب أن يتم التثبيت من مستودعات AUR:
yay -s cflow
أما بالنسبة للمهتمين بالقدرة على تجميع النسخة الجديدة فيمكنهم الحصول عليها من الرابط التالي.