هل هناك أداة للعثور على الوظائف غير المرجعية (الكود الميت أو القديم) في تطبيق C#؟[مغلق]

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

  •  09-06-2019
  •  | 
  •  

سؤال

أريد حذف foo() إذا لم يتم استدعاء foo() من أي مكان.

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

المحلول

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

FxCop سيكتشف الطرق العامة/المحمية بدون أي متصلين من المنبع.ومع ذلك، لا يكتشف FxCop جميع الأساليب دون المتصلين الرئيسيين، حيث أنه من المفترض التحقق مما إذا كان الكود الخاص بك جزءًا من مكتبة، لذلك يتم استبعاد الأعضاء العامين. يمكنك استخدام NDepend لإجراء بحث عن الأعضاء العامين الذين ليس لديهم متصلون من المصدر، وهو ما أشرحه بالتفصيل هنا في إجابة StackOverflow الأخرى هذه.

(يحرر:معلومات مضافة عن Gendarme والتي تقوم بالفعل بما طلبه السائل)

نصائح أخرى

نديبند سيتم أيضًا الإبلاغ عن التعليمات البرمجية غير المستخدمة المحتملة.

ضع في اعتبارك أن Resharper (وربما أدوات أخرى مماثلة أيضًا) لن يسلط الضوء على الطرق غير المستخدمة إذا تم وضع علامة على الطرق public.لا توجد طريقة تمكن أداة تحليل التعليمات البرمجية الثابتة من التحقق مما إذا كانت طرق التجميع الخاصة بك مستخدمة بواسطة تجميعات أخرى خارج الحل الخاص بك.لذا فإن الخطوة الأولى في التخلص من الأساليب غير المستخدمة هي تقليل ظهورها private أو internal.

نعم أدوات MZ يحتوي Addin على ميزة مراجعة التعليمات البرمجية الميتة.

ريشاربر يفعل هذا، وليس فقط مع الأساليب.كما أنه يفعل ذلك باستخدام البيانات والمتغيرات وما إلى ذلك.

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

يقترح NDepend الكتابة قاعدة التعليمات البرمجية على استعلام LINQ (CQLinq).حول 200 قواعد الكود الافتراضية مقترحة، 3 منها مخصصة ل رمز غير مستخدم/ميت كشف:

تم دمج NDepend في Visual Studio، وبالتالي يمكن دمج هذه القواعد تم فحصه/تصفحه/تحريره مباشرة داخل IDE.يمكن أيضًا دمج الأداة في عملية CI الخاصة بك ويمكن بنائها التقارير من شأنها أن تظهر القواعد المنتهكة وعناصر التعليمات البرمجية المذنب.

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

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

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

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

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