2012-04-19 16 views
47

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

उत्तर

56
PyLint FAQ

Pylint < 0.25 के साथ

से

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

# pylint: disable-all 

जोड़ें।

Pylint 0.26.1 और ऊपर

# pylint: skip-file 

है कि निर्देश का नाम बदला है (लेकिन पहले संस्करण पिछली संगतता के लिए रखा जाएगा)।

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

+1

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

5

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

2

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

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

उदाहरण:

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

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

यह बताने से बचने के लिए कि एक विशिष्ट चेतावनी अक्षम कर दी गई है जैसे 'अक्षम = स्थानीय रूप से अक्षम' को pylintrc में जोड़ा जा सकता है। – ColonelFazackerley

+0

@ColonelFazackerley हां, लेकिन उस समय आपके प्रोजेक्ट के लिए 'pylintrc' फ़ाइल होना अर्थपूर्ण है। एक उदाहरण है [यहां] (https://github.com/impredicative/pyskeleton/blob/master/pylintrc)। –

9

PyLint है five "categories" for messages (जिनमें से मुझे पता कर रहा हूँ)।

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

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

मेरे लिए यह ट्रैक करना थोड़ा मुश्किल था, लेकिन this answer ने अंततः मुझे जवाब दिया। 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 
अलावा

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

0

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

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

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

+0

अधिक आदर्श, इसे 'pylintrc' कॉन्फ़िगरेशन फ़ाइल में रखें, कमांड विकल्प में नहीं। –

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