विजुअल स्टूडियो में शून्य संदर्भ कोड की सूची प्राप्त करें


133

दृश्य स्टूडियो 2013 में कोड लेंस द्वारा एक विशेष कोड (विधि, संपत्ति, क्षेत्र, ...) के संदर्भों की संख्या दर्शाई गई है । मैं दृश्य स्टूडियो में अप्रयुक्त (शून्य संदर्भ) कोड प्राप्त करना चाहता हूं । क्या उन्हें पाने का कोई तरीका है?

मेरा मतलब है कि नीचे संदर्भ:

यहाँ छवि विवरण दर्ज करें


7
मुझे लगता है कि वह उन सभी तरीकों की एक सूची चाहता है जो संदर्भित नहीं हैं, बल्कि उस विशेष पद्धति के संदर्भों की संख्या को शून्य पर लाना है।
जुर्गन कैमिलेरी

1
यदि आप करते हैं अप्रयुक्त संदर्भ खोजना चाहते हैं, आप एक मिल जाएगा बहुत डुप्लिकेट सवालों का। बस गूगल के लिए "c # खोजा अनुपयोगी कोड"
पानगीतिस कनवास

1
हां, मैं सभी अनुपयोगी कोडों को विधि, गुण, आदि ढूंढना चाहता हूं
निमा रोस्तमी

1
याद रखें कि आप यह सुनिश्चित नहीं कर सकते कि कोई publicसंपूर्ण कोड आधार खोजे बिना अप्रयुक्त है। हालाँकि, अप्रयुक्त आंतरिक और निजीकरण के लिए, कोड विश्लेषण आपको चेतावनी देगा यदि आपके पास उपयुक्त चेतावनी सक्षम है।
मैथ्यू वॉटसन

2
वर्षों बाद, स्क्रीनशॉट को गुमराह करना जारी है।
Sinjai

जवाबों:


184

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

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

एक नियम फ़ाइल को देखते हुए, एक समाधान एक्सप्लोरर पैनल में प्रोजेक्ट फ़ाइल पर राइट क्लिक कर सकता है , और गुण का चयन कर सकता है । प्रोजेक्ट गुण विंडो में, बाएं पैनल में कोड विश्लेषण टैब पर क्लिक करें , और फिर .ruleset फ़ाइल के स्थान पर ब्राउज़ करने के लिए खोलें क्लिक करें। यदि आप किसी समाधान फ़ाइल के गुणों के अनुसार जाते हैं (प्रोजेक्ट फ़ाइल के विपरीत), तो आप समाधान में प्रत्येक प्रोजेक्ट के लिए कोड विश्लेषण फ़ाइल को एक स्थान पर ( कोड विश्लेषण सेटिंग्स के तहत , और ड्रॉप-डाउन का उपयोग करके चयन करने के लिए सेट कर सकते हैं) नियम फ़ाइल। नोट: आपके पास पहले इस गुण विंडो में ड्रॉप-डाउन में दिखाने के लिए इसके लिए नियम फ़ाइल में ब्राउज़ किया जाना चाहिए, हालांकि)।

फिर आप बस प्रोजेक्ट एनालिसिस / सॉल्यूशन (वाया एनालिसिस-> रन कोड एनालिसिस ऑन सॉल्यूशन- ऑर्ट- Alt + F11 ) पर कोड विश्लेषण चलाते हैं और यह चेतावनियों, किसी भी अप्रयुक्त तरीके या अप्रयुक्त सदस्यों के रूप में वापस आता है। यह उन विधियों को भी खोजेगा जो एक विधि द्वारा संदर्भित हैं, जिनके पास स्वयं कहीं और संदर्भ नहीं है।

हालांकि सावधान रहें, क्योंकि मृत कोड के लिए कोड विश्लेषण में से एक आपको गलत बना सकता है, यदि संदर्भ केवल प्रतिनिधियों द्वारा और कभी-कभी, प्रतिबिंब के माध्यम से विधि को कॉल करके 'छिपा' है।

विशेष रूप से मृत कोड का पता लगाने के नियम हैं:

  • निजी तरीके जिन्हें किसी अन्य कोड से नहीं बुलाया जाता है (CA1811)
  • अप्रयुक्त स्थानीय चर (CA1804)
  • अप्रयुक्त निजी क्षेत्र (CA1823)
  • अप्रयुक्त पैरामीटर (CA1801)
  • आंतरिक कक्षाएं जो किसी अन्य कोड (CA1812) से त्वरित नहीं हैं।
  • बिट-वाइज या सीमित स्विच में डेड कोड (C6259)

नीचे .ruleset फ़ाइल की सामग्री दी गई है, जो ऊपर दिए गए चरणों का पालन करते हुए आपके अनुरूपता के लिए हो सकती है। आप बस नीचे एक्सएमएल की प्रतिलिपि बना सकते हैं, इसे नोटपैड ++ में पेस्ट कर सकते हैं, एक्सटेंशन के साथ कहीं भी सहेज सकते हैं। कैप्सूल , इसके लिए ब्राउज़ करें और ऊपर बताए गए उपयोग करें:

<?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="Dead Code Rules" Description=" " ToolsVersion="12.0">
  <Rules AnalyzerId="Microsoft.Analyzers.ManagedCodeAnalysis" RuleNamespace="Microsoft.Rules.Managed">
    <Rule Id="CA1801" Action="Warning" />
    <Rule Id="CA1804" Action="Warning" />
    <Rule Id="CA1811" Action="Warning" />
    <Rule Id="CA1812" Action="Warning" />
    <Rule Id="CA1823" Action="Warning" />
  </Rules>
  <Rules AnalyzerId="Microsoft.Analyzers.NativeCodeAnalysis" RuleNamespace="Microsoft.Rules.Native">
    <Rule Id="C6259" Action="Warning" />
  </Rules>
</RuleSet>

30
मुझे नहीं लगता कि यह पूरी तरह से सवाल का जवाब देता है। मुख्य अंतर यह है कि CodeLens आपको बताएगा कि एक PUBLIC विधि में संपूर्ण समाधान में शून्य संदर्भ हैं। यह कुंजी है। FxCop, R #, और कुछ भी नहीं के लिए महान के लिए अपने तरीके।
स्कॉट विली

1
@ScottWylie - मैं असहमत हूं। मैंने सिर्फ उपरोक्त समाधान की कोशिश की और यह संयुक्त राष्ट्र के संदर्भित तरीकों को चिह्नित नहीं करता है। CodeLens मृत कोड को चिह्नित करने में असाधारण था, अपरिचित स्थानीय सामान और अप्रयुक्त चर। मुझे लगता है कि यह ज्यादातर लोगों को वही मिलता है जो वे चाहते हैं कि वे 3rd पार्टी टूल का उपयोग कर w / o चाहते हैं।
माइक

7
@ माइक इस पर विचार करें: यदि आप एक बड़े ऑपरेशन के साथ मृत कोड ढूंढना चाहते हैं, तो आप निजी / संरक्षित सदस्यों की परवाह नहीं करते हैं, क्योंकि ये स्थानीय समस्याएं हैं। उदाहरण के लिए, मैं 500k + LoC प्रोजेक्ट को 100+ प्रोजेक्ट और 10+ सॉल्यूशंस के साथ रिपॉजिटरी पैटर्न आर्किटेक्चर में माइग्रेट कर रहा हूं। एक घटक को माइग्रेट करने के बाद, मुझे यह जानना होगा कि मैं कौन से पुराने इंटरफेस को हटा सकता हूं। कुछ आईडीई जैसे कि ग्रहण के लिए उपकरण ठीक हैं। ग्रेय्ड-आउट लोकल तरीके केवल मेरी चिंता नहीं है, मैं पब्लिक क्लासेस / इंटरफेस की एक सूची चाहूँगा जहाँ कोड लेंस मुझे "0" बताएगा।
ओलिवर शिमर

0

https://scottlilly.com/c-code-quality-improvement/remove-unused-classes-properties-and-functions/

"दुर्भाग्य से, [विजुअल स्टूडियो विश्लेषण में] आप केवल अप्रयुक्त निजी सदस्यों का पता लगा सकते हैं। यह इसलिए है क्योंकि कोड विश्लेषक सार्वजनिक सदस्यों को अन्य कार्यक्रमों द्वारा उपयोग कर सकता है। यह सच हो सकता है यदि आप उन्हें वेब सेवा के माध्यम से एपीआई के रूप में प्रकाशित कर रहे हैं। या लाइब्रेरी के रूप में अपने कोड को जारी करना। ... ReSharper के समान कोड विश्लेषण कार्य हैं - अप्रयुक्त सार्वजनिक सदस्यों के लिए जाँच का लाभ। "


0

मैं प्रत्येक फ़ाइल के माध्यम से जाऊंगा, सब कुछ ढहाने के लिए Ctrl-MO कमांड करूंगा, फिर संदर्भ 0 की तलाश में चारों ओर स्क्रॉल करूंगा।


-1

इसे पूरा करने के लिए एक मैनुअल तरीका है जो मैंने उन अप्रयुक्त वर्गों को खोजने के लिए उपयोग किया है जो सार्वजनिक रूप से चिह्नित हैं।

  1. अपने समाधान में एक परियोजना के लिए "निजी वर्ग" के साथ सभी "सार्वजनिक वर्ग" खोजें और बदलें। "सार्वजनिक स्थैतिक वर्ग" और / या "सार्वजनिक सार वर्ग" को भी बदलने की आवश्यकता हो सकती है।
  2. सभी त्रुटियों को खोजने के लिए बनाएँ
  3. बिल्ड में प्रत्येक त्रुटि के लिए, संदर्भित वर्ग के लिए फ़ाइल को पुनर्स्थापित करने के लिए अपने स्रोत नियंत्रण का उपयोग करें।
  4. बिल्ड के सफल होने तक हर त्रुटि के लिए दोहराएं।
  5. कोई भी बची हुई फाइल जो बहाल नहीं की गई है, उसे हटाने की संभावना वाले उम्मीदवार हैं।
  6. (वैकल्पिक) उपरोक्त फ़ाइलों में कक्षाओं का नाम बदलें और त्रुटियों को खोजने के लिए एक और निर्माण करें।
  7. उस श्रेणी के नाम के लिए एक अंतिम खोज करें जिसे आप पुष्टि करना चाहते हैं कि प्रतिबिंब या जादू के तार में इसका कोई उदाहरण नहीं है।
  8. पहचानी गई अप्रयुक्त वर्ग फ़ाइलों को निकालें।
  9. प्रत्येक समाधान परियोजना के लिए दोहराएं जिसे आप साफ करना चाहते हैं।

नोट: यदि आप एक वर्ग प्रति फ़ाइल नियम का पालन नहीं करते हैं, तो इसके लिए बहुत अधिक कार्य की आवश्यकता होगी। इसके अलावा, किसी भी एपीआई सेवा के समापन बिंदु आपको यह सत्यापित करने की आवश्यकता होगी कि इसका उपयोग किसी भी बाहरी परियोजना द्वारा नहीं किया जा रहा है।


14
यह बिल्कुल भी व्यावहारिक नहीं है।
डॉन रोलिंग

1
यह एक बड़ी परियोजना में मेरे लिए काम करता है और एक समाधान है। मामले भिन्न हो सकते हैं जहां यह अधिक कठिन है, लेकिन मैं इसे एक संभावना के रूप में प्रदान करना चाहता था।
उल्फियस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.