2012-08-01 15 views
18

मैं String.Equals() विधि कॉल कि स्पष्ट रूप से मामला संवेदनशीलता को निर्दिष्ट के साथ एक यथोचित बड़े सी # codebase में स्ट्रिंग == ऑपरेटर उपयोगों के सभी जगह की व्यवहार्यता की जांच के लिए एक अनुरोध मिला है में ऑपरेटर ।ढूँढना उपयोगों == एक बड़ी codebase

हालांकि, कोडबेस में सभी घटनाओं की पहचान करने के लिए एक रास्ता तय करने में बहुत भाग्य नहीं है।

  • "==" के लिए खोज स्ट्रिंग की तुलना में अन्य प्रकार के अनगिनत उदाहरणों को स्पष्ट रूप से पाता है।
  • ऐसा करने के लिए स्टाइलकॉप नियम प्रतीत नहीं होता है।
  • न ही एक ReSharper नियम।
  • एक अंतिम उपाय मैं JustDecompile में विधानसभाओं लोड हो रहा है और System.String.op_Equality के सभी उपयोगों खोजने लेकिन यह है कि LINQ भाव के अंदर प्रयोग लेने के लिए इस तरह के .Where(x => x.StringField == stringField)

तो जैसा कि मैं एक छोटे से स्टंप्डया हूँ प्रतीत नहीं होता की कोशिश की के रूप में और आश्चर्य हुआ कि अगर किसी को इस अजीब तुलना को कैसे खोजा जाए, इस पर कोई विचार था?

+4

मुझे यह सुनने में बहुत दिलचस्पी होगी कि आपको ऐसी चीज़ों को देखने का अनुरोध क्यों किया गया था। यह आपके समय का एक बहुत ही अनुत्पादक उपयोग की तरह लगता है ..... क्या यह एक "मानक दस्तावेज पालन" चीज है? –

+0

क्यों 'खोज रहे हैं' == "तारों की तुलना में अन्य प्रकार के अनगिनत उदाहरण मिलते हैं '? उन अन्य 'प्रकार' क्या हैं? –

+0

@ निखिल अग्रवाल क्या होगा यदि वे स्ट्रिंग चर हैं और जादू तार नहीं हैं? –

उत्तर

11

आप सभी उपयोगों को खोजने के लिए रिशेर्पर का उपयोग कर सकते हैं। यहां मेरे लिए क्या काम करता है:

  1. अपने कोड में कहीं भी स्ट्रिंग प्रकार पर राइट क्लिक करें। पर क्लिक करें घोषणा पर जाएं।
  2. Resharper operator == और दाएँ क्लिक करने के लिए नीचे नेट ढांचे से string.cs खुल जाएगा
  3. स्क्रॉल, चयन का पता लगाएं Usages

यह समय का एक सा लगता है लेकिन आप एक अच्छा सूची मिल जाएगा उपयोग के, एक पेड़ दृश्य में आदेश दिया। मैंने इसे VS2010 में Resharper 6.1 के साथ करने की कोशिश की।

अद्यतन

यह करने के लिए एक सरल तरीका है:

  1. करें == एक स्ट्रिंग तुलना
  2. सही चयन पर क्लिक करें और चुनें Usages उन्नत
  3. खोजें में नीचे दिए गए संवाद में केवल 'उपयोग' की जांच करें और अन्य libs में किसी भी संदर्भ को फ़िल्टर करने के लिए 'समाधान' पर दायरा सेट करें।
+0

बहुत अच्छा। मील से मेरा जवाब मारता है :) – davenewza

+0

अच्छा सुझाव। हालांकि, जब मैं इसे VS2012RC और R # 7 में आज़माता हूं, और 'ऑपरेटर ==' पर राइट-क्लिक करें _Find Usages_ विकल्प अक्षम है। दरअसल, _Find Usages_ _String.cs_ मेटाडेटा फ़ाइल में सभी विधियों के लिए अक्षम होने लगते हैं। क्या मुझसे कुछ गलत हो रही है? –

+0

टिप के लिए धन्यवाद लेकिन मैं इसे काम करने के लिए नहीं मिल सका। "उपयोग खोजें" (मान लीजिए कि इसका मतलब क्या है, मेरे पास "उपयोग दिखाएं" मेनू आइटम नहीं है) मेरे समाधान में सभी कोड फ़ाइलों के माध्यम से स्कैन करता है, लेकिन उसके परिणामों में, यह मुझे संदर्भित पुस्तकालयों में 1432 उपयोग देता है, मूल रूप से 'सिस्टम' नामस्थान में उत्सव मनाया जाता है। मेरे कोड से कुछ भी नहीं। – Carson63000

0

मेरे सलाह एक बहुत ही बुनियादी और विशिष्ट कोड पार्सर जो आपके सिस्टम में प्रत्येक दायरे के माध्यम से transverses, सभी string/String चर घोषणाओं की रिकॉर्डिंग और वे चर का उपयोग कर किसी भी == तुलना का पता लगाने के बारे में होगा।

कोड पार्सिंग पर गहन ज्ञान वाले किसी भी व्यक्ति को टिप्पणी करने के लिए आपका स्वागत है। मुझे यकीन है कि वहां कुछ कक्षाएं/उपकरण हैं जो कोई भी उपयोग कर सकता है।

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