ビルドシステム内でpylintを使用しています。スローアウェイコードを含むコードベース内にpythonパッケージがあり、これらの余分なメッセージで他の開発者のバグを止めることができるように、モジュールのすべての警告を一時的に無効にしたいと思います。モジュールのすべての警告をpylint: disable
する簡単な方法はありますか?
PyLint FAQ から
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
はConventionメッセージです。 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の慣習などを心配する必要はありませんでした。本当に気にかけたのは、コードを壊す可能性のあるエラーだけでした。
私の解決策は、すべてのWarning、Convention、および次の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
別のオプションは、--ignore
コマンドラインオプション。一部のファイルの分析をスキップします。
私の使用例は、_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
_エラーが発生することはありません。