पर NDepend विधियों क्वेरी को प्रतिबंधित करने के लिए मैं मानक "विधि बहुत बड़ी" क्वेरी के संशोधित संस्करण का उपयोग करके लंबी विधियों की पहचान करने के लिए एनडॉन्पेन्स प्राप्त करने का प्रयास कर रहा हूं।टाइप विशेषता
मैं डेवलपर्स पर बहुत कम नियंत्रण की रिपोर्ट नहीं करना चाहता हूं, इसलिए मैं DebuggerNonUserCode
विशेषता और InitializeComponent()
का उपयोग करके जेनरेट कोड को फ़िल्टर करता हूं।
दुर्भाग्यवश, मुझे अभी भी कुछ झूठी सकारात्मक चीज़ें मिलती हैं क्योंकि जेनरेट किए गए प्रकारों में भी तरीके की सूचना दी जाती है। समस्या यह है कि जब इस प्रकार के पास DebuggerNonUserCode
विशेषता है, तो विधियां नहीं होती हैं, इसलिए वे उत्पन्न होने के बावजूद उत्पादन में शामिल होते हैं।
मैं प्रकार और विधियों के बीच शामिल होने की तरह कुछ ढूंढ रहा हूं: मुझे उन सभी प्रकारों को दें जिनके पास DebuggerNonUserCode
विशेषता नहीं है और उन पर क्वेरी चलाएं, लेकिन मैं यह नहीं समझ सकता कि इसे सीक्यूएल में कैसे व्यक्त किया जाए।
कुछ विधानसभाओं के लिए, मैं बस पूर्ण नाम पर फ़िल्टर कर सकता हूं, लेकिन दुर्भाग्य से हमारे कुछ असेंबली डेवलपर बनाये और जेनरेट किए गए प्रकारों को मिलाते हैं। दुर्भाग्यवश IsGeneratedByCompiler
या तो इस मामले में उपयोग नहीं किया जा सकता है।
मेरे क्वेरी
WARN IF Count > 0 IN SELECT METHODS WHERE
NbLinesOfCode > 30 AND
!HasAttribute "System.Diagnostics.DebuggerNonUserCodeAttribute" AND
!NameIs "InitializeComponent()"
ORDER BY NbLinesOfCode DESC
मैं तरीकों में शामिल होने और जानकारी टाइप करने के लिए या तो एक तरह से और V3 की भी रिलीज नोट्स यह उल्लेख नहीं है नहीं पा सके देख सकते हैं। – Timores
क्या आपने IsGeneratedByCompiler विधि विशेषता का प्रयास किया है? – Timores
@ टिमोरस: बिल्कुल, मेरी इच्छा है कि मैं दोनों के बीच जुड़ सकूं। मैंने IsGeneratedByCompiler को नहीं देखा है। प्रलेखन से यह चाल नहीं लगता है। लेकिन मैं इसे एक शॉट दे दूंगा और सवाल अपडेट करूँगा। –