ما هي أدوات التحليل الثابتة المتاحة لـ C++ مفتوحة المصدر؟[مغلق]

StackOverflow https://stackoverflow.com/questions/141498

سؤال

تحتوي Java على بعض أدوات التحليل الثابتة الجيدة جدًا مفتوحة المصدر مثل FindBugs, Checkstyle و بي إم دي.هذه الأدوات سهلة الاستخدام، ومفيدة للغاية، وتعمل على أنظمة تشغيل متعددة حر.

تتوفر منتجات التحليل الثابت التجارية C++.على الرغم من أن وجود مثل هذه المنتجات أمر رائع، إلا أن التكلفة باهظة للغاية بالنسبة للطلاب وعادةً ما يكون من الصعب الحصول على الإصدار التجريبي.

البديل هو العثور على أدوات تحليل ثابتة مفتوحة المصدر لـ C++ والتي سيتم تشغيلها على منصات متعددة (Windows وUnix).وباستخدام أداة مفتوحة المصدر، يمكن تعديلها لتناسب احتياجات معينة.العثور على الأدوات لم يكن مهمة سهلة.

فيما يلي قائمة قصيرة بأدوات التحليل الثابت لـ C++ التي تم العثور عليها أو اقتراحها بواسطة الآخرين.

ما هي بعض آخر أدوات التحليل الثابتة المحمولة مفتوحة المصدر C++ التي يعرفها أي شخص ويمكن التوصية بها؟

بعض الروابط ذات الصلة.

هل كانت مفيدة؟

المحلول

Oink هي أداة مبنية على الواجهة الأمامية لـ Elsa C++.Mozilla's Pork هو شوكة من Elsa/Oink.

يرى: http://danielwilkerson.com/oink/index.html

نصائح أخرى

CppCheck مفتوح المصدر ومتعدد المنصات.

ماك أو إس إكس:

brew install cppcheck

فيما يتعلق بمترجم GNU، لدى gcc بالفعل خيار مدمج يتيح المزيد تحذير لأولئك من -Wall.الخيار هو -ويفك++ ويتعلق الأمر بانتهاكات بعض المبادئ التوجيهية سكوت مايرز نشر في كتبه "فعالة وأكثر فعالية C++".

على وجه الخصوص، يكتشف الخيار العناصر التالية:

  • تحديد مُنشئ النسخ وعامل التعيين للفئات ذات الذاكرة المخصصة ديناميكيًا.
  • تفضل التهيئة للمهمة في المنشئين.
  • اجعل المدمرات افتراضية في الفئات الأساسية.
  • اطلب من "عامل التشغيل =" إرجاع مرجع إلى *this.
  • لا تحاول إرجاع مرجع عندما يتعين عليك إرجاع كائن.
  • التمييز بين أشكال البادئة واللاحقة لعوامل الزيادة والنقصان.
  • لا تفرط مطلقًا في تحميل "&&" أو "||" أو "".

قيد التطوير حاليًا، ولكن رنة يقوم بتحليل لغة C ويستهدف التعامل مع لغة C++ بمرور الوقت.إنها جزء من LLVM مشروع.

تحديث:بينما تقول الصفحة المقصودة "المحلل عبارة عن عمل مستمر قيد التنفيذ"، إلا أنه لا يزال كذلك الآن موثقة كمحلل ثابت لكل من C وC++.

سؤال: كيف يمكنني تشغيلGC/Clang للتحليل الثابت؟(تحذيرات فقط)

خيار المترجم:-fsyntax فقط

ذكر شخص آخر -Weffc++، ولكن هذا في الواقع أحد التحذيرات الوحيدة في دول مجلس التعاون الخليجي التي لا أقوم بتشغيلها افتراضيًا.ومع ذلك، فإن مجموعة التحذيرات التي أقوم بتشغيلها هي أهم أداة تحليل ثابتة في مجموعتي.يمكنك ان ترا ال القائمة الكاملة للتحذيرات الموصى بها.

في ملخص:

-pedantic -Wall -Wextra -Wcast-align -Wcast-qual -Wctor-dtor-privacy -Wdisabled-optimization -Wformat=2 -Winit-self -Wlogic-op -Wmissing-declarations -Wmissing-include-dirs -Wnoexcept -Wold -style-cast -Woverloaded-virtual -Wredundant-decls -Wshadow -Wsign-conversion -Wsign-promo -Wstrict-null-sentinel -Wstrict-overflow=5 -Wswitch-default -Wundef -خطأ -Wno-unused

لاحظ أن بعض هذه الإصدارات تتطلب إصدارًا جديدًا من gcc، لذا قد تحتاج إلى إزالتها من قائمتك إذا كنت عالقًا في الإصدار 4.5 أو شيء من هذا القبيل.

يذكر جون كارماك أيضًا استوديو PVS في هذا المثير للاهتمام مشاركة مدونة حول "تحليل الكود الثابت".

إذا كنت تعني حقًا بكلمة "المصدر المفتوح" "مجانًا"، فهذا يعني "مايكروسوفت". بريفاست التحليل هو فكرة جيدة.ويندوز فقط بالطبع.تم دمجه بالكامل في Visual Studio والمترجم.على سبيل المثال:

cl /analyze Sample.cpp

جبيرة يبدو أنه يملأ فاتورة C.

إذا لم تحدد المصدر المفتوح سأقول برنامج جيمبلPCLint ربما تكون إحدى أفضل الأدوات المتاحة للتحقق من التعليمات البرمجية الثابتة في لغة C++.لكنها بالطبع ليست مفتوحة المصدر.

ماك أو إس إكس:

brew install splint

مايكروسوفت سريع يتوفر أيضًا في Windows Driver Kit.الإصدار 7.0 قابل للتنزيل هنا.

تنص مستندات Microsoft على أنه يجب تشغيله فقط مقابل رمز برنامج التشغيل ولكن هذا (القديم) مشاركة مدونة ويضع خطوات تشغيله.ربما يمكن دمجها في عملية البناء العادية؟

لقد كنا نعمل على مكون إضافي لـ Eclipse CDT يسمى metriculator.لا يزال قيد التطوير ولكن بعض المقاييس الرئيسية (على سبيل المثال.LSLOC، McCabe، EfferentCoupling) تم تنفيذها بالفعل.

يرى http://sinv-56013.edu.hsr.ch/redmine/projects/metricular/wiki/Documentation لمزيد من التفاصيل مثل عرض الفيديو والتوثيق.

أحدث إصدار ليلي متاح للتثبيت عبر موقع التحديث على: http://sinv-56013.edu.hsr.ch/metriculator/updatesite-nightly/site/

مزيد من الوصف

يقوم Metriculator بتحليل كود مصدر C++ بشكل ثابت وإنشاء مقاييس البرنامج.يتم تنفيذ المقاييس كمدحقين Codan.يمكن استكشاف نتائج التحليل في عرض منفصل.كل مقياس لديه خصائص قابلة للتكوين (على سبيل المثالعتبة لـ "أقصى خطوط رمز لكل وظيفة").سيؤدي تجاوز هذه العتبة إلى الإبلاغ عن مشكلة وإنشاء علامة في محرر التعليمات البرمجية المصدر.

مع المقياس يمكنك:

  • تحليل ملفات/مجلدات/مشاريع C++
  • تحديد عتبات القياس وتمكين/تعطيل القياس باستخدام صفحة تفضيلات Codans
  • لديك علامات مشكلة في برامج تحرير التعليمات البرمجية المصدر
  • استكشاف النتائج المترية
  • تصدير نتائج القياس كسحابة علامات (متوفرة كميزة اختيارية عبر موقع التحديث)

يأتي المقياس حاليًا مع المقاييس التالية:

  • مكابي (التعقيد السيكلومي)
  • الاقتران المؤثر لكل نوع
  • خطوط المصدر المنطقية للتعليمات البرمجية
  • عدد الأعضاء لكل نوع
  • عدد المعلمات لكل وظيفة

يجب عليك تجربة متصفح oo فهو يتمتع بتكامل رائع مع xemacs

يمكن للمرء أيضًا ترميز امتدادات دول مجلس التعاون الخليجي في إنصهار (لغة ​​خاصة بالمجال مصممة لتوسيع نطاق دول مجلس التعاون الخليجي) أو مكونات مجلس التعاون الخليجي الإضافية في لغة C (أصعب بكثير) لإجراء بعض التحليلات المخصصة.

يقوم Doxygen بإجراء بعض تحليل تدفق التحكم وإنشاء الرسوم البيانية.ربما لا تكون تلك هي ما تبحث عنه، ولكنني وجدتها مفيدة للنظر إليها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top