web-dev-qa-db-ja.com

Pylintはファイルのすべての警告を無効にします

ビルドシステム内でpylintを使用しています。スローアウェイコードを含むコードベース内にpythonパッケージがあり、これらの余分なメッセージで他の開発者のバグを止めることができるように、モジュールのすべての警告を一時的に無効にしたいと思います。モジュールのすべての警告をpylint: disableする簡単な方法はありますか?

71
mvanveen

PyLint FAQ から

Pylint <0.25で、追加

# pylint: disable-all

モジュールの先頭。

Pylint 0.26.1以降は、このディレクティブの名前を

# pylint: skip-file

(ただし、最初のバージョンは下位互換性のために保持されます)。

どのモジュールが無視されるかを見つけやすくするために、情報レベルのメッセージI0013が発行されます。 Pylintの最近のバージョンでは、古い構文を使用すると、追加のI0014メッセージが出力されます。

90
enderskill

PyLintには メッセージ用の5つの「カテゴリ」 (そのことを知っています)があります。

これらのカテゴリは、以前は非常に明白でしたが、番号付きのPylintメッセージは名前に置き換えられました。例えば、 - C0302too-many-lines。しかし、 'C'はtoo-many-linesConventionメッセージです。 Conventionメッセージは、多くのシステム( Syntastic など)すべてを警告またはエラーとして分類します。ただし、PyLintレポートではこれらのカテゴリに分類されているため、引き続きサポートされています。

あなたの質問は特にWarningsを指し、すべてのPyLintWarningメッセージ名が始まります「W」で。

これを追跡するのは少し難しいですが、 この答え が最終的に答えにつながりました。 PyLintは、メッセージのカテゴリ全体の無効化を引き続きサポートしています。したがって、すべてを無効にするにはWarnings、次のようにします。

disable=W

これはコマンドラインで使用できます:

$ pylint --disable=W myfile.py

または、pylintrcファイルに配置できます。

[MESSAGES CONTROL]
disable=W

注:rcファイルにdisableオプションが既にある場合は、このリストに「W」を追加する必要があります。

または、コード内にインラインで配置して、配置先のスコープで機能するようにすることができます。

# pylint: disable=W

ファイル全体で無効にするには、ファイルの一番上に配置するのが最善です。ただし、ファイルの最上部でも、trailing-newlines警告メッセージ(技術的にはconvention警告ですが、私はそれに到達しています)。

私の場合、昔から誰かが書いたライブラリがありました。それはうまく機能したので、現代のPythonの慣習などを心配する必要はありませんでした。本当に気にかけたのは、コードを壊す可能性のあるエラーだけでした。

私の解決策は、すべてのWarningConvention、および次のPyLintコマンドを最初の行に配置するだけで、この1つのファイルのリファクタリングメッセージ:

# pylint: disable=W,C,R

前述の改行の末尾に関するメッセージは別として、これはまさに私が必要としていたことをしました。

20
eatcrayons

はい、# pylint: skip-fileを指定できますが、ファイルのすべての警告を無効にするのは悪い習慣です。投げ捨てコードは、pylintによって分析されるブランチに存在するべきではありません。

特定の警告のみを無効にする場合は、# pylint: disable=message-nameなどのコメントを追加して、指定されたメッセージをファイルの残りの部分で無効にするか、少なくとも# pylint: enable=message-nameまで有効にします。

例:

# pylint: disable=no-member
class C123:
    def __init__(self):
        self.foo_x = self.bar_x
# pylint: enable=no-member

class C456:
    def __init__(self):
        self.foo_x = self.bar_x
12
Acumenus

別のオプションは、--ignoreコマンドラインオプション。一部のファイルの分析をスキップします。

6
sthenault

私の使用例は、_pylint *.py_を実行して、ディレクトリ内のすべてのファイルを処理することです。ただし、特定の1つのファイルをスキップしたい場合を除きます。

_#pylint: skip-file_を追加すると、pylintはI: 8, 0: Ignoring entire file (file-ignored)で失敗しました。 _#pylint: disable=file-ignored_を追加しても修正されません。おそらく、これはファイル固有のエラーではなく、グローバルなエラーです。

解決策は、pylintコマンドオプションに_--disable=file-ignored_を含めることでした。これを理解するには時間がかかりすぎました。ファイルを明示的に無視するときに_file-ignored_エラーが発生することはありません。

0
Curt