अतीत में मैंने मुख्य रूप से PyLint का उपयोग किया है - जब आप एक अपरिभाषित चर का उपयोग करते हैं तो यह हाइलाइट कर सकता है, जब आप उन्हें उपयोग किए बिना चीजें आयात करते हैं और इसी तरह।
यह थोड़ा वर्बोज़ हो सकता है, जो 80 वर्णों से अधिक लंबी लाइनों के बारे में शिकायत कर रहा है, परिवर्तनीय विशिष्ट रेगेक्स से मेल नहीं खा रहा है, कक्षाओं में बहुत कम सार्वजनिक विधियां हैं, विधियों को डॉक्स-ट्रिंग याद आ रही है।
उदाहरण के लिए, स्क्रिप्ट के लिए ..
import os
import somefakelib
def myfunc(x):
blah = "Something"
print os.listdir(x+blh)
PyLint निम्न संदेश उत्पन्न करता है:
C: 1: Missing docstring
F: 2: Unable to import 'somefakelib' (No module named somefakelib)
C: 4:myfunc: Missing docstring
C: 4:myfunc: Invalid name "x" (should match [a-z_][a-z0-9_]{2,30}$)
C: 4:myfunc: Invalid name "x" (should match [a-z_][a-z0-9_]{2,30}$)
E: 6:myfunc: Undefined variable 'blh'
W: 5:myfunc: Unused variable 'blah'
W: 2: Unused import somefakelib
वे सभी वैध शिकायतों हैं, लेकिन मैं सम्मेलन और पुनर्रचना के बहुत से संदेश को निष्क्रिय करने के लिए करते हैं । तुम्हें पता है, विशिष्ट संदेशों निष्क्रिय कर सकते हैं या तो के रूप में अपने कोड में टिप्पणियां:
#pylint:disable-msg=R0903,C0103,R0903,F0401,C0301
PyLint आदेश को आदेश पंक्ति तर्क के रूप में ..or:
pylint --disable-msg=R0903,C0103,R0903,F0401,C0301 myfile.py
अक्षम ऊपर गए संदेशों के साथ
, यह निम्न संदेश जनरेट करता है ऊपर दिए गए कोड के लिए:
C: 1: Missing docstring
C: 4:myfunc: Missing docstring
E: 6:myfunc: Undefined variable 'blh'
W: 5:myfunc: Unused variable 'blah'
W: 2: Unused import somefakelib
PyLint भी एक "कोड रिपोर्ट", कोड/टिप्पणी/docstring/खाली स्थान के फ़ाइल है, प्रति-सी संदेशों की संख्या में से कितने लाइनों सहित उत्पन्न करता है ategory, और आपके कोड को "स्कोर" देता है - 10 कोई संदेश नहीं होता है, 0 आमतौर पर एक वाक्यविन्यास त्रुटि
एक और विकल्प PyFlakes है, जो मुझे थोड़ा कम वर्बोज़ मिलता है (मैंने हाल ही में इसे स्थान पर उपयोग करना शुरू कर दिया है Pylint के)। फिर इसके बाद के संस्करण स्क्रिप्ट का उपयोग कर, PyFlakes निम्न संदेश देता है:
example.py:2: 'somefakelib' imported but unused
example.py:6: undefined name 'blh'
अंतिम विकल्प का उपयोग मैं pep8.py
, के रूप में नाम का सुझाव PEP8 लागू करता है जो है। यह अब तक का सबसे अधिक है .. पैडेंटिक स्क्रिप्ट, कार्यों/कक्षाओं के पहले/बाद में सही रिक्त रेखाओं जैसी चीजों को लागू करना, कोड के चारों ओर घूमना, सही 4-स्पेस इंडेंटेशन आदि।
ऊपर कोड पर चल रहा है, यह पैदा करता है निम्नलिखित:
example.py:4:1: E302 expected 2 blank lines, found 1
example.py:6:23: E201 whitespace after '('
example.py:6:32: W292 no newline at end of file
यह ज्यादातर सही खाली स्थान के तरह शैलीगत चीजों को लागू करता है, यह PyLint या PyFlakes की तरह कोड के ज्यादा स्थिर-विश्लेषण नहीं करता है, तो मैं या तो Pylint या PyFlakes के संयोजन के साथ pep8.py का उपयोग करें।
pep8.py
मूल रूप python mailing list here पर घोषणा की गई थी, लेकिन इस में डाउनलोड लिंक अब मर चुका है .. वहाँ github.com/cburroughs/pep8.py पर कुछ मामूली सुधारों के साथ, cburroughs द्वारा एक GitHub दर्पण है, या आप an older revision
से असंशोधित संस्करण प्राप्त कर सकते हैं
PyChecker, एक और विकल्प है, हालांकि मैं का उपयोग नहीं किया है यह
मुझे अभी pep8.py के बारे में पता चला है, लेकिन पृष्ठ लोड नहीं होता है। हालांकि यह अभी भी Google कैश में है http://74.125.93.132/search?q=cache:-sI5YpbDc9MJ:svn.browsershots.org/trunk/devtools/pep8/pep8.py+pep8.py क्या यह एकमात्र टूल है ? क्या कोई और बेहतर है? – solarc