2008-11-18 33 views
5

कल से, मैं Ndepend (इसकी अधिकांश सुविधाओं के लिए मुफ्त) के साथ हमारी परियोजना में से एक का विश्लेषण कर रहा हूं और जितना अधिक मैं इसका उपयोग कर रहा हूं, और मुझे इस प्रकार के सॉफ़्टवेयर (कोड-विश्लेषण सॉफ़्टवेयर) के वास्तविक मूल्य के बारे में संदेह है।पर निर्भर करता है और अन्य स्वचालित कोड विश्लेषक revelence?

मुझे समझाएं, प्रणाली प्रत्येक मेट्रिक रैंक द्वारा सिस्टम और कक्षा के स्वास्थ्य के बारे में एक रिपोर्ट तैयार करती है। मैंने सोचा कि यह संशोधन करने के लिए एक अच्छा प्रारंभिक बिंदु होगा लेकिन अधिकांश शीर्ष परिणाम यहां हैं क्योंकि कक्षा के अंदर उनके 100 से अधिक लाइनें हैं (हमारे पास बड़े शीर्षलेख हैं और हम वीएस टिप्पणियां शैलियों का उपयोग करते हैं) इसलिए यह एक बड़ा सौदा नहीं है .. अपरिपक्व युग्मन स्तर (सीए) की संख्या हमेशा बहुत अधिक है और इंटरफ़ेस के लिए यह लगभग सच है कि हमने बहुत उपयोग किया ... इसलिए इस समय मुझे कुछ गलत दिखाई नहीं दे रहा है लेकिन एनडेंड पर यह पसंद नहीं है (यदि आपके पास सुधार करने के लिए सुझाव है जो मुझे बताता है क्योंकि मुझे इसकी आवश्यकता नहीं दिखाई देती है)। यह मीट्रिक बच्चों कि मेरे इंटरफेस के सबसे बहुत अधिक हैं की संख्या के लिए "एनओसी" कहा जाता है के लिए samething ...

क्षण के लिए है, केवल बहुत उपयोगी मीट्रिक cyclomatic जटिलता ... है

मेरा प्रश्न है: क्या आपको लगता है कि स्वचालित कोड विश्लेषक के साथ कोड का विश्लेषण करने के लिए एनडीपेन्डर जैसे कोड का विश्लेषण करना उचित है? यदि हां, तो मैंने उन सभी सूचनाओं को कैसे फ़िल्टर किया है जिन्हें मैंने उल्लेख किया है जो वास्तव में सिस्टम के वास्तविक स्वास्थ्य को नहीं दिखाते हैं?

+0

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

उत्तर

2

दरअसल मेट्रिक्स एनडीपेन्ड की केवल एक विशेषता है, क्या आपने विजुअलेंडेंड का उपयोग करने का प्रयास किया है जो आपको रिपोर्ट की तुलना में गहराई से अपनी परियोजना का विश्लेषण करने देता है? अपनी टिप्पणी पढ़कर, मुझे पूरा यकीन है कि आपने एनडीपेन्शन यूआई (स्टैंडअलोन या विजुअल स्टूडियो में एकीकृत) के साथ नहीं खेला है जो आपके कोड बेस के बारे में डेटा फ़िल्टर करने का सबसे अच्छा तरीका है।

मैं एनडेंड के डेवलपर्स में से एक हूं और हम इसे अपने कोड का विश्लेषण करने के लिए बहुत कुछ उपयोग करते हैं। असल में हम Code Rules over LINQ Queries (CQLinq) के साथ अपने स्वयं के गुणवत्ता नियम लिखते हैं। ये नियम स्वचालित रूप से सुनिश्चित करते हैं कि हमारे पास हमारे डिज़ाइन पर रिग्रेशन नहीं है। यहां आपको 200 default code rules की सूची मिल जाएगी। जैसे dependency cycles between our components, UI using directly the DB या डीबी व्यवसाय के साथ उलझ

  • लिखें CQLinq नियम यकीन है कि हम वास्तु दोषों की जरूरत नहीं है बनाने के लिए,:

    यहाँ कुछ अद्वितीय और नहीं NDepend की सुविधाओं कोड मैट्रिक्स से संबंधित हैं वस्तुओं।

  • यकीन है कि हम परीक्षण से कोड कवरेज के साथ समस्या नहीं है बनाओ (जैसे हम एक CQLinq नियम यह है कि अगर एक वर्ग माना जाता है 100% कवर के साथ यह सुनिश्चित कर लें, it will remain 100% covered in the future)

  • लागू दुष्प्रभाव -फ्री कोड (immutable class/शुद्ध विधियों)

  • नई रिलीज करने से पहले अंतिम रिलीज के बाद कोड समीक्षा में 2 विश्लेषण की तुलना करने की क्षमता का उपयोग करें। अधिक विशेष रूप से, मुझे which method has been added and refactored since the last release, and is not 100% covered by tests जानने के लिए एनडेंडेंड का उपयोग करने का आनंद मिलता है।

  • हमारे सभी सदस्यों और प्रकारों (जैसे knowing which internal methods can be declared as private) के लिए इष्टतम encapsulation होने के बाद। यह dead-code detection से भी संबंधित है जो एनडॉन्सेन भी समर्थन करता है।

NDepend पर सुविधाओं की पूरी सूची के लिए, here देखें।

+0

मैंने विजुअलेंडपेन्ड के साथ एक लिट (2 घंटे) खेला है। मैं यह नहीं कह रहा हूं कि उत्पाद अच्छी तरह से नहीं किया गया है, लेकिन मैट्रिक्स कहें ... ठीक है मेरे पास एक उच्च कपलिंग के साथ मेरा LOG मॉड्यूल है .. यह सामान्य है .. मैं दृढ़ता फैकाडे और BusinessObject के बीच हाइट युग्मन देखता हूं ... यह है सामान्य ... –

+0

उन सभी "सामान्य" स्थिति NDepend (और मीट्रिक के साथ अन्य सॉफ़्टवेयर) में हाइटलिगेट की गई हैं, क्या वे वास्तव में आश्चर्यजनक हैं? यह मेरा सवाल है। +1 आपके उत्तर के लिए, मुझे राय और व्यक्तिगत अनुभव जानना पसंद है, लेकिन आपने मुझे इस तरह के टूल के उपयोग के बारे में दोषी नहीं ठहराया है;) –

2

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

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