Pylintを使用して特定の1行を無視することは可能ですか?


150

ヘッダーに次の行があります。

import config.logging_settings

これは実際に私のPythonロギング設定を変更しますが、pylintはそれを未使用のインポートであると考えています。unused-import一般的に警告を削除したくないので、この特定の行を無視することはできますか?

私は.pylintrcこのプロジェクトのために持っていることを気にしないので、設定ファイルを変更する答えは受け入れられます。

そうでなければ、このようなものも認められます:

import config.logging_settings # pylint: disable-this-line-in-some-way

回答:


227

PylintメッセージコントロールはPylintマニュアルに記載されています

特定のメッセージをローカルで無効にすることはできますか?

はい、この機能はPylint 0.11で追加されました。これは
# pylint: disable=some-message,another-one
、目的のブロックレベルまたは目的のコード行の最後に追加することで実行できます。

メッセージコードまたは記号名を使用できます。

例えば

def test():
    # Disable all the no-member violations in this function
    # pylint: disable=no-member
    ...
global VAR # pylint: disable=global-statement

マニュアルには、さらに例があります。

すべてのpylintメッセージとそのコードを文書化するwikiがあります。


以下のようなI flake8# noqa。私はコードにそれほど多くのコメントを見たくありません。# nolintさらに明確になります。
Nils Lindemann

61
import config.logging_settings # pylint: disable=W0611

これは単純で、その行に固有のものです。

sthenaultが親切に指摘したように、より読みやすい形式を使用できます。

import config.logging_settings # pylint: disable=unused-import

メッセージの明示的なシンボルはどこから入手しますか?私のリンター(スパイダーにいる人)はそれを報告せず、jomoの回答にリンクされているWikiもリストしません。
Joooeey

つまりunused-import?/申し訳ありません:私は覚えていないので、私はW0611を使用したときに、私のリンターが私に警告を与えたと思うが、そのき> 3yrs
Unfun猫

4

あなたが探しているのは...

import config.logging_settings  # @UnusedImport

コメントの前の二重スペースに注意して、他のフォーマットに関する警告が出ないようにしてください。

また、IDEを使用している場合(使用している場合)、おそらく正しい無視ルールを追加するオプションがあります(たとえばCtrl1、カーソルが警告上にあるときにEclipseを押すと、自動的に提案されます@UnusedImport


2
これは一部のIDEでは機能する可能性がありますが、では機能しませんでした emacs/flycheck。ありがとう。他の人の役に立つかもしれないので、答えは守ってください。
Unfun Cat 2015

これは、実行中pylintまたはflake8コマンドラインからは機能しません。
ジェイコブトムリンソン

@JacobTomlinson興味深い、ありがとう。これはPydevが受け入れるものであり、pyclipseが単純にpylintに砲撃されるという印象を受けました。少しカスタマイズする必要があるか、おそらくEclipseがそれらのディレクティブを処理して出力を抑制している必要があります。
基本的な

4

https://github.com/PyCQA/pylint/tree/master/pylint/checkersのファイルをチェックアウトします。メッセージからエラー名を取得する方法として、これらのファイルをCtrl + Fキーを押すか、Github検索機能を使用するよりも優れた方法はありません。

メッセージが「No name ... in module ...」の場合は、検索を使用します。

No name %r in module %r repo:PyCQA/pylint/tree/master path:/pylint/checkers

または、結果を減らすには:

"No name %r in module %r" repo:PyCQA/pylint/tree/master path:/pylint/checkers

Githubが表示します:

"E0611": (
    "No name %r in module %r",
    "no-name-in-module",
    "Used when a name cannot be found in a module.",

その後、次のことができます。

from collections import Sequence # pylint: disable=no-name-in-module

1
あなたはそれらすべてをドキュメント
Esteban

おかげで、それはソースを通過するよりもはるかに優れています。pylint docのミラーがさらに2つ見つかりました。どうやら、readthedocは公式のミラーです。もう1つはpylint.orgです
loxaxs
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.