2010-01-12 10 views
23

मैं NDepend को आजमा रहा हूं, इसके बारे में कुछ ब्लॉग पोस्ट पढ़ रहा हूं और यहां तक ​​कि पॉडकास्ट भी सुना है। मुझे लगता है कि NDepend वास्तव में एक उपयोगी उपकरण हो सकता है, लेकिन मुझे अभी भी नहीं पता कि मैं इसका उपयोग कहां करूंगा।क्या आप एनडपेन्स का उपयोग करते हैं?

आप इसका उपयोग कैसे करते हैं? क्या आप इसका इस्तेमाल करते हैं, क्यों? क्यों नहीं?

मैं कुछ डाउन-टू-धरती असली दुनिया के उदाहरणों के बारे में सुनना चाहता हूं।

+1

लोगों के "पसंदीदा" टैग पर प्रश्न दिखाने के लिए आप कुछ टैग (जैसे मंच/भाषा/तकनीक एनडीपेन्स के लिए) जोड़ना चाह सकते हैं। –

उत्तर

28

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

मेरे द्वारा उपयोग की जाने वाली मुख्य चीज़ों में से एक है मेरी असेंबली, प्रकार और विधियों के बीच निर्भरताओं की जांच करना। इससे मुझे यह देखने में मदद मिलती है कि प्रकारों के बीच युग्मन हाथ से बाहर है या नहीं, और मुझे रिफैक्टरिंग अवसरों को खोजने में भी मदद करता है।

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

NDepend भी है इस तरह की जानकारी देखने के लिए एक महान दृश्य मैट्रिक्स।

इसके अतिरिक्त, यह एक शानदार क्वेरी भाषा, CQL, जिसमें आप कस्टम प्रश्नों लिखने देता है। जैसे ये हो सकता है साधारण चीजें मृत कोड, cylcomatic जटिलता, युग्मन, आदि, और भी बहुत बहुत अधिक पर प्रश्नों को उजागर करने, प्रश्नों के "मुझे सभी तरीकों है कि इस विधि कॉल दिखाने"।

बारी में, यह एक निर्माण प्रक्रिया में एकीकृत किया जा सकता है, तो आप चेतावनी/इस तरह के "निर्माण में विफल रहते हैं एक विधि कोड के 100 से अधिक लाइनों लेकिन कोई टिप्पणी नहीं है" के रूप में CQL क्वेरी के आधार पर विफलताओं, निर्माण हो सकता है (यह एक उदाहरण है - मैं यह सुझाव नहीं दे रहा हूं कि यह विशेष मीट्रिक एक अच्छी बात है)।

यह कोड कवरेज डेटा भी आयात कर सकता है और आपको कोड कोड कवरेज वाले क्षेत्रों का दृश्य प्रतिनिधित्व देता है, साथ ही आपको कोड कवरेज जानकारी के विरुद्ध सीक्यूएल क्वेरी चलाने की इजाजत देता है (उदाहरण के लिए 70% से कम कोड कवरेज के साथ मुझे विधियां दिखाएं)

आप भी अपनी परियोजना के अपने वर्तमान बिल्ड लोड कर सकते हैं, और पिछले निर्माण, और इस तरह के "मुझे दिखाने के सब नई प्रकार है कि है < 70% कोड कवरेज" के रूप में उन दोनों के बीच क्वेरी चला - यह आप तंग नियमों को लागू करने में मदद करता मौजूदा कोडबेस पर।

यह एक शानदार उपकरण है, और भी जानने के लिए मुश्किल नहीं है। यह शुरुआत में डरावना है, सिर्फ सूचना की भारी मात्रा के कारण यह आपको देता है, लेकिन इसकी अत्यधिक अनुशंसा की जाती है।

+2

+1 आप टूल का उपयोग करने के सभी बड़े बिंदुओं पर हिट करते हैं। मैं जोड़ूंगा कि निर्भरता आरेख आपके कोड संरचना के उच्च-स्तरीय दृश्य के लिए काफी उपयोगी हैं। –

4

मुझे असेंबली के संस्करणों के बीच परिवर्तनों को देखने के लिए उपयोगी पाया गया है। यहां तक ​​कि किसी दिए गए रिहाई में परिवर्तन का एक स्नैपशॉट ...

के लिए मैं इसे एक सतत एकीकरण वातावरण में चमकता है आप कोड मैट्रिक्स को मापने के लिए आप (cyclomatic जटिलता, लंबे समय के तरीके, आदि में रुचि रखते हैं CQL प्रश्नों सेट कर सकते हैं जहां लगता है ।), और फिर आप समय के साथ उन क्षेत्रों में अपने सुधार को माप सकते हैं।

4

वास्तव में इस उपकरण उपयोगी यदि आप जैसे है इंटरफेस जो विभिन्न व्यक्ति/विक्रेता द्वारा विकसित आवेदन के दूसरे हिस्से द्वारा उपयोग किया जा रहा है। हर आप इंटरफ़ेस आप अपने इंटरफ़ेस का उपयोग कर रहा है अपने कोड को तोड़ने से बचने के लिए (विधानसभा का निर्माण नहीं होगा) यह बड़ा परियोजनाओं के लिए लागू होता है पता लगाना होगा बदलना चाहते हैं।

8

मुझे जटिल विधि कॉल की संरचना को समझने में भी अमूल्य लगता है। मैं संक्रामक एक विशेष विधि या क्षेत्र का उपयोग कर, उदाहरण के लिए सभी तरीकों को कॉल कर सकते हैं और आदि अगर वहाँ जो आवश्यकता से अधिक जटिल हैं परिपत्र कॉल, या अवांछित निर्भरता, या पथ के साथ संभव समस्याएं हैं देख सकते हैं,

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

2

यह टूल उपयोगी है जब आपके एप्लिकेशन में बड़ी संख्या में असेंबली हैं। यह मेरे कोड निर्भरता और साथ ही साथ परिवर्तन विज्ञप्ति

2

के बीच मैं भी NDepend उपयोग कर रहा हूँ कुछ विधानसभा के दो संस्करणों की तुलना करने के जानने में सहायता मिलती। NDepend इस उत्कृष्ट सुविधा है। Thats मुझे विधानसभा में परिवर्तन और कार्य प्रगति के बारे में देखते हैं, जो विधियों को जोड़ा गया है, विधियों को हटा दिया गया है और बहुत कुछ।