2012-04-24 29 views
8

Tôi có một chút mã bằng cách sử dụng một thiết lập socket tcp đơn giản để kiểm tra một cái gì đó. Chúng tôi chạy pylint --errors-only trên các tệp python của chúng tôi, thường là cách để xác thực tất cả mã của chúng tôi.Làm thế nào để ngăn chặn python pylint phàn nàn về phương pháp sendall lớp socket

Tuy nhiên, mã ví dụ đơn giản đưa ra trên python tài liệu thư viện socket - http://docs.python.org/library/socket.html - ý chí đầu ra:

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

Các tài liệu cho thấy các thành viên, mã chạy và các công trình.

Một dir của ổ cắm cho thấy họ đang tồn tại quá:

>>> 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'] 

Đây là xuống đến đoạn:

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

Trong việc thực hiện socket.py.

Có thể đặt pylint để chấp nhận kiểu này (và xác thực nó) hay là lựa chọn duy nhất để bỏ qua cảnh báo "không có thành viên" với # pylint: disable-msg=E1101?

Trả lời

7

Bạn có thể sử dụng pylint --errors-only --ignored-classes=_socketobject hoặc thêm

ignored-classes=SQLObject,_socketobject 

đến file ~/.pylintrc của bạn.

Từ documenation,

lờ-lớp:

Danh sách các lớp học tên mà các thuộc tính thành viên không nên được kiểm tra (hữu dụng cho các lớp với các thuộc tính động bộ).

Mặc định: SQLObject

+0

Thêm rằng vào tập tin rc làm cho rất nhiều ý nghĩa. Nó có nghĩa là đối tượng không được kiểm tra gì cả, nhưng đẹp hơn các khuyết tật cục bộ. –

+0

Gọi câu trả lời này - bởi vì nó sẽ hoạt động ngay hôm nay. Câu trả lời của sthenault là tốt - nhưng sẽ đòi hỏi nhiều nỗ lực hơn. Đó là một nỗ lực cao quý mặc dù - làm cho nó thành github và pylint sử dụng cộng đồng có thể bắt đầu đóng góp cốt lõi và các phần lib phổ biến. –

+1

Có câu trả lời của tôi cảm thấy hacky so với, và chắc chắn quá rộng cho những gì chúng ta thực sự cần, nhưng hy vọng không quá rộng để gây ra vấn đề. – bossylobster

1

sử dụng thủ thuật được xác định trong http://www.logilab.org/blogentry/78354, chúng tôi có thể bắt đầu thêm vào một plugin chung astng có thể giúp anh hiểu những điều như vậy từ stdlib (cũng có nhiều vé/nhận xét khác nhau về hashlib trong trình theo dõi).

Đó thực sự là một ứng biến tuyệt vời. BẤT KỲ TÌNH NGUYỆN VIỆN nào ? :)

Bên cạnh đó, tôi không nghĩ có các tùy chọn khác ngoài việc vô hiệu hóa thư.

+0

Tôi thích video này - đó là một cách tiếp cận rất linh hoạt, và cũng có thể làm cho pylint thân thiện hơn với những thứ như các thiết lập Django. –

Các vấn đề liên quan