سؤال

أحتاج إلى أداة تقوم بتحليل مصادر C++ وتوضيح الكود غير المستخدم.حجم المصادر ~ 500 ميجابايت

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

المحلول

وPC-لينت أمر جيد. إذا كان يحتاج إلى أن تكون حرة / مفتوحة المصدر اختياراتك تتضاءل. Cppcheck هو حر، وسوف تحقق للمناسبات الخاصة غير المستخدمة. أنا لا أعتقد أنه يبدو لأشياء مثل الطبقات uninstantiated مثل PC من الوبر.

نصائح أخرى

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

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

إذا كنت تريد تحليلًا ثابتًا ، فأنت بحاجة إلى أداة يمكنها قراءة 500 ميغابايت بالكامل من التعليمات البرمجية المصدر (EST.20 مليون خط؟واو!) وحساب تقدير محافظ لما هو مستخدم.هذا يتطلب القيام بتحليل نقاط على النظام بأكمله.

إليكم السبب:إذا تركت أي وحدة نمطية Z ، وقررت أن Foo غير مستخدمة ، فقد تجد لاحقًا أن Z كان هو الذي استخدم Foo ، أو أكثر بمهارة ، قام Z بنسخ قيمة مؤشر حدثت و Foo فيها إلى الثلث الوحدة M التي تسمى بدورها وظيفة "غير المستخدمة" من خلال المؤشر.

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

قامت شركتي ، Semantic Designs ، بتحليل نقاط ل 35 مليون نظام خط من CDAY باستخدام مجموعة أدوات إعادة هندسة برامج DMS الخاصة بنا.نظام إدارة الوجهات السياحيةيستطيع قراءة أنظمة كبيرة جدًا من كود المصدر.لقد تطلب الأمر أداة مخصصة ، ليس كثيرًا لأن الرمز المصدر كان في لهجة غريبة (Archiac) لـ C ++ (لا يمكن أن تكون الأنظمة في اللهجات الحديثة للغاية ، وليس كافية للوقت لتدوينها!) ، ولكن لأنه في حد كبير أنظمة كبيرة هناك عوامل أخرى غريبة في اللعب.بالنسبة لنظام C الذي قمنا به ، كان هناك رابط ديناميكي مخصص ، والذي أثر على التحليل من النقاط ، والذي كان لا بد من تخصيصه بدوره.

لأن الأنظمة بالحجم الذي تناقشه دائمًا بها مفاجآت مثل هذه (BIBSEH:"لأنه في الأنظمة الكبيرة ، يحدث كل شيء") ، ستحتاج على الأرجح إلى أداة مخصصة للإجابة على السؤال.تم تصميم DMS لتخصيص.يرى http://www.semanticdesigns.com/Products/DMS/DMSToolkit.htmlو http://www.semanticdesigns.com/Products/FrontEnds/CppFrontEnd.html

وأداة تغطية الرمز هو ما تحتاجه، ولكن سيكون لديك لتشغيل البرنامج من خلال جميع وظائف ونرى ما repoted كما غير المستخدمة. منذ رمز يمكن تصدير DLL وظائف سيكون لديك لجعل يستخدمها خارجيا لا شيء مؤكد. بعض الأدوات مدونة التغطية: تنقية، CTC ++، قد يكون Boundschecker وظائف مدونة التغطية إذا كنت أتذكر الحق وحفنة من الأدوات الأخرى

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

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