Pylintのファイルレベルで「docstringがありません」という警告を無効にするにはどうすればよいですか?


99

Pylintは、一部のファイルにdocstringがないというエラーをスローします。各クラス、メソッド、関数にdocstringを追加しようとしていますが、Pylintは、ファイルの先頭にdocstringが必要かどうかもチェックしているようです。どういうわけかこれを無効にできますか?クラス、関数、またはメソッド内にdocstringがないことを通知したいのですが、ファイルにdocstringが含まれている必要はありません。

(プロプライエタリソースファイルの冒頭によく見られる専門用語はありますか?例はありますか?そのような些細な質問を個別に投稿してもよいかどうかはわかりません。)

回答:


111

Pythonモジュールには、モジュールの機能、提供内容、クラスの使用方法の例を説明するdocstringがあると便利です。これは、著作権とライセンス情報を提供するファイルの冒頭によく見られるコメントとは異なります。IMOは、これらのコメントをdocstringに含めるべきではありません(http:// hackerbossなどを参照してください。 com / get-rid-of-templates /

pylint 2.4missing-docstring以降では、次の3つのサブメッセージを使用してさまざまなものを区別できます。

  • C0114missing-module-docstring
  • C0115missing-class-docstring
  • C0116missing-function-docstring

したがって、次の.pylintrcファイルが機能するはずです。

[MASTER]
disable=
    C0114, # missing-module-docstring

以前のバージョンのPylintには、docstringが発生する可能性のあるさまざまな場所用の個別のコードがないため、C0111を無効にするだけです。問題は、モジュールスコープでこれを無効にすると、モジュール内のすべての場所で無効になることです(つまり、関数/クラス/メソッドdocstringが欠落しているためにC行が取得されません。これはおそらく良くありません。

したがって、私が提案するのは、次のような小さな欠落したdocstringを追加することです。

"""
high level support for doing this and that.
"""

すぐに、クラス/関数の個々のdocstringに必ずしも属していないモジュールのさまざまなクラス/関数の使用方法の例を提供するなど、そこに入れるのに役立つものが見つかります(これらの方法など)相互作用、またはクイックスタートガイドのようなもの)。


9
正当な(およびその他の)定型文がソースコードから消えた場合は+1。車のすべてのコンポーネントに法的通知が添付されているわけではありません。ぜひ、プロジェクトの法定テキストを含むファイルを作成してください。そのコピーをすべてのファイルに入れないでください。
Jonathan Hartley

22
「これはモジュールfoobarです」で始まるdocstringの場合は-1。このモジュールが何であるかはすでに自明です。モジュールの名前が変更されると、冗長であり、古くなる傾向があります。「これとあれに高レベルのサポートを提供する」の部分を含めるだけです。
Jonathan Hartley

@JonathanHartley:同意しました。それに応じて回答の最後の部分を更新しました。
gurney alex 2012

16
残念な答え。特にDjangoプロジェクトの場合。forms.py「これらはモデルです...ただの冗談です!フォームです。ファイルの名前はforms.pyであるためです。これは、ダヴィンチコードではありません。ここには何があると思いましたか?」
セリン

12
$ cat my_module/test/__init__.py "Hey, PyLint? SHUT UP"
clacke

66

遅いですが、それでも便利だと思いました。だから共有。ここでこれを見つけまし

pylintに「--errors-only」フラグを追加して、警告を無効にすることができます。

これを行うには、設定に移動します。次の行を編集します。

"python.linting.pylintArgs": []

なので

"python.linting.pylintArgs": ["--errors-only"]

そして、あなたは行ってもいいです!


32
"python.linting.pylintArgs": ["--disable=C0111"],docstringの警告を静めるだけなので、おそらくもっと便利です。ただし、設定は、モジュールレベルでのみこれらの警告を無効にする方法に関するOPの質問に対処します。
followben 2018

これは、クラスの欠落などのエラーのみを気にするため、より適切なオプションです...ドキュメント文字列の警告の代わりに
Zerontelli 2018

これに頼っているプロジェクトを見るととても悲しいです。pylintは、コードをクリーンに保つための優れたツールです。愛が必要です。
ErikAronesty19年

9

この機能を無効にしなくても、修正は比較的簡単だと思います。

def kos_root():
    """Return the pathname of the KOS root directory."""
    global _kos_root
    if _kos_root: return _kos_root

あなたがする必要があるのは、すべての関数にトリプル二重引用符文字列を追加することです。


ありがとう。一重引用符でも機能することがわかりました
vikas027 2017

たとえば、Djangoプロジェクトで作業している場合は、モジュールファイルが大量に作成されるため、それぞれにアクセスする必要があります。「」で警告するよりも、エラーメッセージのみを表示する方がよいでしょう。 pylintユーザー設定の「-only」
Zerontelli 2018

8

@cerinが言ったように、Djangoプロジェクトでは、新しいアプリを作成するときにdjangoが自動的に生成するすべてのファイルにモジュールdocstringを追加するのは面倒で冗長なので、答えを探しに来ました。

したがって、pylintではdocstringタイプの違いを指定できないという事実の回避策として、次のようにすることができます。

pylint */*.py --msg-template='{path}: {C}:{line:3d},{column:2d}: {msg}' | grep docstring | grep -v module

grepを実行してもファイル名がわかるように、msg-templateを更新する必要があります。これにより、モジュールを除く他のすべての欠落したdocstringタイプが返されます。

次に、これらのエラーをすべて修正し、その後、次のコマンドを実行するだけです。

pylint */*.py --disable=missing-docstring

7

いいえ。現在、Pylintではドキュメント文字列の警告を区別できません。

ただし、この警告を無視するために、doc-string拡張子とともにすべてのPythonコードチェックにflake8を使用できます。

doc-string拡張機能をpipでインストールします(内部的には、pydocstyleを使用します)。

pip install flake8_docstrings

その後、--ignore D100スイッチを使用できます。例えばflake8 file.py --ignore D100


7

これらの警告を無効にするファイルの先頭に次の行を配置するだけです。

# pylint: disable=missing-module-docstring
# pylint: disable=missing-class-docstring
# pylint: disable=missing-function-docstring

1
すべてを無効にしたい場合は、無効にする必要がありますmissing-docstring(2.4.0より前のバージョンで機能します)。
Pierre.Sassoulas

6

pylint 2.4missing-docstring以降では、次の3つのサブメッセージを使用してさまざまなものを区別できます。

  • C0114missing-module-docstring
  • C0115missing-class-docstring
  • C0116missing-function-docstring

したがって、次の.pylintrcファイルが機能するはずです。

[MASTER]
disable=
    C0114, # missing-module-docstring

それは私の精神的健康を救った
TsaganaNokhaeva19年

5

「C:\ Users \ YourUser \ AppData \ Roaming \ Code \ User \ settings.json」を編集python.linting.pylintArgsし、以下に示すように最後にこれらの行を追加します。

{
    "team.showWelcomeMessage": false,
    "python.dataScience.sendSelectionToInteractiveWindow": true,
    "git.enableSmartCommit": true,
    "powershell.codeFormatting.useCorrectCasing": true,
    "files.autoSave": "onWindowChange",
    "python.linting.pylintArgs": [
        "--load-plugins=pylint_django",
        "--errors-only"
    ],
}

1

(1)CTRL + SHIFT + P(2)次に、> Preferences:configure language固有の設定を入力してクリックします(3)その後、コードを過ぎてpythonと入力します

{
"python.linting.pylintArgs": [
    "--load-plugins=pylint_django","--errors-only"
],

}

1

私の場合は、pylint 2.6.0で、不足しているドキュメンテーション文字列のメッセージは、消えた後でも、明示的に無効にしないだろうmissing-module-docstringmissing-class-docstringmissing-function-docstring私の中.pylintrcのファイル。最後に、次の構成が機能しました。

[MESSAGES CONTROL]

disable=missing-docstring,empty-docstring

どうやら、両方のチェックが無効にされていない限り、pylint2.6.0はまだdocstringを検証します。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.