Pylint एक फ़ाइल के लिए सभी चेतावनियों को अक्षम करता है


85

हम अपने निर्माण प्रणाली के भीतर pylint का उपयोग कर रहे हैं। हमारे पास हमारे कोड बेस के भीतर एक अजगर पैकेज है, जिसमें फेक कोड है, और मैं एक मॉड्यूल के लिए सभी चेतावनियों को अस्थायी रूप से अक्षम करना चाहता हूं, ताकि मैं इन शानदार संदेशों के साथ अन्य devs को रोकना बंद कर सकूं। क्या pylint: disableमॉड्यूल के लिए सभी चेतावनियों का एक आसान तरीका है ?

जवाबों:


120

से PyLint पूछे जाने वाले प्रश्न

Pylint <0.25 के साथ, जोड़ें

# pylint: disable-all

मॉड्यूल की शुरुआत में।

Pylint 0.26.1 और ऊपर ने उस निर्देश का नाम बदल दिया है

# pylint: skip-file

(लेकिन पहले संस्करण को पिछड़ेपन के अनुकूल रखा जाएगा)।

सूचना-स्तर के संदेश को नजरअंदाज करने के लिए I0013 को किस मॉड्यूल से नजरअंदाज किया जाता है, इसका अनुकरण किया जाता है। पाइलिंट के हाल के संस्करणों के साथ, यदि आप पुराने सिंटैक्स का उपयोग करते हैं, तो एक अतिरिक्त I0014 संदेश उत्सर्जित होता है।


2
नोट: यह सभी चेतावनियों और सभी त्रुटियों को अक्षम कर देगा । यदि आप केवल चेतावनियों को अक्षम करने का तरीका ढूंढ रहे हैं , तो इस पृष्ठ पर मेरा उत्तर देखें।
खाओ

30

PyLint में संदेशों के लिए पांच "श्रेणियां" हैं (जिनमें से मैं जागरूक हूं)।

ये श्रेणियां अतीत में बहुत स्पष्ट थीं, लेकिन गिने हुए पाइलिंट संदेशों को अब नामों से बदल दिया गया है। उदाहरण के लिए, C0302अब है too-many-lines। लेकिन 'सी' हमें बताता है कि too-many-linesएक कन्वेंशन संदेश है। यह भ्रामक है, क्योंकि कन्वेंशन संदेश अक्सर केवल एक चेतावनी के रूप में दिखाई देते हैं, क्योंकि कई सिस्टम (जैसे सिंथेटिक ) सब कुछ या तो एक चेतावनी या एक त्रुटि के रूप में वर्गीकृत करते हैं। हालाँकि, PyLint की रिपोर्ट अभी भी इन श्रेणियों में चीजों को तोड़ती है, इसलिए यह अभी भी निश्चित रूप से समर्थित है।

आपका प्रश्न विशेष रूप से चेतावनियों को संदर्भित करता है , और सभी PyLint चेतावनी संदेश नाम 'W' से शुरू होते हैं।

इसको ट्रैक करना मेरे लिए थोड़ा मुश्किल था, लेकिन इस जवाब ने आखिरकार मुझे जवाब दे दिया। PyLint अभी भी संदेशों की संपूर्ण श्रेणियों को अक्षम करने का समर्थन करता है। इसलिए, सभी चेतावनियों को अक्षम करने के लिए , आप निम्न कार्य करेंगे:

disable=W

इसका उपयोग कमांड-लाइन पर किया जा सकता है:

$ pylint --disable=W myfile.py

या, आप इसे अपनी pylintrc फ़ाइल में रख सकते हैं:

[MESSAGES CONTROL]
disable=W

नोट: आपके पास पहले से ही disableअपनी आरसी फ़ाइल में विकल्प हो सकता है , जिस स्थिति में आपको इस सूची में 'डब्ल्यू' को जोड़ना चाहिए।

या, आप इसे अपने कोड में इनलाइन डाल सकते हैं, जहां यह उस दायरे के लिए काम करेगा जिसमें इसे रखा गया है:

# pylint: disable=W

संपूर्ण फ़ाइल के लिए इसे अक्षम करने के लिए, इसे फ़ाइल के शीर्ष पर रखना सर्वोत्तम है। हालाँकि, फ़ाइल के शीर्ष पर भी, मैंने पाया कि मुझे अभी भी trailing-newlinesचेतावनी संदेश मिल रहा था (तकनीकी रूप से एक कन्वेंशन चेतावनी, लेकिन मैं इसे प्राप्त कर रहा हूँ)।

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

मेरा समाधान केवल पहली पंक्ति में निम्नलिखित PyLint कमांड को रखकर इस एक फ़ाइल के लिए सभी चेतावनी , कन्वेंशन और रिफैक्टिंग संदेशों को अक्षम करना था:

# pylint: disable=W,C,R

नई कहानियों के पीछे आने के लिए उपर्युक्त संदेश के अलावा, यह वही हुआ जिसकी मुझे आवश्यकता थी।


14

हां, आप निर्दिष्ट कर सकते हैं # pylint: skip-file, लेकिन किसी फ़ाइल के लिए सभी चेतावनियों को अक्षम करना बुरा व्यवहार है। पाइलिंट द्वारा विश्लेषण की गई शाखा में थ्रोवेवे कोड मौजूद नहीं होना चाहिए।

यदि आप केवल विशिष्ट चेतावनियों को अक्षम करना चाहते हैं, तो यह टिप्पणी को जोड़कर किया जा सकता है जैसे # pylint: disable=message-nameफ़ाइल के शेष के लिए निर्दिष्ट संदेश को अक्षम करने के लिए, या कम से कम जब तक # pylint: enable=message-name

उदाहरण:

# pylint: disable=no-member
class C123:
    def __init__(self):
        self.foo_x = self.bar_x
# pylint: enable=no-member

class C456:
    def __init__(self):
        self.foo_x = self.bar_x

यह बताने से बचने के लिए कि एक विशिष्ट चेतावनी को निष्क्रिय कर दिया गया है जैसे कि इसे disable=locally-disabledpylintrc में जोड़ा जा सकता है।
कर्नल फाजाकेरले

@ColonelFazackerley हां, लेकिन उस समय यह pylintrcआपके प्रोजेक्ट के लिए एक फ़ाइल के लिए सार्थक है । एक उदाहरण यहाँ है
एक्यूमेनस

6

एक अन्य विकल्प --ignoreकुछ फाइलों के लिए विश्लेषण को छोड़ने के लिए कमांड लाइन विकल्प का उपयोग करना है ।


0

मेरा उपयोग मामला pylint *.pyएक निर्देशिका में सभी फ़ाइलों को संसाधित करने के लिए चलाने के लिए है, सिवाय इसके कि मैं एक विशेष फ़ाइल को छोड़ना चाहता हूं।

जोड़ा जा रहा है #pylint: skip-fileके साथ विफल करने का कारण pylint I: 8, 0: Ignoring entire file (file-ignored)। जोड़ने से #pylint: disable=file-ignoredवह ठीक नहीं होता है। संभवतः, यह फ़ाइल-विशिष्ट के बजाय एक वैश्विक त्रुटि है।

इसका समाधान --disable=file-ignoredपाइलिंट कमांड विकल्पों में शामिल करना था । यह पता लगाने के लिए बहुत लंबा रास्ता तय किया; file-ignoredजब आप किसी फ़ाइल को स्पष्ट रूप से अनदेखा करते हैं तो कोई त्रुटि नहीं होनी चाहिए ।


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