2012-04-24 5 views
8

私は単純なtcpソケット設定を使って何かをテストするコードを少し持っています。 私たちはPythonファイルに対してpylint --errors-onlyを実行します。一般的には、すべてのコードを検証する方法です。python pylintがソケットクラスsendallメソッドについて文句を言うのを防ぐ方法

しかし、簡単なPythonのソケットライブラリのドキュメントに与えられたコード例 - 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 

ドキュメントはこれらのメンバーは、コードが実行され、作品を示しています。 socket.py実装で

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

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

これがダウンスニペットにある:

ソケットのディレクトリは、彼らがあまりにも既存示しています。

このスタイルを受け入れることができます(そしてそれを検証する)か、または# pylint: disable-msg=E1101で「メンバーなし」の警告を無視する唯一の選択肢ですか?

答えて

7

あなたはpylint --errors-only --ignored-classes=_socketobjectを使用したり、~/.pylintrcファイルに

ignored-classes=SQLObject,_socketobject 

を追加することができます。

documenationから、

-クラス無視:メンバーは は(動的 セットの属性を持つクラスに便利)をチェックしてはならない属性れるクラス名の

リスト。

デフォルト:SQLOBJECT

+0

これをrcファイルに追加すると十分な意味があります。これは、オブジェクトがまったくチェックを取得しないことを意味しますが、ローカルのディセーブルよりも優れています。 –

+0

これを答えてください - 今日はうまくいくからです。 sthenaultの答えは良いですが、より多くの努力が必要です。それは貴重な努力ですが、それをgithubに入れて、コミュニティを使ってpylintをコアと共通のlibパートに寄付することができます。 –

+1

はい、私の答えはハッキーだったと感じましたが、私たちが本当に必要なものは広すぎましたが、うまくいけば問題を引き起こすほど広かったはずです。 – bossylobster

1

http://www.logilab.org/blogentry/78354で定義されたトリックを使用して、stdlibからそのようなことを理解するのに役立つ一般的なastngプラグインをpylintに追加することができます(トラッカーのhashlibに関するさまざまなチケット/コメントがあります)。

これは本当に大きな改善となるでしょう。どんなボランティアですか? :)

これ以外にも、メッセージを無効にする以外のオプションはないと思います。

+0

私はこれが好き - それは非常に柔軟なアプローチであり、また、Djangoのセットアップのようなものでpylintはもっと優しい作ることができます。 –

関連する問題