2009-09-28 11 views
17

मैं कुछ कोड की समीक्षा कर रहा हूं।सी #: सभी रिक्त पकड़ ब्लॉक खोजें

मुझे कुछ खाली पकड़ ब्लॉक दिखाई देते हैं। कोई अच्छा विचार नहीं है क्योंकि कुछ काम नहीं करते हैं और आप क्यों नहीं देख सकते हैं।

क्या समाधान में सभी खाली प्रयास पकड़ने के ब्लॉक खोजने का कोई आसान तरीका है?

संपादित

सभी प्रश्नों के उत्तर के लिए धन्यवाद।

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

+0

बस एक एफवाईआई - सभी खाली पकड़ ब्लॉक खराब नहीं हैं। कभी-कभी, डेवलपर एक विशिष्ट अपवाद के लिए पकड़ रहा है ताकि अपवाद को अनदेखा किया जा सके। –

+0

@ मैट, धन्यवाद, आपसे सहमत हैं, लेकिन फिर हमारे पास एक नियम है कि डेवलपर को यह पुष्टि करने के लिए एक टिप्पणी देनी चाहिए कि यह इरादे से किया गया है। –

+0

@ मैट - लेकिन पकड़ (अपवाद) लगभग हमेशा खराब होता है। – TrueWill

उत्तर

22

उपयोग वैश्विक खोज संवाद का उपयोग, नियमित अभिव्यक्ति पर बारी और फिर खोज के लिए:

catch:b*\([^)]*\)[:b\n]*\{([:b\n]|(\/\*[^*]*\*\/)|(//[^\n]*))*\} 
+0

धन्यवाद, यह एक वास्तविक समय बचतकर्ता है –

+0

FxCop या ReSharper बस खाली प्रयास/पकड़, अच्छी सोच के लिए ओवरकिल होगा! – jrummell

+2

उपर्युक्त उत्तर मेरे लिए काम नहीं करता है, लेकिन यह "पकड़ (\ (। * अपवाद। * \)) * *: * * {{: Wh * \}" उद्धरण के बिना। – UnhandledExcepSean

5

क्या आपके पास ReSharper है? यह कोड में पाए गए मुद्दों को दूर करना चाहिए।

+0

मुझे नहीं मिला है कि ReSharper में यह कहां है या कैसे ... आप इसे कैसे करेंगे? – yeyeyerman

+0

यह रीशेपर के साथ एक चेतावनी के रूप में दिखाई देता है, लेकिन मुझे लगता है कि आपको इसे देखने के लिए कोड फ़ाइल खोलनी होगी। – jrummell

+0

विचित्र रूप से पर्याप्त, मैंने दूसरे दिन किसी कोड में इनमें से एक पाया।हम FxCop और ReSharper दोनों का उपयोग करते हैं; किसी ने स्पष्ट रूप से FxCop चेतावनी को दबा दिया था (इसलिए यह निरंतर एकीकरण निर्माण पर दिखाई नहीं दिया) और ReSharper को अनदेखा कर दिया। इसके बारे में आप इतना कुछ नहीं कर सकते हैं। : पी – TrueWill

7

FxCop उन्हें कई अन्य संभावित मुद्दों के साथ मिल जाएगा।

+1

क्या आप उस नियम का नाम दे सकते हैं जो खाली पकड़ ब्लॉक पकड़ता है? – slolife

2

यहाँ एक रेगुलर एक्सप्रेशन भी अंदर ही टिप्पणी के साथ ब्लॉक पकड़ने पाता है Regex सुझाव के लिए Stefan करने के लिए। मैंने पाया है कि सुझाव दिया regex पकड़ ब्लॉक जहां अपवाद निर्दिष्ट नहीं है, यानी नहीं मिल रहा है:

catch { } 

मैं बदलाव स्टीफन के थोड़ा अपवाद ब्रेस वैकल्पिक बनाने के लिए:

catch:b*(\([^)]*\))*:b*\{:b*\} 
2

धन्यवाद:

catch:b*\([^)]*\):b*\{:b*\} 
5

आगे का विस्तार तीन समाधान ऊपर खंड जहां कर्ली कोष्ठक पकड़ और जहां पकड़ खंड केवल एक पंक्ति है, उसी लाइन में नहीं कर रहे हैं शामिल करने के लिए उद्धरण:

catch:b*(\([^)]*\))*:b*[ \n\r\t]*\{:b*([ \n\r\t.]|(\/*[^]*\/)|(//.*$))*\} 
+1

+1 स्टैक ओवरफ्लो –

1

Ctrl दबाएं + शिफ्ट + एफ विस्तृत विकल्प खोजें। नियमित अभिव्यक्तियों का उपयोग करें इस रेगेक्स को पेस्ट करें।

catch\s*(\(\s*Exception(\s*\w+)?\))?\s*\{\s*\} 
+1

पर धन्यवाद और वेलकम मैंने जवाब देने के लिए विवरण जोड़ा। – bobah75

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