ビルドシステム内で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
がコンベンションメッセージであることを示しています。多くのシステム(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: 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
もう1つのオプションは、--ignore
コマンドラインオプションを使用して、一部のファイルの分析をスキップすることです。
私のユースケースは、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
ファイルを明示的に無視してもエラーは発生しないはずです。