مقارنة أدوات تحليل الكود الثابت في لينكس؟ [مغلق

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

  •  13-09-2019
  •  | 
  •  

سؤال

هل قام أي شخص بأي مقارنات على أدوات تحليل الكود الثابت المتاحة لنظام Linux؟ ما هي نقاط القوة والضعف للأدوات التالية:

  • لينتيان،
  • متناثر،
  • جبيرة،
  • الفئران،
  • باستخدام خيار Wall.

هل تفكر في استخدام واحدة فقط من هذه الأدوات كافية؟

أنا لا أبحث عن توصيات (يمكنني العثور على الكثير من تلك) ولكن مقارنات مباشرة بين الأدوات المتاحة.

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

المحلول

هناك بالطبع قائمة ويكيبيديا. وبعد هذه القائمة هي فقط، قائمة، وليس مقارنة، ولكن واحدة من الروابط على الصفحة يبدو أن على الأقل الإجابة جزئيا على الأقل سؤالك (لفترة وجيزة) يذكر زوجين من البرامج التي أدرجتها.

نصائح أخرى

يجب أن يكون Wall -Wall مسألة بالطبع لكل مطور C. أيضا، بالإضافة إلى ذلك باستخدام -WExtra يمكن أن يكون فكرة جيدة.

الشظية يمكن أن تجد نقاط الضعف المحتملة الأخرى في طلبك ولكن في معظم الحالات (!) يطبع تحذيرات كاذبة لذلك عليك أن تفهم حقا ما يعني أن الصخور مع ما تحذير ومعظم الأوقات عليك إدراج التعليقات التوضيحية مثل /خارج/ أو /غير مستعمل/ في التعليمات البرمجية الخاصة بك، لا يصيح الشظية عليك. مع جبيرة، يجب عليك تصفية التحذيرات التي ليست مهمة بالنسبة لك، وإلا فقد قضيت الكثير من الوقت في تحليل وتمرير من خلال الكثير من الرسائل.

لاحظ أن هذه الأدوات تقوم فقط بفحص الرمز الثابت فقط. يجب عليك استخدام Valgrind للعثور على تسرب الذاكرة وقت التشغيل.

لقد استخدمت جبيرة بضع مرات ووجدت أنها مطلة للغاية: لقد قمت بتعطيل معظم التحذيرات. أعتقد أن هذه الأداة قد تقدم نتائج مثيرة للاهتمام إذا قمت بتعليق التعليمات البرمجية بشكل صحيح. بدون شرح رمز، هذه الأداة ليست مفيدة للغاية.

أنا في بعض الأحيان استخدام متفرق والنظر في ذلك كأداة قيمة. يوفر غلاف حول دول مجلس التعاون الخليجي، يسمى "CGCC". نتيجة لذلك، من السهل تشغيل Sparse في برنامج حتى لو كان يحتوي على العديد من الملفات المصدر (export CC=cgcc وفويلا). يعمل هذا البرنامج بشكل أفضل إذا كنت تقوم بتحليل شفرة مصدر Kernel.

باعتباره Sidenote، أستخدم PMCCABE أيضا بشكل منتظم. PMCCABE ليس محللا ثابتا: يحسب تعقيد السيكلوم. قد يساعدك في العثور على أكثر الوظائف تعقيدا في البرنامج الخاص بك. من المحتمل أن تكون هذه المهام عرضة للخطأ ويصعب اختبارها.

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