web-dev-qa-db-ja.com

PyLintのベストプラクティス?

pyLintは、pythonコードの分析を実行するための優れたツールのように見えます。ただし、主な目的は、コーディング規則ではなく、潜在的なバグをキャッチすることです。すべてのpyLintチェックを有効にすると、多くのノイズが生成されるようです。使用していて効果的である一連のpyLint機能に関する提案

27
amit

次の方法で、気に入らない警告/エラーをブロックできます。

pylint --disable=error1,error2

以下をブロックしました( http://www.logilab.org/card/pylintfeatures からの説明):

W0511:FIXMEまたはXXXなどの警告ノートが検出された場合に使用されます

W0142:使用*または* magic * *argsまたは**kwargsを使用して関数またはメソッドが呼び出され、引数をディスパッチするときに使用されます。これは読みやすさを改善するものではなく、注意して使用する必要があります。

W0141:使用済み組み込み関数%rブラックリストの組み込み関数が使用されている場合に使用されます(bad-functionオプションを参照)。通常のブラックリスト関数はmapまたはfilterのようなものです。ここでPythonは、リスト内包のようないくつかのより明確な代替手段を提供します。

R0912:分岐が多すぎます(%s /%s)関数またはメソッドに分岐が多すぎて、追跡が困難になる場合に使用されます。

R0913:多すぎる引数(%s /%s)関数またはメソッドが多すぎる引数を取るときに使用されます。

R0914:ローカル変数が多すぎます(%s /%s)関数またはメソッドにローカル変数が多すぎる場合に使用されます。

R0903:パブリックメソッドが少なすぎます(%s /%s)クラスにパブリックメソッドが少なすぎる場合に使用されるので、それだけの価値があることを確認してください。

W0212:クライアントクラスの保護されたメンバー%sへのアクセス保護されたメンバー(つまり、アンダースコアで始まる名前のクラスメンバー)が、それが定義されているクラスの子孫またはクラスの子孫にアクセスするときに使用されます。

W0312:%ssではなく%ssでインデントが見つかりましたモジュールにタブとスペースが混在している場合に使用されます。

C0111:docstringがありませんモジュール、関数、クラス、またはメソッドにdocstringがない場合に使用されます。 __init__のようないくつかの特別なメソッドは、必ずしもdocstringを必要としません。

C0103:無効な名前 "%s"(%sと一致する必要があります)名前がそのタイプ(定数、変数、クラス...)に関連付けられた正規表現と一致しない場合に使用されます。

23
muckabout

警告と規則を永続的に無効にするには:

  1. ~/.pylintrcを実行してpylint --generate-rcfile > ~/.pylintrcファイルを作成します
  2. 編集~/.pylintrc
  3. disable=のコメントを外して、その行をdisable=W,Cに変更します
10
Jack Kelly

Pyflakes はあなたの目的を十分に果たすはずです。

9
user225312

-Eは、pylintがエラーであると考えるものにのみフラグを付けます(つまり、警告なし、規則なし...)。

7
gurney alex

のようなgrepを使用する:

pylint my_file.py | grep -v "^C"
1
jumpy