Pylint は、Python コードの分析を実行するための優れたツールのようです。
ただし、私たちの主な目的は、コーディング規約ではなく、潜在的なバグを見つけることです。すべての Pylint チェックを有効にすると、多くのノイズが発生するようです。使用していて効果的な Pylint 機能のセットは何ですか?
Pylint は、Python コードの分析を実行するための優れたツールのようです。
ただし、私たちの主な目的は、コーディング規約ではなく、潜在的なバグを見つけることです。すべての Pylint チェックを有効にすると、多くのノイズが発生するようです。使用していて効果的な Pylint 機能のセットは何ですか?
次の方法で、望ましくない警告/エラーをブロックできます。
pylint --disable=error1,error2
以下をブロックしました ( http://www.logilab.org/card/pylintfeaturesの説明):
W0511: FIXME や XXX などのワーニングノートを検出した場合に使用
W0142: * または * 魔法* を使用しました。*args
関数またはメソッドがorを使用して呼び出され、**kwargs
引数をディスパッチするときに使用されます。これは可読性を向上させるものではなく、注意して使用する必要があります。
W0141: 組み込み関数 %r を使用しました。ブラック リストにある組み込み関数が使用されている場合に使用されます (bad-function オプションを参照)。通常ブラックリストに載っている関数は map や filter のようなものですが、Python はリスト内包表記のようなよりクリーンな代替手段を提供しています。
R0912: 分岐が多すぎます (%s/%s)。関数またはメソッドの分岐が多すぎて、追跡が困難な場合に使用されます。
R0913: 引数が多すぎます (%s/%s)。関数またはメソッドがあまりにも多くの引数を取る場合に使用されます。
R0914: ローカル変数が多すぎます (%s/%s)。関数またはメソッドにローカル変数が多すぎる場合に使用されます。
R0903: public メソッドが少なすぎます (%s/%s)。クラスの public メソッドが少なすぎる場合に使用されるため、本当に価値があることを確認してください。
W0212: クライアント クラスの保護されたメンバー %s へのアクセス。保護されたメンバー (つまり、名前がアンダースコアで始まるクラス メンバー) が、クラスまたはそれが定義されているクラスの子孫の外部にアクセスする場合に使用されます。
W0312: %ss ではなく %ss のインデントが見つかりました。モジュール内にタブとスペースが混在している場合に使用します。
C0111: docstring がありません。モジュール、関数、クラス、またはメソッドに docstring がない場合に使用されます。のようないくつかの特別なメソッド__init__
は、必ずしも docstring を必要としません。
C0103: 無効な名前 "%s" (%s と一致する必要があります)。名前がそのタイプ (定数、変数、クラスなど) に関連付けられた正規表現と一致しない場合に使用されます。
警告と規則を永続的に無効にするには:
~/.pylintrc
実行してファイルを作成しますpylint --generate-rcfile > ~/.pylintrc
~/.pylintrc
disable=
を外して、その行を次のように変更しますdisable=W,C
Pyflakesは目的を十分に果たすはずです。
-Eは、Pylint がエラーと判断したものにのみフラグを立てます (つまり、警告なし、規約なしなど)。