سؤال

لدي مجموعة كبيرة إرث C++ المشروع جمعت تحت Visual Studio 2008.وأنا أعلم أن هناك معقول كمية من 'الميت' البرمجية التي لم يتم الوصول إلى أي مكان -- الأساليب التي لا تسمى كله الفئات التي لا تستخدم.

أنا أبحث عن أداة من شأنها أن تحديد هذا من قبل تحليل ثابت.

هذا السؤال: رمز ميت الكشف في التراث C/C++ المشروع يقترح استخدام رمز أدوات تغطية.هذا ليس خيارا اختبار التغطية ليست عالية بما فيه الكفاية.

كما يذكر -Wunreachable رمز.الخيار دول مجلس التعاون الخليجي.أود شيء مماثل ل Visual Studio.نحن بالفعل استخدام الرابط هو /الأراضي الفلسطينية المحتلة:المرجع الخيار لإزالة رمز زائدة عن الحاجة, ولكن هذا لا تقرير الميت رمز في المفيد مستوى (عند استخدامها مع /مطول هناك أكثر من 100 ، 000 خطوط ، بما في ذلك الكثير من المكتبات).

هل هناك أي خيارات أفضل أن تعمل بشكل جيد مع Visual Studio المشروع ؟

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

المحلول

أنت تريد شيئا على غرار QA-C++ (http://www.programmingresearch.com/QACPP_MAIN.html) ، وانظر أيضا http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis منتجات مماثلة.

كنت تبحث عن ثابت رمز أداة تحليل يكشف عن الوصول المدونة ؛ العديد من الترميز التوجيهية (مثل ميسرا-C++, إذا لم أكن مخطئا) تتطلب أن لا رمز تصل موجود.تحليل أداة موجهة تحديدا إلى تطبيق هذا المبدأ التوجيهي سيكون أفضل رهان.

و عليك أن تحب تكون قادرة على العثور على استخدامات أخرى أداة أيضا.

نصائح أخرى

وأنا أعلم أن Gimpel الوبر المنتجات (PC-الوبر و Flexelint) تحديد رمز تصل وغير مستخدمة / unreferenced وحدات.

وكلاهما تقع في فئة ثابت أدوات التحليل.

ليس لدي أي انتماء w/ Gimpel فقط رضاء العملاء على المدى الطويل.

أنا لا أعرف Visual C ، كما أوصى -Wunreachable رمز محددة أدوات تغطية.كما حل للوضع الخاص بك وأود أن محاولة التالية:

  1. مع ctags (أو مشابهة لل) قائمة من كل ما تبذلونه من الرموز في المصدر
  2. تمكين في إعدادات مترجم الميت قانون القضاء (أنا أفترض أنه تخلف عن على)
  3. تمكين كاملة-برنامج/رابط الوقت التحسينات (حتى يعلم أن لا تستخدم وظائف في moduls غير مطلوبة من قبل غيرها من الظواهر و الحصول على التخلص منها)
  4. تأخذ رموز من الثنائية الخاصة بك ومقارنتها مع الرموز من 1.

نهج آخر يمكن أن يسميه البعض البياني توليد أداة (على سبيل المثالdoxygen).

أقترح عليك استخدام عدة مناهج:1.دول مجلس التعاون الخليجي لديها بعض المعلومات المفيدة في تجميع الأعلام:

-Wunused-function
-Wunused-label
-Wunused-value
-Wunused-variable
-Wunused-parameter
-Wunused-but-set-parameter

2.Cppcheck لديه بعض الميزات المفيدة مثل:

 --enable=unusedFunction

3.استخدام ثابت محلل كما اقترح من قبل.

نهج واحد أن يعمل بالنسبة لي - مع دلفي - هو تمكين التصحيح و تشغيل البرنامج تحت المصحح.

عندما برنامج دلفي تعمل تحت المصحح ، IDE يظهر في الهامش الذي الأسطر من التعليمات البرمجية يمكن تعيين نقاط الإيقاف.رمز الذي هو حقا ميت - أي تم تجريده من قبل linker/المترجم واضح مثل نقاط لا يمكن أن يكون هناك.

بعض ملاحظات إضافية ، المعلقين يبدو أن فهم هذا:

a:أنت لا تحتاج إلى محاولة وضع نقطة توقف على كل خط.مجرد فتح الملف المصدر في IDE و التمرير بسرعة من خلال ذلك.رمز ميت بسهولة رصدت.

ب:هذه ليست مدونة التغطية' تحقق.لا تحتاج إلى تشغيل التطبيق لمعرفة ما إذا كان يصل إلى خطوط.

ج:أنا لست على دراية كافية VS2008 لذلك لا يمكن أن نقول إن هذا الاقتراح سوف العمل.

إما
1) MSVC تحت المستخدمة في بناء ثابت أداة تحليل.
2) MSVC السوق لديها الكثير من الأدوات بما في ذلك دعم معظم أدوات مجانية ، بما في ذلك CppCheck

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

كتابة برنامج نصي بشكل عشوائي حذف الدالة (من شفرة المصدر) و recompiles كل شيء من الصفر.إذا كان لا يزال يجمع - أن وظيفة رمز ميت.

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