Intellij Idea में सभी अप्रयुक्त कक्षाएं कैसे लगती हैं?


126

एक निरीक्षण "अप्रयुक्त घोषणा" है जो इंटेलीज आइडिया में सभी अप्रयुक्त कोड पा सकते हैं। (देखें इस सवाल का ) लेकिन मैं सभी अप्रयुक्त कक्षाएं, पता लगाना चाहते हैं नहीं तरीकों, चर आदि केवल कक्षाएं। (3000 रिजल्ट लिस्ट में सिर्फ क्लासेस मिलना मुश्किल है)। मैं ऐसा कैसे कर सकता हूं?


बस निरीक्षण रन बटन पर क्लिक करें और इसे मेनू सूची में देखें।
चेरी

यह दो प्रश्न हैं - वे अलग-अलग प्रश्नों के रूप में बेहतर होंगे। इसके अलावा serialVersionXXX अधिकांश परियोजनाओं के लिए एक बुरा विचार है।
सॉफ्टवेयर इंजीनियर

यह एक बुरा विचार है क्योंकि बहुत कम डेवलपर्स जानते हैं कि यह किस लिए है, और इसका लगभग हमेशा दुरुपयोग होता है। जावा में यह अत्यंत दुर्लभ है कि बाइट स्तर पर वस्तुओं को पढ़ने और लिखने के लिए क्रमांकन तंत्र का उपयोग किया जाता है, और यदि आप डिफ़ॉल्ट धारावाहिक संस्करण करते हैं तो आमतौर पर सुरक्षा प्रदान करने के लिए पर्याप्त है। एक हार्ड कोडित क्रमबद्धता को हर बार मैन्युअल रूप से एक वर्ग परिवर्तन के इंटरफ़ेस से अपडेट किया जाना चाहिए, और हर बार क्षेत्र सूची में परिवर्तन होता है - हमेशा, डेवलपर्स ऐसा नहीं करते हैं क्योंकि वे बस यह नहीं समझते हैं कि धारावाहिक विसर्जन क्या है। आप इसे कोड में देखते हैं इसका मुख्य कारण ग्रहण है।
सॉफ्टवेयर इंजीनियर

जवाबों:


218
  • प्रेस Ctrl+ Shift+ A(मैक Command+ Shift+ में A)
  • "अप्रयुक्त घोषणा" दर्ज करें
  • "अप्रयुक्त घोषणा" पर डबल-क्लिक करें

सेटिंग्स पॉप हो जाएंगी

  • जावा / घोषणा अतिरेक / अप्रयुक्त घोषणा पर क्लिक करें
  • दाईं ओर नीचे "फ्लाई एडिटर सेटिंग पर" चुनें
  • अनचाहे चेक फ़ील्ड, ..., मापदंडों की जाँच करें। केवल चेक क्लासेस को टिक करना चाहिए।
  • ओके दबाओ

सेटिंग्स बंद हो जाती हैं

  • मेनू बार पर, विश्लेषण / नाम से भागो निरीक्षण (या पर क्लिक करें Ctrl+ Alt+ Shift+ I- में मैक Command+ Option+ Shift+ I)
  • "अप्रयुक्त डिकला" पाठ डालें
  • "अप्रयुक्त घोषणा जावा | घोषणा अतिरेक" का चयन करें

खोज शुरू होती है

  • विचार समाप्त होने पर नौकरी की स्थिति की जाँच करें: परिणाम और गंदे कोड को साफ करने की शानदार भावना का आनंद लें। :)

कुछ सवालों के जवाब में लगभग एक ही जवाब पोस्ट करते हुए, सुझाव दें कि उनमें से एक दूसरे के डुप्लिकेट है। कृपया उन्हें इस तरह चिह्नित करें।
जाप

3
उनमें से एक विशेष रूप से इंटेलीज आइडिया उपयोग के लिए है, दूसरा सामान्य जावा के लिए है। मैं यह नहीं कहूंगा कि ये दोहराव हैं।
ब्लॉन्डकोड

7
यह "केवल चेक क्लासेस" कॉन्फ़िगरेशन को अनदेखा करता है, इसलिए मुझे बहुत सारे और बहुत से अवांछित परिणाम मिलते हैं (अप्रयुक्त तरीके, क्षेत्र, आदि, और, इससे भी बदतर, उनमें से कई झूठे सकारात्मक हैं, कई कारणों से ...)।
Thelawnmowerman

6
स्टूडियो 3.0 में एक बदलाव आया है, केवल स्टेप के बाद चेक क्लास का विकल्प आता है: "अप्रयुक्त घोषणा जावा | घोषणा अतिरेक" का चयन करें
सौरभ सालदी

4
हमें विभिन्न मापदंडों के साथ निरीक्षण चलाने के लिए वैश्विक सेटिंग्स को बदलने की आवश्यकता नहीं है। नाम कार्रवाई से रन निरीक्षण निरीक्षण के लिए सेटिंग्स पॉप होगा।
ट्वीस्टरेब जुब

11

मुझे नहीं लगता कि यह उल्लेखनीय है। मुझे संदेह है कि यह फीचर जानबूझकर आईडीई से बचा हुआ है क्योंकि इसे सुरक्षित तरीके से इस्तेमाल नहीं किया जा सकता है कि अन्य "अप्रयुक्त XXX" रिफैक्टोरिंग कर सकते हैं।

अप्रयुक्त घोषणाएं IDEA (और AFAIK, NetBeans) निजी सदस्यों और स्थानीय चर के लिए लग रही हैं: चीजें जो सुलभ नहीं हैं, यहां तक ​​कि गतिशील रूप से, उस वर्ग या दायरे के बाहर से। (ठीक है, कम से कम चीजों को रिफ्लेक्शन या जेवीएम हैकिंग के साथ करने के बिना, जिन्हें आप नहीं चाहते हैं।) कोई फर्क नहीं पड़ता कि बाहरी कोड आपके पुस्तकालय के साथ क्या करता है, इससे उन चीजों का उपयोग नहीं होगा, क्योंकि उनका दायरा सीमित है और आईडीई यह सब देख सकता है। कंपाइलर इसे आपके कोड को देखकर निर्धारित कर सकता है।

कक्षाओं के लिए, भले ही उनकी publicपहुंच न हो , लेकिन उन्हें गतिशील रूप से संदर्भित किया जा सकता है Class.forName(), और यह वास्तव में लाइव कोड में होता है। इसलिए भले ही वे आपके प्रोजेक्ट के कोड के भीतर स्पष्ट रूप से उपयोग नहीं किए गए हों, उनका उपयोग आपके लाइब्रेरी रन का उपयोग करके आपके या बाहरी कोड के आधार पर किया जा सकता है। इसलिए आईडीई गारंटी नहीं दे सकता है कि उन कक्षाओं को हटाने से बाहरी रूप से देखने योग्य व्यवहार नहीं बदलेगा।

यही कारण है कि मुझे लगता है कि आईडीईए केवल इस व्यवहार को प्रदान नहीं करता है: यह उपयोगकर्ताओं को सुरक्षा की झूठी उम्मीदें दे सकता है, और उन्हें हटाना सुरक्षित रिफैक्टिंग नहीं है।


6
खैर, यह वर्ग नाम को ग्रे करता है जब वास्तव में फ़ाइल को देखता है और आपको "अप्रयुक्त वर्ग को हटाने" के लिए एक इरादे से कार्रवाई करता है, जो सब गायब है वह स्वचालित रूप से उन्हें खोजने में सक्षम है। निश्चित रूप से ऐसे तरीके हैं जो चीजों को तोड़ सकते हैं लेकिन यह कई रिफैक्टोरिंग के सच है।
रोब फ्लेचर

2
Class.forName () विश्लेषण सुरक्षा के दृष्टिकोण से, कक्षा में निजी क्षेत्रों को पढ़ने / सेट करने के लिए प्रतिबिंब का उपयोग करने की तुलना में यकीनन अलग नहीं है। इसलिए यदि इंटेलीजे खेतों के लिए ऐसा करेगा, तो यह स्वीकार्य उत्तर नहीं है कि यह कक्षाओं के लिए भी क्यों नहीं करेगा। किसी भी स्थिति में, विश्लेषण परिणाम सुरक्षित होने की 100% गारंटी नहीं है।
कुत्ते

1

शायद आपको Unused Symbolनिम्नलिखित सेटिंग्स के साथ निरीक्षण में देखना चाहिए :

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


हा! नहीं लगता है :-) मैं "अप्रयुक्त घोषणा" समूह में हर चीज को बंद कर दिया और केवल "अप्रयुक्त प्रतीक" को "चेक कक्षाओं" के साथ छोड़ दिया। लेकिन परिणाम नहीं बदलते हैं। :-(
चेरी

@Cherry, सुनने के लिए क्षमा करें ... हो सकता है कि आपको जेटब्रेन्स में दोष दर्ज करना चाहिए
विक

1

मुझे यकीन नहीं है कि यह आपके प्रश्न का उत्तर देगा, लेकिन मैंने अतीत में एक टूल का इस्तेमाल किया था जो कि फोर्टीफाई फॉर द प्रोजेक्ट रिव्यू रूल्स को चलाने के लिए था, जो कि अप्रयुक्त आयात, डेड कोड, अप्रयुक्त वर्गों आदि की ओर इशारा करता है। यह एक सशुल्क सॉफ़्टवेयर है, लेकिन मैं मुझे यकीन है कि कुछ मुफ्त प्लगइन्स होंगे / सॉफ्टवेयर उसी के लिए उपलब्ध होंगे।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.