2010-03-23 32 views
12

मेरे पास एक VS.NET 2008 प्रोजेक्ट है। क्या उन वर्गों की जांच करना संभव है जिनका उपयोग परियोजना में किसी भी तरह से नहीं किया जाता है? FXcop के साथ मैं अप्रयुक्त चर और अप्रयुक्त कोड पा सकता हूं, लेकिन अप्रयुक्त कक्षाओं में नहीं।किसी .net प्रोजेक्ट में अप्रयुक्त कक्षाएं खोजें

+0

कक्षाओं को हटाने पर सावधान रहें। यह अभी भी प्रीप्रोसेसर के पीछे कोड द्वारा उपयोग किया जा सकता है या वर्तमान में लोड नहीं होने वाली परियोजना द्वारा उपयोग किया जा सकता है। – Carra

उत्तर

8

उपकरण NDepend मदद कर सकते हैं एक .NET कोड बेस में अप्रयुक्त कोड को खोजने में अधिसूचित। अस्वीकरण: मैं इस उपकरण के डेवलपर में से एक हूं।

थोड़ा विस्तार करने के लिए, NDepend Code Rule over LINQ Query (CQLinq) लिखने का प्रस्ताव करता है।

// <Name>Dead Methods</Name> 
warnif count > 0 
from m in Application.Methods where !m.MethodsCallingMe.Any() 
select m 

NDepend rule to find unused methods (dead methods)

लेकिन इस नियम: लगभग 200 default code rules प्रस्ताव है, उनमें से 3 अप्रयुक्त विधि का पता लगाने के उदाहरण की तरह दिखता है के लिए अप्रयुक्त/मृत कोड का पता लगाने

मूल रूप से इस तरह के एक नियम के लिए समर्पित किया जा रहा बेवकूफ है और मामूली झूठी सकारात्मक वापसी करेगा। कई स्थितियों में, जहां एक विधि कभी नहीं कहा जाता है अभी तक कर रहे हैं यह अप्रयुक्त (प्रवेश बिंदु, वर्ग निर्माता, finaliser ...) यह है नहीं है यही कारण है कि 3 डिफ़ॉल्ट नियम हैं और अधिक सविस्तार:

NDepend दृश्य स्टूडियो में एकीकृत है, इसलिए इन नियमों checked/browsed/edited right inside the IDE हो सकता है। उपकरण को आपकी सीआई प्रक्रिया में भी एकीकृत किया जा सकता है और यह reports का निर्माण कर सकता है जो नियमों का उल्लंघन करेगा और अपराधी कोड तत्व दिखाएगा।

यदि आप इन नियमों के स्रोत कोड की ओर इन 3 लिंक पर क्लिक करते हैं, तो आप देखेंगे कि प्रकार और विधियों से संबंधित कुछ जटिल हैं। ऐसा इसलिए है क्योंकि वे न केवल उपयोग किए गए प्रकारों और विधियों का पता लगाते हैं, बल्कि अप्रयुक्त मृत प्रकारों और विधियों (रिकर्सिव) द्वारा केवल का उपयोग किए जाने वाले प्रकार और विधियों का भी पता लगाते हैं।

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

इन 3 नियमों का उपयोग करने के अलावा, मैं परीक्षण द्वारा कोड कवरेज को मापने और पूर्ण कवरेज के लिए प्रयास करने की सलाह दूंगा। अक्सर, आप उस कोड को देखेंगे जो परीक्षण द्वारा कवर नहीं किया जा सकता है, वास्तव में अप्रयुक्त/मृत कोड है जिसे सुरक्षित रूप से त्याग दिया जा सकता है। यह जटिल एल्गोरिदम में विशेष रूप से उपयोगी है जहां यह स्पष्ट नहीं है कि कोड की शाखा पहुंच योग्य है या नहीं।

3

Resharper (समाधान चौड़ा पर जाँच के साथ) स्वचालित रूप से आप अप्रयुक्त वर्गों की अपनी परियोजना & समाधान

+0

समाधान-व्यापी जांच के बारे में नहीं पता था, धन्यवाद – Ivo

+0

केवल 4.5 से काम करता है। – Carra

+1

क्या मुझे यह बताने के लिए "रिपोर्ट" चलाने का कोई तरीका है कि मेरे समाधान में कौन से वर्ग एक साथ में उपयोग नहीं किए जाते हैं? – Alex

संबंधित मुद्दे