2008-09-19 5 views
33

वहाँ Resharper 4 में एक सेटिंग (या यहां तक ​​कि दृश्य स्टूडियो में ही ...) कि एक चेतावनी मजबूर करता है अगर मैं एक using ब्लॉक में कोड रैप करने के लिए भूल जाते हैं, या एक finally ब्लॉक में उचित निपटान कॉल ommit है?क्या रेस्पर्पर को चेतावनी देने के लिए सेट किया जा सकता है अगर IDISposable सही ढंग से संभाला नहीं गया है?

उत्तर

27

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

यह कहा गया है कि अगर डिस्पोजेबल ऑब्जेक्ट वास्तव में "उपयोग" निर्माण के साथ या किसी अन्य तरीके से निपटाया गया है तो जांच के निष्पक्ष कार्यान्वयन से बहुत अधिक झूठी सकारात्मक उत्पन्न होगी, और विश्लेषण बेकार हो जाएगा।

+0

सुनिश्चित नहीं हैं कि तुम क्यों नीचे इल्या मतदान हो गया, किसी ने आर # और जिस तरह से यह आर # –

+0

मुझे पता नहीं, मुझे मिल गया है के बारे में एक सवाल पर टिप्पणी करने से काम करता है में जानकार के लिए समझ में आता है, भी एक और ReSharper संबंधित सवाल पर मतदान किया । ऐसा लगता है कि कोई मुझे व्यक्तिगत रूप से पसंद नहीं करता है। या ReSharper :) –

+6

भी इसे प्यार के लिए अच्छी तरह से मुझे नफरत है, और यह StackOverflow पर उत्पाद पोस्टिंग से संबंधित लोगों के लिए बहुत अच्छा है। चीयर्स! –

2

आप आर # में एक छोटा ऐड-इन डिज़ाइन कर सकते हैं जिसे आप कोड संपादक के अंदर चला सकते हैं जो कोड स्कैन करता है और कोड विश्लेषण को अपडेट करता है ताकि यह दर्शाया जा सके कि आप उस ऑब्जेक्ट को खो चुके हैं जिसकी संरचना आपने अभी वर्णित की है।

अगर आपको लगता है कि मार्ग जाने का निर्णय मैं आर # प्लगइन वास्तुकला पर गौर चाहते हैं।

2

DEBUG में Dispose() के लिए परीक्षण के लिए कुछ ट्रिक के लिए this blog post देखें। असल में, एक डेबग-केवल विनाशक लिखें जो दावा करता है कि आप का निपटारा किया गया था।

2

आप इस के लिए FxCop को देखने के लिए चाहते हो सकता है: http://msdn.microsoft.com/en-us/library/ms182328(VS.80).aspx

इसका एक दया आर # इसे संभाल नहीं करता है, भले ही सिर्फ अपनी कक्षा में खेतों और/या चर के लिए एक चेतावनी आप पैदा करते हैं।

5

वर्तमान तरीकों से असंतोष, मैंने अपना खुद का निर्माण किया: EyeDisposable। यह एक आईएल उपकरण है इसलिए इसे स्थिर विश्लेषण द्वारा पकड़े गए कई रिसावों को पकड़ना चाहिए। यह अभी भी अपने शुरुआती चरण में है, इनपूट का स्वागत है।

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