2015-09-17 6 views
58

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

(IOW, अगर एक एक प्रकार का वृक्ष परीक्षण एक जंगल में नहीं चला, वहाँ वास्तव में एक प्रकार का वृक्ष परीक्षण है?) this blog post पर

टिप्पणियाँ बताएंगे कि कैसे थोड़े sorta एक प्रकार का वृक्ष निर्माण के हिस्से के रूप में चलाने के लिए प्राप्त करने के लिए:

  • संपादित परियोजना विन्यास
  • विन्यास के सामान्य टैब में, नीचे स्क्रॉल करें और खुला तह "शुरूआत से पहले" पैनल
  • कि पैनल में, एक कदम के लिए "रन Gradle टास्क" के लिए नामित किया गया lint जोड़ने अपने मॉड्यूलर ई

हालांकि, यह कमांड लाइन लिंट चलाता है, जिसके परिणामस्वरूप एक्सएमएल और एचटीएमएल में आपकी हार्ड ड्राइव में लिखी गई रिपोर्टें होती हैं। यह काम करता है, लेकिन एंड्रॉइड स्टूडियो में इन-आईडीई लिंट चेक चलाने के लिए क्लीनर होगा, इसलिए परिणाम आईडीई पैनल में दिखाई देते हैं।

क्या इन-आईडीई लिंट चेक करने के लिए प्रोजेक्ट बिल्ड सेट अप करने का कोई तरीका है?

बोनस अंक यदि इसे पर सेट किया जा सकता है तो केवल रन लिंट चलाएं, न कि विश्लेषण> विश्लेषण कोड द्वारा किए गए पूर्ण विश्लेषण से। जबकि पूर्ण विश्लेषण कभी-कभी उपयोगी होता है, लिंट जितना धीमा होता है, एंड्रॉइड स्टूडियो (उदाहरण के लिए, वर्तनी जांच) द्वारा किए गए संदिग्ध रूप से उपयोगी अन्य विश्लेषण को अकेले छोड़ दें।

यह सेट अप करते समय सभी परियोजनाओं (लिंट स्कैन धीमे होते हैं) के लिए एक महान योजना नहीं होगी, एंड्रॉइड के लिए नए आने वालों के लिए, यह एक उचित कदम हो सकता है।

+1

आपको यह उत्तर को देखा है? http://stackoverflow.com/questions/22850333/run-lint-when-building-android-studio-projects –

+0

@MattWhetton: मैं इसे कुछ भी उपयोगी नहीं कर सकता। यह ब्लॉग पोस्ट I की याद दिलाता है, जहां ब्लॉग पोस्ट "ग्रैडल-जागरूक मेक" के बजाय "रन ग्रैडल टास्क" का उपयोग करता है। "रन ग्रैडल टास्क" के साथ, मुझे डिस्क पर लिखी गई लिंट रिपोर्ट कम से कम मिलती है। "ग्रैडल-जागरूक मेक" के साथ, मुझे यह भी नहीं मिलता है। न तो लिंट संदेशों के इन-आईडीई दृश्य प्रस्तुतिकरण प्रदान करता है। हालांकि धन्यवाद! – CommonsWare

+0

यह अजीब है क्योंकि हमारे जेनकिंस बिल्ड विफल हो जाते हैं यदि मैं लिंट की बारी नहीं करता हूं, तो इसका मतलब है कि यह जेनकींस के निर्माण के साथ चल रहा है? – Smashing

उत्तर

11

एक प्रकार का वृक्षएंड्रॉयड स्टूडियो में चल जाना चाहिए जब तक आप इसे कॉन्फ़िगर किया है अपने build.gradle फ़ाइल में lintOptions के माध्यम से बंद किया जाना है।

यहाँ प्रलेखन http://developer.android.com/tools/debugging/improving-w-lint.html#studio

में पाया एंड्रॉयड स्टूडियो में से है, के लिए कॉन्फ़िगर फाहा और आईडीई निरीक्षण स्वचालित रूप से जब भी आप अपने ऐप्लिकेशन का निर्माण चलाते हैं। आईडीई निरीक्षण कोड समीक्षा को व्यवस्थित करने के लिए इंटेलिजे कोड निरीक्षण चलाने के लिए लिंट चेक के साथ कॉन्फ़िगर किया गया है।

नोट: देखने और निरीक्षण गंभीरता स्तरों को संशोधित करने के समर्थित निरीक्षण की सूची के साथ निरीक्षण विन्यास पृष्ठ खोलने के लिए> सेटिंग> परियोजना सेटिंग्स मेनू फ़ाइल का उपयोग करें।

एंड्रॉइड स्टूडियो के साथ, आप एक विशिष्ट निर्माण संस्करण, या build.gradle फ़ाइल से सभी निर्माण प्रकारों के लिए लिंट निरीक्षण भी चला सकते हैं। बिल्ड फ़ाइल में एंड्रॉइड सेटिंग्स में लिंटऑप्शन गुण जोड़ें।ग्रैडल बिल्ड फ़ाइल से यह कोड स्निपेट दिखाता है कि कैसे शांत विकल्प को सही और abortOnError विकल्प को गलत पर सेट करना है।

android { 
    lintOptions { 
     // set to true to turn off analysis progress reporting by lint 
     quiet true 
     // if true, stop the gradle build if errors are found 
     abortOnError false 
     // if true, only report errors 
     ignoreWarnings true 
     } 
     ... 
} 

मैन्युअल, एंड्रॉयड स्टूडियो में निरीक्षण को चलाने के लिए आवेदन या राइट-क्लिक मेनू से, का विश्लेषण करें चुनें> निरीक्षण कोड। निर्दिष्ट करें स्कोप संवाद प्रकट होता है ताकि आप वांछित निरीक्षण स्कोप और प्रोफ़ाइल निर्दिष्ट कर सकें। http://developer.android.com/tools/help/lint.html

यह करने के लिए उपयोग करें: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Lint-support

यहाँ Android लिंट बारे में अधिक जानकारी है:

यहाँ अन्य फाहा विकल्प है कि आप अपने lintOptions करने के लिए अपने Gradle build.gradle फ़ाइल में ब्लॉक जोड़ सकते हैं हो सकता है कि आप एंड्रॉइड स्टूडियो में कुछ कार्यों के बाद धीरे-धीरे कार्य जोड़ सकें।

  • स्क्रीन
  • के दाईं ओर Gradle टैब खोलें अपने कार्य

Android Studio Gradle Tab

  • सही कार्य पर क्लिक करें का चयन करें
  • अपने निष्पादन क्रिया चुनें

Android Studio Execution Action

यह निष्पादन के लिए निर्धारित होने पर कार्य को चलाया जाना चाहिए।

+6

"एंड्रॉइड स्टूडियो में लिंट चलाना चाहिए जब तक कि आपने इसे अपने build.gradle फ़ाइल में लिंटऑप्शन के माध्यम से बंद करने के लिए कॉन्फ़िगर नहीं किया है" - AFAICT, यह महीनों के लिए सच नहीं रहा है, इसलिए मैंने प्रश्न को पहले स्थान पर पोस्ट किया है । – CommonsWare

+0

@ कॉमन्सवेयर सही है। यह महीने के लिए सच नहीं रहा है। मेरे पास एक लिंट त्रुटि थी जिसने निर्माण को तोड़ दिया और उस विशिष्ट त्रुटि को तब तक अनदेखा कर दिया जब तक कि इसे हल नहीं किया गया। थोड़ी देर के बाद, मैंने त्रुटि को ठीक किए बिना build.gradle से अनदेखा लाइन हटा दी और उसने अभी निर्माण शुरू कर दिया। एंड्रॉइड ग्रैडल प्लगइन के कुछ संस्करणों की तरह लगता है कि उन्होंने लिंट नौकरी पर निर्भरता को हटा दिया। –

+0

मैं एंड्रॉइड स्टूडियो से लॉन्च करते समय इकट्ठा करने और लिंट चलाने के बीच एक निर्भरता जोड़ने में सक्षम था। इस प्रश्न का मेरा उत्तर देखें: http://stackoverflow.com/questions/22850333/run-lint-when-building-android-studio-projects –

6

निरीक्षण प्रोफ़ाइल बनाएँ Android Lint

  1. जाओ फ़ाइल के लिए -> सेटिंग्स -> संपादक/निरीक्षण
  2. करें प्रबंधित करें -> कॉपी
  3. इसे नाम "Android Lint प्रोफाइल" दो और Enter दबाएँ
  4. छोड़ दो इस टैब पर केवल Android Lint नियम चिह्नित

Android Lint Profile

अब आप "एंड्रॉइड लिंट प्रोफाइल" चुनकर विश्लेषण-> निरीक्षण कोड ... के माध्यम से केवल एंड्रॉइड लिंट नियमों के साथ निरीक्षण चला सकते हैं।

अगले चरण पर, चलिए अगले चरणों के साथ मैक्रो (संपादन-> मैक्रोज़-> प्रारंभ मैक्रो रिकॉर्डिंग) रिकॉर्ड करते हैं।

  1. विश्लेषण-> कोड का निरीक्षण करें ...
  2. का चयन करें "Android Lint प्रोफाइल"
  3. प्रेस दर्ज करें (यह महत्वपूर्ण है कीबोर्ड का उपयोग करने क्योंकि मैक्रो रिकॉर्डर इस खिड़कियों पर माउस क्लिक पकड़ नहीं करता है) "रन चयनित विन्यास" (हरा प्ले बटन पर
  4. क्लिक करें)

मैक्रो रिकॉर्डिंग को रोकें और इसे "लिंट एंड रन" नाम दें।

अंतिम चीज जो किया जाना चाहिए हमारे मैक्रो में "Shift + F10" मैप करना है। फ़ाइल-> सेटिंग्स ...-> कीमैप पर जाएं। हमारे मैक्रो खोजें और शॉर्टकट बदलें।

macro keymapping

अब फाहा से पहले प्रत्येक निर्माण जब आप Shift + F10 और परिणाम प्रेस एंड्रॉयड स्टूडियो पैनल में होगा चलाया जाएगा।

लेकिन इस समाधान में एक बड़ा दोष है। यदि आप रन बटन पर क्लिक करके अपना निर्माण चलाते हैं तो लिंट विश्लेषण निष्पादित नहीं किया जाएगा।

यह जानकारी उपयोगी होगी और कोई इसका उपयोग करके बेहतर समाधान प्रदान करेगा।

1

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

public class BuildAndLint extends AnAction { 
    public void actionPerformed(AnActionEvent e) { 
     String[] actions = {"CompileProject", "InspectCode"}; 
     for(String action: actions) { 
      AnAction anAction = ActionManager.getInstance().getAction(action); 

      DataContext context = e.getDataContext(); 
      AnActionEvent anActionEvent = new AnActionEvent(null, context, "", anAction.getTemplatePresentation(), ActionManager.getInstance(), 0); 

      anAction.actionPerformed(anActionEvent); 
     } 
    } 
} 

कोड का परीक्षण किया गया है और एंड्रॉइड स्टूडियो 1.3 में काम करता है। यह पूरी चीज करने के बजाय, निरीक्षण करने के लिए एक खिड़की खुल जाएगा।

लिंक

Source code on github

Built and Lint Jar

+3

कूल, धन्यवाद!लेकिन, एर, "एसजीआईटीडब्ल्यू"? दुनिया में कुछ अच्छा है? सर्दियों में सर्राचा महान? कहीं जाता है (ए) आइवरी-टस्कड वालरस? :-) – CommonsWare

+0

[पश्चिम में सबसे धीमी बंदूक] (http://meta.stackexchange.com/a/22368) –

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