2012-04-19 27 views
47

ビルドシステムでは、pylintを使用しています。私たちは、コードベースにPythonパッケージを用意しています。このコードでは、モジュールの警告をすべて一時的に無効にして、余分なメッセージを他の開発者に盗ませることはできません。 pylint: disableモジュールのすべての警告に簡単な方法はありますか? Pylint < 0.25でPyLint FAQファイルのすべての警告を無効にする

から

答えて

56

、モジュールの先頭で

# pylint: disable-all 

を追加します。

Pylint 0.26.1とまでは

# pylint: skip-file 

(ただし、下位互換性のために保持される最初のバージョン)にそのディレクティブの名前を変更しました。

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

+1

注:これにより、すべての警告と*すべてのエラー*が無効になります。 * only * warningsを無効にする方法を探しているなら、このページの私の答えを見てください。 – eatcrayons

5

もう1つの方法は、コマンドラインオプションを使用して、一部のファイルの解析をスキップすることです。

2

はい、# pylint: skip-fileと指定できますが、ファイルのすべての警告を無効にすることをお勧めします。投棄コードは、pylintによって分析される枝には存在してはなりません。

あなただけの特定の警告を無効にしたい場合は、このファイルの残りの部分のための指定されたメッセージを無効にするには、このような# pylint: disable=message-nameとしてコメントを追加することによって行わ、または少なくとも# pylint: enable=message-nameまですることができます。

例:

# pylint: disable=no-member 
class C123(object): 
    def __init__(self): 
     self.foo_x = self.bar_x 
# pylint: enable=no-member 

class C456(object): 
    def __init__(self): 
     self.foo_x = self.bar_x 
+0

このように 'disable = locally-disabled'のような特定の警告が無効になっていることを避けるために、pylintrcに追加することができます。 – ColonelFazackerley

+0

@ColonelFazackerleyはい、その時点であなたのプロジェクトに 'pylintrc'ファイルがあることは意味があります。例は[ここ](https://github.com/impredicative/pyskeleton/blob/master/pylintrc)です。 –

9

PyLintは(私は承知しているうち)five "categories" for messagesを持っています。

これらのカテゴリは非常に明白でしたが、番号の付いたPylintメッセージは名前に置き換えられました。たとえば、C0302too-many-linesです。しかし、 'C'は、too-many-linesのコンベンションであることを私に伝えています。多くのシステム(たとえば、Syntasticなど)は、すべてを警告またはエラーのいずれかとして分類しているように見えるため、メッセージはしばしば警告として表示されるため、これは混乱します。しかし、PyLintレポートではまだこれらのカテゴリに分類されているので、引き続きサポートされています。

あなたの質問は、具体的警告を指し、すべてのPyLint 警告メッセージ名は「W」で始まります。

これを追跡するのは少し難しかったが、this answerが最終的に私を答えに導いた。 PyLintはメッセージカテゴリ全体の無効化をサポートしています。だから、すべての警告を無効にするには、あなたがどうなる:

disable=W 

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

$ pylint --disable=W myfile.py 

それとも、あなたはpylintrcファイルにそれを置くことができます。

[MESSAGES CONTROL] 
disable=W 

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

それとも、あなたはそれが配置される範囲のために働くあなたのコード、インラインそれを置くことができます。

# pylint: disable=W 

ファイル全体のためにそれを無効にするには、それはでそれを置くのがベストですファイルの最上部。しかし、ファイルの一番上であっても、私はまだtrailing-newlinesという警告メッセージが表示されていました(技術的には警告警告ですが、私はそれに迫っています)。

私の場合、私はずっと前から誰かが書いたライブラリを持っていました。それはうまくいったので、現代のPythonのコンベンションなどを心配する必要は本当にありませんでした。私が本当に気にしたのは、私のコードを壊す可能性のあるエラーでした。

私のソリューションを無効にすることだった全ての警告条約、この1つのファイルのリファクタリングメッセージのみ最初の行に次のPyLintコマンドを配置することによって:別に

# pylint: disable=W,C,R 

前述の改行のメッセージで、これは私が必要としていたものとまったく同じでした。

0

私は、pylint *.pyを実行してディレクトリ内のすべてのファイルを処理することをお勧めしますが、特定のファイルをスキップしたい場合を除きます。

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

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

+0

もっと理想的には、コマンドオプションではなく 'pylintrc'設定ファイルに置きます。 –

関連する問題