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


85

ビルドシステム内でpylintを使用しています。コードベース内に使い捨てコードを含むPythonパッケージがあり、モジュールのすべての警告を一時的に無効にして、これらの不要なメッセージで他の開発者を悩ませないようにしたいと思います。pylint: disableモジュールのすべての警告に簡単な方法はありますか?

回答:


120

PyLintFAQから

Pylint <0.25の場合、追加

# pylint: disable-all

モジュールの最初に。

Pylint 0.26.1以降では、そのディレクティブの名前がに変更されました

# pylint: skip-file

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

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


2
注:これにより、すべての警告とすべてのエラーが無効になります。警告のみを無効にする方法をお探しの場合は、このページの私の回答をご覧ください。
eatcrayons 2017

30

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

これらのカテゴリは過去には非常に明白でしたが、番号が付けられたPylintメッセージは現在名前に置き換えられています。たとえば、C0302はになりましたtoo-many-lines。しかし、「C」はそれtoo-many-linesコンベンションメッセージであることを示しています。多くのシステム(Syntasticなど)はすべてを警告またはエラーとして分類しているように見えるため、コンベンションメッセージは警告として表示されることが多いため、これは混乱を招きます。ただし、PyLintレポートは依然としてこれらのカテゴリに分類されているため、確実にサポートされています。

あなたの質問は特に警告に言及しており、すべてのPyLint警告メッセージ名は「W」で始まります。

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

disable=W

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

$ pylint --disable=W myfile.py

または、pylintrcファイルに入れることもできます。

[MESSAGES CONTROL]
disable=W

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

または、コードにインラインで配置することもできます。この場合、配置されているスコープで機能します。

# pylint: disable=W

ファイル全体で無効にするには、ファイルの一番上に配置することをお勧めします。ただし、ファイルの一番上でも、trailing-newlines警告メッセージが表示されていることがわかりました(技術的には慣例的な警告ですが、それに到達しています)。

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

私の解決策は、次のPyLintコマンドを最初の行に配置するだけで、この1つのファイルのすべての警告規則、およびリファクタリングメッセージを無効にすることでした。

# pylint: disable=W,C,R

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


14

はい、指定できます# 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

このように特定の警告が無効になっていると言われるのを避けるためdisable=locally-disabledに、pylintrcに追加することができます。
大佐ファザッカーリー2018

@ColonelFazackerleyはい。ただし、その時点でpylintrc、プロジェクト用のファイルを用意しておくことには意味があります。例はここにあります
acumenus 2018

6

別のオプションは、--ignoreコマンドラインオプションを使用して一部のファイルの分析をスキップすることです。


0

私のユースケースは、pylint *.py特定の1つのファイルをスキップすることを除いて、ディレクトリ内のすべてのファイルを処理するために実行することです。

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

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


1
より理想的にpylintrcは、コマンドオプションではなく、構成ファイルに配置します。
acumenus 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.