2012-02-10 9 views
12

मैं अपने कमांड लाइन प्रोग्राम के कुछ हिस्सों को कई धागे के साथ समानांतर में चलाने के लिए चाहता हूं और मुझे डर है कि कुछ स्थिर चरम बाएं हो सकते हैं जिन्हें मुझे ठीक करना होगा (उदाहरण के लिए इसे [ThreadStatic] बनाकर)। क्या मेरे प्रोजेक्ट में इन्हें ढूंढने का कोई टूल या आसान तरीका है?मैं अपने सी # प्रोजेक्ट में सभी स्थिर चर कैसे ढूंढ सकता हूं?

बेशक

बस "static" के लिए खोज बहुत मदद नहीं करता है: मैं स्थिर तरीकों कि महान और धागे के किसी भी संख्या के साथ finde काम के बहुत सारे है

+3

अपने विधानसभा पर पाठ्यक्रम उपयोग प्रतिबिंब के आप कर सकते थे। लेकिन मुझे नहीं पता, अगर यह आपके पिछवाड़े की सफाई करने वाले बुलडोजर को देने जैसा होगा। – user492238

+1

मैं सब बुलडोजर दृष्टिकोण के लिए हूं। – Zenexer

उत्तर

11

विजुअल स्टूडियो में regexp विकल्प के साथ static:b+:i:b+:i:b*[=;] के लिए अपनी फ़ाइलों को खोजना आपके लिए स्थिर चर बदलना चाहिए। यह ऑपरेटर == भी लाएगा, लेकिन उन्हें दृष्टि से फ़िल्टर करने के लिए अपेक्षाकृत आसान होना चाहिए।

+3

ओउ, रुको, यह एक साफ चाल है। मुझे लगता है कि कुछ झूठी सकारात्मकताओं के साथ काम करेगा। +1 – Zenexer

+1

बहुत बढ़िया! धन्यवाद! बहुत अच्छा काम करता है! – Christian

1

एक ही स्थान पर अपने स्थिर क्षेत्रों के सभी को खोजने के लिए सबसे आसान तरीका है की संभावना है दृश्य स्टूडियो (Ctrl + W, C में डिफ़ॉल्ट रूप से सी # मोड में क्लास व्यू पैनल के माध्यम से होने के लिए - View मेनू के तहत भी)।

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

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

3

आईडीई चाल के अलावा एक वास्तविक योद्धा का तरीका स्मृति में अनुप्रयोग डीएलएल लोड करने के लिए Assembly.Load() का उपयोग करेगा और फिर प्रतिबिंब खोज का उपयोग करेगा सार्वजनिक/निजी/संरक्षित स्थैतिक क्षेत्रों के लिए सभी प्रकार के माध्यम से। :)

+1

और फिर कस्टम गुणों की जांच करने के लिए यह देखने के लिए कि 'थ्रेडस्टैटिक एट्रिब्यूट' गुम है या नहीं। यदि हां, तो लाल झंडे। – Zenexer

11

नोट: dasblinkenlight के जवाब काम करता है केवल दृश्य स्टूडियो 2010 और पुराने पर।

static(?([^\r\n])\s)+(\b(_\w+|[\w-[0-9_]]\w*)\b)(?([^\r\n])\s)+(\b(_\w+|[\w-[0-9_]]\w*)\b)(?([^\r\n])\s)*[=;]

अनुवाद किया गया था संदर्भित:

नीचे विजुअल स्टूडियो 2012 और नए के लिए अनुवाद है http://msdn.microsoft.com/en-us/library/2k3te2cs(v=vs.110).aspx

+2

वैसे, इस मुद्दे को हल करने के लिए कि उपरोक्त किसी भी अतिरिक्त सजाए गए सदस्यों को याद करेंगे, पढ़ने के लिए निम्नलिखित असंभव रूप से कठिन उपयोग करें लेकिन प्रभावी regex: '(स्थिर (? [^^\ R \ n]) \ n) + (\ b (_ \ w + | [\ डब्ल्यू [0-9 _]] \ डब्ल्यू *) \ ख) (([^ \ r \ n]) \ रों?) + (\ b (_ \ w + | [\ डब्ल्यू [0-9 _]] \ डब्ल्यू *) \ ख) (([^ \ r \ n]) \ रों) * [=;?]) | (स्थिर (([^ \ r \ n]) \ रों) + (\ b (_ \ w + | [\ डब्ल्यू [0-9 _]] \ डब्ल्यू *) \ ख) (? ([^ \ r \ n]) \ रों) + (\ b (_ \ w + | [\ डब्ल्यू [0-9 _]] \ डब्ल्यू *) \ ख) (([^ \ r \ n]) \ रों) + (\ b (_ \ w + |? [\ डब्ल्यू [0-9_] ] \ w *) \ b) (? ([^ \ r \ n]) \ s) * [=;]) ' –

+1

सुविधा के लिए रीफल्ड और कॉपी/पेस्ट समस्याएं नहीं हैं: http://refiddle.com/ एचएचजी –

+0

यह सामान्य प्रकार के क्षेत्रों, जैसे कि पर काम नहीं करता है। –

1

तुम सब Edit->Find and Replace->Find in Files मेनू या Ctrl से Find in Files विंडो खोलने के लिए है सबसे पहले + Shift + F शॉर्टकट कुंजी।

static \w*[ \t]*\b(\w+|[\w-[0-9]]\w)\b[ \t]+\b(\w+|[\w-[0-9]]\w*)\b[ \t]*[=;] 

मन Find options खंड में विकल्प Use Regular Expressions की जाँच करें:

तो फिर तुम Current Project में या Entire Solution में तुम्हारा के सभी स्थैतिक चर खोज करने के लिए इस रेगुलर एक्सप्रेशन का उपयोग करना पड़ता है।

इस regex भी केवल पढ़ने के लिए समर्थन किया, आभासी, ...

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