2011-10-24 6 views
28

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

(वहाँ अक्सर एक मालिकाना स्रोत फ़ाइल की शुरुआत में पाया कानूनी शब्दजाल का एक अवधि है? किसी भी उदाहरण? मैं नहीं जानता कि क्या यह अलग से इस तरह के एक तुच्छ प्रश्न पोस्ट करने के लिए एक ठीक है।)

उत्तर

23

पाइथन मॉड्यूल के लिए यह एक अच्छा है, यह बताता है कि मॉड्यूल क्या करता है, यह क्या प्रदान करता है, कक्षाओं का उपयोग कैसे करें। यह उन टिप्पणियों से अलग है जो आप अक्सर कॉपीराइट और लाइसेंस जानकारी देने वाली फ़ाइल की शुरुआत में देखते हैं, जो आईएमओ को डॉकस्ट्रिंग में नहीं जाना चाहिए (कुछ लोग तर्क देते हैं कि उन्हें पूरी तरह से गायब होना चाहिए, उदाहरण के लिए http://hackerboss.com/get-rid-of-templates/)

पिलिंट में विभिन्न जगहों के लिए एक अलग कोड नहीं है जहां डॉकस्ट्रिंग हो सकती है, इसलिए आप जो भी कर सकते हैं वह C0111 अक्षम है। समस्या यह है कि यदि आप मॉड्यूल गुंजाइश इसे अक्षम है, तो यह हर जगह मॉड्यूल में (अक्षम हो जाएगा है यानी आप लापता समारोह/वर्ग/विधि docstring के लिए किसी भी सी लाइन मिल जाएगा नहीं। कौन सा यकीनन अच्छा नहीं है, और आप चाहते हो सकता है इस pylint issue on github में योगदान के लिए अगर यह आपको परेशान करती

तो मैं क्या सुझाव है कि छोटे लापता docstring जोड़ रहा है, की तरह कुछ कह रही:।

""" 
high level support for doing this and that. 
""" 

जल्द ही पर्याप्त है, तो आप उपयोगी चीजें खोजने हो जाएगा वहाँ में डाल करने के लिए , जैसे कि मॉड्यूल के विभिन्न वर्गों/कार्यों का उपयोग करने के उदाहरण प्रदान करने के उदाहरण जो आवश्यक रूप से कक्षाओं/कार्यों के व्यक्तिगत दस्तावेज़ों से संबंधित नहीं हैं (जैसे कि ये कैसे बातचीत करते हैं, या कुछ ऐसा त्वरित आरंभ गाइड)।

+3

कानूनी कोड के लिए +1 (और अन्य) बॉयलरप्लेट स्रोत कोड से गायब हो रहा है। कार के प्रत्येक घटक में कानूनी नोटिफिकेशन संलग्न नहीं होते हैं। हर तरह से इसमें अपनी परियोजना के कानूनी पाठ के साथ एक फाइल बनाएं। प्रत्येक फाइल में इसकी प्रतियां न रखें। –

+10

-1 डॉकस्ट्रिंग के लिए जो शुरू होता है "यह मॉड्यूल foobar है।" यह पहले से ही स्पष्ट है कि यह मॉड्यूल क्या है। इसे पुनर्स्थापित करना अनावश्यक है और यदि मॉड्यूल कभी भी नाम बदलता है तो तारीख से बाहर जाने का अनुमान है। बस "इस के लिए उच्च स्तरीय समर्थन प्रदान करता है और वह" भाग शामिल करें। –

+0

@ जोनाथन हार्टले: सहमत हुए। मैंने तदनुसार उत्तर के अंतिम भाग को अपडेट किया। –

6

मैं एक उत्तर की तलाश में आया क्योंकि, जैसा कि @cerin ने कहा था, Django परियोजनाओं में यह एक नई ऐप बनाने के दौरान स्वचालित रूप से उत्पन्न होने वाली फ़ाइलों में से प्रत्येक को मॉड्यूल डॉकस्ट्रिंग जोड़ने के लिए बोझिल और अनावश्यक है।

तो, तथ्य यह है pylint आप प्रकार docstring में एक फर्क स्पष्ट करने देते हैं यह नहीं है कि के लिए एक समाधान के रूप, आप ऐसा कर सकते हैं: आप संदेश-टेम्पलेट अपडेट करना पड़ता है

pylint */*.py --msg-template='{path}: {C}:{line:3d},{column:2d}: {msg}' | grep docstring | grep -v module 

ताकि जब आप grep आप अभी भी फ़ाइल नाम पता चल जाएगा। यह मॉड्यूल को छोड़कर अन्य सभी गायब-डॉक्स्टिंग प्रकार देता है।

तो फिर तुम उन त्रुटियों के सभी ठीक कर सकते हैं, और बाद में बस चलाने:

pylint */*.py --disable=missing-docstring 
2

मुझे लगता है कि ठीक इस सुविधा को अक्षम बिना आसान सापेक्ष है।

def kos_root(): 
    """Return the pathname of the KOS root directory.""" 
    global _kos_root 
    if _kos_root: return _kos_root 
आप सभी हर कार्य में ट्रिपल डबल कोट्स स्ट्रिंग जोड़ें करने की जरूरत है

+0

धन्यवाद। मैंने अभी पाया है कि यहां तक ​​कि एकल उद्धरण भी काम करते हैं – vikas027

2

सवाल यह पूछ रहा था कि क्या आप "अनुपलब्ध मॉड्यूल डॉकस्ट्रिंग" पिलिंट त्रुटि को अक्षम कर सकते हैं या नहीं। इस सवाल का जवाब नहीं है। पिलिंट वर्तमान में आपको डॉक्टर-स्ट्रिंग चेतावनियों (जो बहुत परेशान) के बीच भेदभाव करने देता है।

हालांकि, सभी खो नहीं गए हैं, मैं सभी पायथन कोड जांच के लिए flake8 का उपयोग करने की सलाह देते हैं। वे वास्तव में उनके साथ मिलकर काम करते हैं और मैं उनके बिना बहुत पहले पाइथन जहाज छोड़ देता। आप पीओपी ->pip install flake8_docstrings के साथ दस्तावेज़-स्ट्रिंग एक्सटेंशन इंस्टॉल कर सकते हैं। यह http://www.pydocstyle.org/en/latest/index.html का उपयोग करता है।

आप बस --ignore D100 स्विच का उपयोग कर सकते हैं। उदाहरण के लिए flake8 file.py --ignore D100

3

देर हो चुकी है, लेकिन फिर भी मुझे यह उपयोगी लगता है। तो साझा करना। यह here मिला।

आप चेतावनियों को अक्षम करने के लिए पिलिंट के लिए "- केवल-केवल" ध्वज जोड़ सकते हैं।

ऐसा करने के लिए, सेटिंग्स पर जाएं। निम्न पंक्ति को संपादित करें:

"python.linting.pylintArgs": []

रूप

"python.linting.pylintArgs": ["--errors-only"]

और तुम जाने के लिए अच्छा कर रहे हैं!

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