2017-01-27 9 views
11

मैंने देखा है कि एंड्रॉइड स्टूडियो सत्यापित करेगा कि @Nullable को कोड में अनदेखा नहीं किया जा रहा है:@Nullable एनोटेशन के लिए एंड्रॉइड लिंट चेक कैसे सक्षम करें?

ex।

@Nullable MyObject getMyObject(); 
... 

MyObject o = getMyObject(); 
o.method(); 

^ Method invocation 'method' may produce 'java.lang.NullPointerException'

यह NullableProblems इंटेलीजे चेतावनी द्वारा लागू की जाती।

मैं इस नियम को लिंट नियम के माध्यम से बिल्ड-टाइम पर धीरे-धीरे लागू करना चाहता हूं। क्या किसी को यह पता चल जाता है कि क्या धीरे-धीरे उस के समान कुछ सक्षम करना संभव है?

+0

दूसरे शब्दों में, यदि आप परियोजना में ऐसी चेतावनी है तो आप इमारत से इनकार करना चाहते हैं? या आप सिर्फ लॉग आउटपुट में लॉग इन करना चाहते हैं? – azizbekian

+0

पहला कदम इस स्थिति को स्वीकार करने के लिए धीरे-धीरे होगा। मेरी कमांड लाइन बनाता है इस बारे में चेतावनी नहीं है। लेकिन, हाँ, अगर आप शून्य मूल्यों की जांच नहीं करते हैं तो मैं अंततः निर्माण करने से इंकार कर दूंगा। –

+0

तो यदि आप किसी लिंट त्रुटि का सामना करते हैं तो आप संकलन को रोकना चाहते हैं? – Dibzmania

उत्तर

7

तो सवाल में निरीक्षण फाहा था, आपकी build.gradle अंदर lintOptions को विन्यस्त के लिए मजबूर करने का एक तरीका होगा this question here

हालांकि के जवाब के रूप में विफल बनाता है, निरीक्षण की बात कर रहे द्वारा प्रदान की जाती है एंड्रॉइड स्टूडियो में आईडीई स्वयं। this canonical answer from a IntelliJ developer के अनुसार इन निरीक्षणों के निर्माण के लिए वर्तमान में कोई भी तरीका नहीं है, इंटेलिजे द्वारा प्रदान किए गए इस स्थिर कोड विश्लेषण के लिए यहां link to the documentation है। भीतर विश्लेषण दस्तावेज में बताया गया है, विशिष्ट नाम है "लगातार स्थिति & अपवाद":

यह निरीक्षण संभव स्थिति है कि हमेशा सही या गलत कर रहे हैं, भाव जिसका मूल्य स्थिर साबित होता है रिपोर्ट करने के लिए विधि नियंत्रण और डाटा प्रवाह का विश्लेषण करती है स्थिर होने के लिए, और ऐसी परिस्थितियां जो शून्यता अनुबंध उल्लंघन का कारण बन सकती हैं। वैरिएबल, विधि पैरामीटर और @Nullable या @NotNull के रूप में चिह्नित रिटर्न वैल्यू को निरर्थक (या नॉन-नल, क्रमशः) के रूप में माना जाता है और विश्लेषण के दौरान उपयोग किया जाता है ताकि शून्यता अनुबंधों की जांच हो सके, उदा। संभव NullPointerException त्रुटियों की रिपोर्ट करें।

मुझे लगता है कि आप जो कर सकते हैं वह सबसे अच्छा है, इसकी गंभीरता बदलती है, इसलिए यह एक चेतावनी (आईडीई में रेड रेखांकित) के रूप में दिखाई देती है। इस तरह यह है, पसंद/निरीक्षण/संभावित बग पर जाएं और "लगातार स्थिति & अपवाद" चेतावनी के लिए की गंभीरता को बदलने:

the probable bugs section of Inspections in Android Studio

आपका परियोजना अभी भी अगर आप चेतावनी को अनदेखा निर्माण होगा, लेकिन यह जीता 'टी अच्छे लग रहे:

red underline on calling get on the result of a method that is @Nullable

आप इसे इतना है कि अपनी टीम के शेयरों में एक ही एंड्रॉयड स्टूडियो कोड निरीक्षण सेटिंग सेट अप करना होगा। आप इसे settings repository के साथ कर सकते हैं।

कृपया ध्यान दें कि आप कमिट चेंज/प्रदर्शन कोड विश्लेषण चेक बॉक्स को भी सक्षम कर सकते हैं, जो टीम के काम से पहले कोड विश्लेषण को मजबूर कर देगा।

commit changes dialog in Android Studio

जब आप प्रतिबद्ध क्लिक करें, यह पहली विश्लेषण करता है और चेतावनी तुम्हारे बारे में बात की है पाता है:

code analysis dialog box in Android Studio

कृपया ध्यान दें कि मजबूर कर एक टीम निरीक्षण उपयोग करने के लिए अगर परियोजना में एनपीई समस्याग्रस्त हो रहे हैं तो यह सबसे अच्छा विकल्प नहीं हो सकता है। इसके बजाए, आप विकल्पों को आजमा सकते हैं जैसे null लौटने वाली समस्याओं को खुले तौर पर चर्चा करना और संभावित समाधान। Google Guava विकी में This excellent article on avoiding null एक महान प्रारंभिक बिंदु है।

+1

बस जोड़ना चाहता था, मुझे लगता है कि एंड्रॉइड स्टूडियो 'विश्लेषण' विकल्प कोड त्रुटियों का निरीक्षण करने के लिए दोनों लिंट का लाभ उठाता है और आईडीई कोड निरीक्षण में बनाया गया है। – Dibzmania

0

यदि आप स्रोत कोड में कुछ नियमों को तोड़ने पर लिंट को फेंकना चाहते हैं, तो आप निश्चित रूप से इस परियोजना को कॉन्फ़िगर कर सकते हैं कि स्रोत संकलन रोकता है। मैं पूरी प्रक्रिया लिखा है सकता है, लेकिन इस लिंक और अधिक या कम पूरी बात का सारांश दिया - https://developer.android.com/studio/write/lint.html

नोट - http://www.kiodev.com/android-studio-lint-options/

इसके अलावा एंड्रॉयड लिंक डॉक के माध्यम से जाना: में एंड्रॉयड स्टूडियो मेनू Analyze विकल्प ज्यादातर दोनों एक प्रकार का वृक्ष और बनाया का उपयोग करता है Intellij Idea Code inspection

+0

धन्यवाद @ डिब्ज़मानिया। लेकिन मुझे अभी भी नहीं लगता कि गैर-लिंट निरीक्षण के निर्माण को रोकने का कोई तरीका है, है ना? अगर –

+1

है तो कृपया मुझे बताएं यदि गैर-लिंट निरीक्षण द्वारा यदि आप इंटेलिज आईडीई निरीक्षण का मतलब रखते हैं, तो निरीक्षण त्रुटियों पर कोई भी असफल निर्माण नहीं होता है। संदर्भ के लिए इस एसओ लिंक की जांच करें-http: //stackoverflow.com/questions/13291432/force-intellij-to-fail-the-compilation-on-nonnull-violations – Dibzmania

+0

धन्यवाद - मैंने अपने प्रश्न में उस प्रश्न का लिंक जोड़ा। मुझे लगता है कि इस मुद्दे को एक बार और सभी के लिए हल करता है –

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