2010-09-21 13 views
8

द्वारा बुलाया जाता है कभी-कभी मैं कुछ कोड देख रहा हूं, मैं एक विधि (resharper का उपयोग करके) के उपयोग की खोज करता हूं और पाते हैं कि इसे केवल परीक्षणों द्वारा ही बुलाया जाता है। तो यह प्रभावी रूप से अनावश्यक है और मैं इसे हटा सकता हूं और इसे कॉल करने वाले तरीकों को हटा सकता हूं।कोड को कैसे ढूंढें जिसे केवल

जाहिर है, जगह के चारों ओर अप्रयुक्त कोड होने, निर्माण को धीमा करने और परीक्षण चलाने में कोई बात नहीं है। मुझे जो चाहिए वह एक ऐसा उपकरण है जो मुझे बता सकता है कि उत्पादन कोड के सभी बिट्स केवल परीक्षणों द्वारा उपयोग किए जाते हैं।

मेरे पास रिशेर्पर का एक पूर्ण संस्करण है, और एनडीपेन्स का एक परीक्षण संस्करण भी है, लेकिन मुझे यह नहीं मिला कि परिणाम प्राप्त करने के लिए इनमें से किसी एक का उपयोग कैसे किया जाए (इसके लिए भुगतान किए बिना)। मुझे संदेह है कि एनडीपेन्ड के पूर्ण संस्करण के साथ यह संभव हो सकता है लेकिन क्या कोई अन्य उपकरण है जिसके बारे में लोग जानते हैं?

यदि संदर्भ मदद करता है, तो समाधान और एएसपीनेट वेबसाइट है, जिसका अधिकांश कार्यक्षमता डब्ल्यूसीएफ सेवा द्वारा संभाला जाता है। इसलिए कोड के बड़े हिस्से में एकमात्र मान्य प्रवेश बिंदु सेवा विधियां हैं। परीक्षण अपनी अलग परियोजनाओं में हैं।

मैंने एक बाउंटी शुरू कर दी है क्योंकि मुझे यकीन है कि किसी और ने पहले इस समस्या को हल किया होगा और हल किया होगा!

+1

उस परीक्षण में से कुछ केवल मोजे, स्टब्स, आदि की संभावना है ... – CaffGeek

+0

@ चाड सभी मोजे, और स्टब्स आदि मेरी परीक्षण परियोजनाओं में हैं। इस सवाल में मैं उत्पादन कोड के बारे में अधिक चिंतित हूं। –

उत्तर

4

मैन्युअल रूप से NDepend के साथ देखकर Dependency Matrix के साथ काम करना चाहिए। वहां आप देख सकते हैं कि यूनिट टेस्ट असेंबली द्वारा केवल कौन सी विधियों का उपयोग किया जाता है।

मुझे यकीन नहीं है कि क्या आप परीक्षण संस्करण के साथ अपनी सीक्यूएल क्वेरीज़ लिख सकते हैं। इसके लिए

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 के साथ उत्पादन कोड असेंबली निर्दिष्ट करना होगा या OR के साथ अलग होना होगा।

+0

जहां तक ​​मैं देख सकता हूं मुझे कस्टम क्वेरी चलाने में सक्षम होने के लिए पूर्ण संस्करण की आवश्यकता है। मैं आपकी क्वेरी के आधार पर एक कस्टम FxCop नियम बनाने के लिए देख रहा हूं (हालांकि FxCop पर बहुत अधिक कठिन ..) –

+2

यदि आप नियम – Noffls

0

आप कुछ कस्टम प्रश्नों के साथ एनडेंड का उपयोग कर सकते हैं ... यह सिर्फ मेरे सिर के ऊपर से है, इसे बिल्कुल ठीक नहीं किया गया है, लेकिन इसे काम करना चाहिए।

+0

मैंने उसमें देखा है, और ऐसा लगता है कि मुझे शायद अपने स्वयं के प्रश्न जोड़ने में सक्षम होने के लिए वेतन संस्करण प्राप्त करना होगा। –

2

एक गैर तकनीकी दृष्टिकोण अस्थायी रूप से आपको अपने समाधान से परीक्षण परियोजना को हटाने के लिए होगा, फिर किसी भी तरीके से किसी भी तरीके से नहीं जा रहे किसी भी तरीके का पता लगाने के लिए विजुअल स्टूडियो के कोड विश्लेषण (या FxCop) का उपयोग करें।

+0

प्रकाशित कर सकते हैं तो अच्छा होगा FxCop का उपयोग करने में समस्या यह है कि यह सार्वजनिक विधियों को अनदेखा करता है यह मृत कोड की तलाश में है, और मुझे पता है कि यहां कई चीजें जिन्हें मैं ढूंढने की कोशिश कर रहा हूं वे सार्वजनिक तरीके हैं –