
Stoat هي أداة لتأكيد الخصائص حول callgraph من البرامج/المكتبات. الاستخدام الأساسي لهذه الأداة هو تحليل البرامج التي تحتاج إلى إجراء عمليات في الوقت الفعلي الصعب في جزء من قاعدة كود مختلطة. يتم ذلك عن طريق تحديد جميع الوظائف التي يمكن استدعاؤها بشكل عابر من بعض وظائف الجذر المعروفة التي يجب أن تكون في الوقت الفعلي. إذا تم العثور على أي وظيفة غير آمنة يمكن أن تمنع لفترة زمنية تعسفية في هذا الإغلاق التعريفي ، ثم ينبعث من الخطأ للإشارة إلى مكان العثور على السلوك غير الصحيح وما هو Backtrace المسؤول عنه.
يمكن أن يجعل الحفاظ على قاعدة كود كبيرة في C/C ++ من الصعب للغاية معرفة الرمز الذي ينتهي من استدعاء الإجراءات الأخرى. يكون هذا أكثر تعقيدًا عندما يكون هناك بعض الفصل داخل قاعدة كود واحدة والتي قد لا تكون واضحة على الإطلاق في التنفيذ. ويعقد ذلك بشكل أكبر من خلال عدم وفاء بعض تقنيات C ++ ، مثل التحميل الزائد الافتراضي ، والحمل الزائد للمشغل ، والميراث المتعدد ، والتحويلات الضمنية.
LLVM 3.3+
Clang 3.3+
C ++ filt
روبي
GraphViz GEM (اختياري) لاتجاهات Callgraph
تلوين الأحجار الكريمة (اختيارية) للإخراج الملون
git clone https://github.com/fundamental/stoat && cd stoat
mkdir build && cd build
cmake .. && make && make test
make install # or just run in placeعلامات السلامة المضمنة __attribute __ (
علامات المخاطر المضمنة __attribute __ ((شرح ("غير واقعية"))))
عوامل البيت البيضاء خارج الخط/قوائم السود
ملفات القمع خارج الخط
إمكانيات الرسم البياني للرسم البياني الآمن أو المتناقض
دعم لتحليل شجرة الإرسال داخل Librotosc
توضيح وظيفة الجذر في الوقت الحقيقي مع __attribute __ ((التعليق ("الحقيقي")))))
قم بتجميع جميع الملفات باستخدام cc = stoat-compile cxx = stoat-compile ++ أو مجرد تجميع الملفات مع علامة clang-emit-llvm
قم بتشغيل stoat على ملفات LLVM IR الناتجة باستخدام الخيار -التوتر
عرض التناقضات
إعادة اختياري التحليل باستخدام خيار -G لعرض التناقضات بيانيا
قم بتحديث الكود الخاص بك أو قائمة القمع أو القمع
استمتع بالرمز الأكثر أمانًا
للحصول على دليل أكثر وضوحًا ، يرجى الاطلاع على البرنامج التعليمي على http://log.fundamental-code.com/2014/08/15/stoat-tutorial-example.html
Stoat متاح بموجب ترخيص GPLV3