2012-04-24 10 views
8

के बारे में शिकायत करने वाले पाइथन पिलिंट को कैसे रोकें मेरे पास कुछ परीक्षण करने के लिए एक साधारण टीसीपी सॉकेट सेटअप का उपयोग करके थोड़ा सा कोड है। हम अपने python फ़ाइलों पर pylint --errors-only चलाते हैं, आमतौर पर हमारे सभी कोड को सत्यापित करने के तरीके के रूप में।सॉकेट क्लास प्रेषण विधि

हालांकि, सरल उदाहरण अजगर सॉकेट पुस्तकालय प्रलेखन पर दिए गए कोड - http://docs.python.org/library/socket.html - इच्छा उत्पादन:

************* Module SocketExample 
E: 16: Instance of '_socketobject' has no 'recv' member 
E: 18: Instance of '_socketobject' has no 'sendall' member 

प्रलेखन इन सदस्यों, कोड रन और काम करता है पता चलता है।

सॉकेट की एक निर्देशिका से पता चलता उन्हें भी मौजूदा:

>>> import socket 
>>> s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
>>> dir(s) 
['__class__', '__delattr__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__slots__', '__str__', '__subclasshook__', '__weakref__', '_sock', 'accept', 'bind', 'close', 'connect', 'connect_ex', 'dup', 'family', 'fileno', 'getpeername', 'getsockname', 'getsockopt', 'gettimeout', 'listen', 'makefile', 'proto', 'recv', 'recv_into', 'recvfrom', 'recvfrom_into', 'send', 'sendall', 'sendto', 'setblocking', 'setsockopt', 'settimeout', 'shutdown', 'type'] 

यह टुकड़ा करने के लिए नीचे है:

for method in _delegate_methods: 
     setattr(self, method, getattr(_sock, method)) 

socket.py कार्यान्वयन में।

pylint इस शैली को स्वीकार (और मान्य यह) को # pylint: disable-msg=E1101 के साथ "कोई भी सदस्य" चेतावनी की अनदेखी करने के लिए एकमात्र विकल्प है बनाया जा सकता है या नहीं?

उत्तर

7

आप pylint --errors-only --ignored-classes=_socketobject उपयोग करें या अपने ~/.pylintrc फाइल करने के लिए

ignored-classes=SQLObject,_socketobject 

जोड़ सकते हैं।

documenation से,

नजरअंदाज कर दिया वर्गों:

(विशेषताओं गतिशील सेट के साथ वर्गों के लिए उपयोगी) वर्ग है जो के लिए नामों सदस्य जिम्मेदार बताते हैं जाँच नहीं की जानी चाहिए की सूची।

डिफ़ॉल्ट: SQLObject

+0

आरसी फाइल में इसे जोड़ना बहुत समझ में आता है। इसका मतलब है कि ऑब्जेक्ट को कोई जांच नहीं मिलती है, लेकिन स्थानीय अक्षमताओं से बेहतर है। –

+0

इसे उत्तर में कॉल करना - क्योंकि यह आज काम करेगा। स्टीनॉल्ट का जवाब अच्छा है - लेकिन अधिक प्रयास की आवश्यकता होगी। हालांकि यह एक महान प्रयास है - इसे गिटूब में प्राप्त करें और समुदाय का उपयोग करके पिलिंट कोर और सामान्य lib भागों में योगदान देना शुरू कर सकता है। –

+1

हां मेरा जवाब तुलना में हैकी महसूस किया, और निश्चित रूप से हमें जो भी चाहिए, उसके लिए बहुत व्यापक है, लेकिन आशा है कि समस्याओं का कारण बनने के लिए इतना व्यापक नहीं है। – bossylobster

1

http://www.logilab.org/blogentry/78354 में परिभाषित चाल का उपयोग करके, हम एक जेनेरिक अस्थिंग प्लगइन को पिलिंट में जोड़ना शुरू कर सकते हैं जो उसे stdlib से ऐसी चीजों को समझने में मदद करेगा (ट्रैकर में हैशिलब के बारे में विभिन्न टिकट/टिप्पणियां भी हैं)।

यह वास्तव में एक महान सुधार होगा। कोई स्वयंसेवक? :)

इसके अलावा, मुझे नहीं लगता कि संदेश को अक्षम करने के अलावा अन्य विकल्प हैं।

+0

मुझे यह पसंद है - यह एक बहुत लचीला दृष्टिकोण है, और यह भी Django सेटअप की तरह चीजों के साथ pylint अधिक अनुकूल बना सकते हैं। –

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