मैं एंड्रॉइड स्टूडियो में अपने प्रोजेक्ट में सभी हार्ड कोडेड स्ट्रिंग्स कैसे पा सकता हूं


92

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

Android Studio (बीटा) में 0.84 फ़ाइल / सेटिंग / FindBugs-IDEA I18N को रिपोर्टिंग टैब के तहत एक विकल्प के रूप में दिखाता है। लेकिन मैं अभी यह पता नहीं लगा सकता कि इसे कैसे काम किया जाए।

किसी भी सुझाव के लिए धन्यवाद।

जवाबों:


130

जैसा कि @ मादर हदाद और अन्य अपवित्रों ने मुझे सुझाव दिया: मैं अपनी टिप्पणी को एक उत्तर में परिवर्तित करता हूं:

Android Studio 1.2.2 के बाद से, इसमें एक नया विकल्प है

"Analyse > Run inspection By Name" => "Hardcoded strings".

मैंने इसका उपयोग किया और यह "हार्डकोडेड टेक्स्ट" (जो केवल xml फ़ाइलों की जांच करता है) की तुलना में वर्तमान संस्करण के साथ काफी अधिक विश्वसनीय लगता है।

यहाँ लिंक देखें


33
ध्यान रखें, Hardcoded Textनिरीक्षण .XMLफाइलों में हार्डकोड किए गए पाठ लौटाता है , जबकि Hardcoded Stringsनिरीक्षण .javaफाइलों में हार्डकोड किए गए पाठों को वापस करता है।
लॉयलर

कृपया इसी तरह की समस्या के लिए मेरा जवाब यहां देखें stackoverflow.com/a/56121083/3904109
ड्रैगनफायर

मेरे पास एक समान कार्य था, लेकिन मेरी स्पंदन परियोजना के लिए। ऊपर उल्लिखित निरीक्षण अपेक्षित परिणाम नहीं लाया, इसलिए मैंने एक रेक्सक्स की कोशिश की। ".+\Q\Eयदि आप एकल के साथ दोहरे उद्धरण का स्थान लेते हैं तो आपको एकल उद्धरण के अंदर सभी स्ट्रिंग्स मिलते हैं।
pbertsch

117

"विश्लेषण> नाम से निरीक्षण चलाएं ..." पर जाएं, और "हार्डकोड टेक्स्ट" टाइप करें। अपने पूरे प्रोजेक्ट के खिलाफ उसे चलाएं, और आपको एक निरीक्षण परिणाम पैनल मिलना चाहिए जो हार्डकॉस्ट टेक्स्ट इंस्टेंस दिखाएगा।

आप Android Studio> प्राथमिकताएँ> निरीक्षण> हार्डकोड टेक्स्ट पर भी जा सकते हैं और यह बता सकते हैं कि यह कैसे चलता है, और क्या (यदि कोई है) विशेष मामलों को निरीक्षण से बाहर रखा गया है।


2
यह अजीब काम किया! धन्यवाद। BTW, क्या ऐसे कोई उपकरण हैं जो स्वचालित रूप से स्ट्रिंग्स को मानों से बाहर निकालेंगे। पाठ के आधार पर उत्पन्न संसाधन आईडी का उपयोग करके फ़ाइल को फ़ाइल करें? यह एक बड़ी मदद होगी। तब कोई भी जा सकता है और संसाधन आईडी नामों को कुछ छोटा कर सकता है।
फारुख नजमी

मुझे स्वचालित का पता नहीं है, लेकिन मेरा मानना ​​है कि यदि आप स्ट्रिंग में से एक को उजागर करते हैं और विकल्प-एंटर को हिट करते हैं, तो आपको स्वचालित रूप से उस स्ट्रिंग को निकालने का विकल्प मिलेगा, लेकिन आपको मैन्युअल रूप से नाम लिखना होगा।
केविन कोपॉक

3
+1 एंड्रॉइड स्टूडियो की एक बहुत अच्छी सुविधा है। क्या किसी ने परिणामों से android.util.Log संदेशों को बाहर करने का एक तरीका पाया है? (मेरे परिणामों का लगभग 95%!)
बेन क्लेटन

6
जानकारी के लिए: एंड्रॉइड स्टूडियो 1.2.2 ने "रन इंस्पेक्शन बाय नाम" => "हार्डकोड स्ट्रिंग्स" में एक नया विकल्प जोड़ा। यह "हार्डकोड टेक्स्ट" की तुलना में वर्तमान संस्करण के साथ काफी अधिक विश्वसनीय लगता है। यहाँ देखें लिंक
PAD

@PAD आपको इसे उत्तर के रूप में लिखना चाहिए। हार्डकोड टेक्स्ट केवल xml फाइलें ही लौटाता है। ty :)
Maor Hadad

11

Windows प्लेटफ़ॉर्म के लिए, मुझे जो सबसे अच्छा तरीका मिला वह यह है:

आप इस शॉर्टकट का उपयोग कर सकते हैं Ctrl Alt Shift Iऔर खोज सकते हैं ,

हार्डकोड पाठ

खोज बार में।

आप उपयुक्त मॉड्यूल का चयन कर सकते हैं जिसमें आप हार्डकोडेड स्ट्रिंग्स को खोजना चाहते हैं और यह आपको सभी स्ट्रिंग्स की सूची एक साथ देगा।

मॉड्यूल का चयन करने के लिए विकल्प


1

यदि आप केवल सभी लेआउट फ़ाइलों में सभी हार्ड कोडित स्ट्रिंग्स ढूंढना चाहते हैं, तो आप रनिंग करके बहुत जल्दी कर सकते हैं -

vinayak@vinayak-osx:layout $ grep -n "android:text=\"" * | grep -v "@string"

नोट्स -
1. grepखिड़कियों पर नहीं किया जा सकता
पहले 2. cdपरियोजना के लिए layoutनिर्देशिका
3. kcoppock जवाब महान है, लेकिन यह बहुत ज्यादा समय लगता है


grep कमांड अच्छा काम करता है, लेकिन यह भी जोड़ें कि कमांड में डेटाबाइंडिंग को कैसे नजरअंदाज करें
kashyap

1

विंडोज के लिए हर जगह खोजने के लिए Ctrl+ Shift+ Fसंयोजन का उपयोग करें , यह पूर्वावलोकन भी दिखाता है।

वर्तमान फ़ाइल में खोजने के लिए Windows के लिए Ctrl+ Fसंयोजन का उपयोग करें ।

प्रोजेक्ट के प्रोजेक्ट फ़ाइल को खोजने के लिए विंडोज के लिए Shift+ Shift(डबल शिफ्ट) संयोजन का उपयोग करें ।

पुराने संस्करणों के लिए अनुपलब्ध हो सकता है।


1

मेरे लिए ठीक काम क्या regex का उपयोग कर पूरी परियोजना पर खोज कर रहा था:

एंड्रॉयड: पाठ = "[az]

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

उन कोटलिन / जावा वर्ग के अंदर खोजने के लिए:

[।] पाठ = "[az]

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

[।] SetText ( "

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

ऊपर इस छवि के बहुत अंत में। * नीले बटन पर टैप करना न भूलें

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