كيفية العثور على رمز لا يسمى إلا عن طريق الاختبارات

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

سؤال

في بعض الأحيان ، أبحث عن بعض التعليمات البرمجية ، أبحث عن استخدامات طريقة (باستخدام Resharper) وأجد أنه يطلق عليه فقط الاختبارات. لذلك فهي زائدة عن الحاجة بشكل فعال ويمكنني حذفها والطرق التي تسميها.

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

لديّ نسخة كاملة من Resharper ، وأيضًا إصدار تجريبي من Ndepend ، لكن لم أكن اكتشف كيفية استخدام أي منهما للحصول على النتيجة التي أريدها (دون دفع ثمنها). أظن أنه قد يكون ذلك ممكنًا مع النسخة الكاملة من NDEpend ولكن هل هناك أي أدوات أخرى يعرفها الناس؟

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

لقد بدأت مكافأة لأنني متأكد من أن شخصًا آخر يجب أن يكون قد واجه هذه المشكلة من قبل!

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

المحلول

يجب أن تعمل يدويًا مع Ndepend مع Dependency Matrix. هناك يمكنك معرفة الأساليب التي تستخدم فقط من قبل مجموعات اختبار الوحدة.

لست متأكدًا مما إذا كان يمكنك كتابة استعلامات CQL الخاصة مع الإصدار التجريبي. ولكن مع الإصدار المحترف ، يمكنك استخدام استعلام مثل هذا:

SELECT METHODS WHERE IsUsedBy "ASSEMBLY:NAME_OF_THE_UNIT_TEST_ASSEMBLY" 
AND !(IsUsedBy "ASSEMBLY:NAME_OF_ANOTHER_ASSEMBLY" OR IsUsedBy "ASSEMBLY:ANOTHER_NAME")

لكي يعمل هذا ، عليك إنشاء مشروع NDEPEND يعرف جميع تجميعاتك.

إلى عن على NAME_OF_THE_UNIT_TEST_ASSEMBLY يجب عليك إدراج مجموعة اختبار الوحدة الخاصة بك وفي الجزء الثاني ، عليك تحديد مجموعات رمز الإنتاج مع isUsedBy ومفصل مع أو.

نصائح أخرى

سيكون النهج غير التقني هو إزالة مشروع اختبارك مؤقتًا من الحل الخاص بك ، ثم استخدم تحليل رمز Visual Studio (أو FXCOP) لتحديد أي طرق لا يتم استدعاؤها بواسطة أي شيء آخر.

يمكنك استخدام Ndepend مع بعض الاستفسارات المخصصة ... هذا خارج الجزء العلوي من رأسي ، ولم يستخدمه أبدًا لذلك ، ولكن يجب أن يعمل.

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