ビルドシステム内でpylintを使用しています。コードベース内に使い捨てコードを含むPythonパッケージがあり、モジュールのすべての警告を一時的に無効にして、これらの不要なメッセージで他の開発者を悩ませないようにしたいと思います。pylint: disable
モジュールのすべての警告に簡単な方法はありますか?
回答:
Pylint <0.25の場合、追加
# pylint: disable-all
モジュールの最初に。
Pylint 0.26.1以降では、そのディレクティブの名前がに変更されました
# pylint: skip-file
(ただし、最初のバージョンは下位互換性のために保持されます)。
無視されるモジュールを見つけやすくするために、情報レベルのメッセージI0013が発行されます。Pylintの最近のバージョンでは、古い構文を使用すると、追加のI0014メッセージが出力されます。
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
注:disable
rcファイルにすでにオプションがある場合は、このリストに「W」を追加する必要があります。
または、コードにインラインで配置することもできます。この場合、配置されているスコープで機能します。
# pylint: disable=W
ファイル全体で無効にするには、ファイルの一番上に配置することをお勧めします。ただし、ファイルの一番上でも、trailing-newlines
警告メッセージが表示されていることがわかりました(技術的には慣例的な警告ですが、それに到達しています)。
私の場合、昔から誰かが書いた図書館がありました。それはうまく機能したので、最近のPythonの慣習などについて心配する必要はありませんでした。私が本当に気にかけたのは、コードを壊す可能性のあるエラーだけでした。
私の解決策は、次のPyLintコマンドを最初の行に配置するだけで、この1つのファイルのすべての警告、規則、およびリファクタリングメッセージを無効にすることでした。
# pylint: disable=W,C,R
改行を追跡するための前述のメッセージは別として、これはまさに私が必要としていたことを実行しました。
はい、指定できます# 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に追加することができます。
私のユースケースは、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
ファイルを明示的に無視してもエラーは発生しないはずです。
pylintrc
は、コマンドオプションではなく、構成ファイルに配置します。