Bagaimana cara menonaktifkan peringatan "docstring yang hilang" pada level file di Pylint?

94

Pylint memberikan kesalahan bahwa beberapa file kehilangan docstring. Saya mencoba dan menambahkan docstrings ke setiap kelas, metode, dan fungsi tetapi tampaknya Pylint juga memeriksa bahwa file harus menjadi docstring pada awalnya. Bisakah saya menonaktifkan ini? Saya ingin diberi tahu bahwa ada docstring yang hilang di dalam kelas, fungsi, atau metode, tetapi seharusnya tidak wajib bagi file untuk memiliki docstring.

(Apakah ada istilah jargon hukum yang sering ditemukan di awal file sumber berpemilik? Ada contoh? Saya tidak tahu apakah boleh memposting pertanyaan sepele seperti itu secara terpisah.)

Mridang Agarwalla
sumber

Jawaban:

106

Sangat bagus untuk modul Python memiliki sebuah docstring, menjelaskan apa yang modul itu lakukan, apa yang disediakannya, contoh bagaimana menggunakan kelas. Ini berbeda dengan komentar yang sering Anda lihat di awal file yang memberikan informasi hak cipta dan lisensi, yang tidak boleh dimasukkan IMO di docstring (beberapa bahkan berpendapat bahwa komentar itu harus hilang sama sekali, lihat mis. Http: // hackerboss. com / get-rid-of-templates / )

Dengan pylint 2.4 dan yang lebih baru, Anda dapat membedakan berbagai macam pesan missing-docstringdengan menggunakan tiga sub-pesan berikut:

  • C0114( missing-module-docstring)
  • C0115( missing-class-docstring)
  • C0116( missing-function-docstring)

Jadi .pylintrcfile berikut harus berfungsi:

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

Untuk versi Pylint sebelumnya, ia tidak memiliki kode terpisah untuk berbagai tempat di mana docstrings dapat muncul, jadi yang dapat Anda lakukan hanyalah menonaktifkan C0111. Masalahnya adalah jika Anda menonaktifkan ini di modul scope, maka itu akan dinonaktifkan di mana saja dalam modul (yaitu Anda tidak akan mendapatkan baris C apapun karena fungsi / kelas / metode docstring hilang. Yang bisa dibilang tidak bagus.

Jadi yang saya sarankan adalah menambahkan docstring kecil yang hilang itu, mengatakan sesuatu seperti:

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

Segera, Anda akan menemukan hal-hal yang berguna untuk dimasukkan ke sana, seperti memberikan contoh bagaimana menggunakan berbagai kelas / fungsi modul yang tidak harus dimiliki oleh masing-masing docstring kelas / fungsi (seperti bagaimana ini berinteraksi, atau sesuatu seperti panduan memulai cepat).

brankar alex
sumber
9
1 untuk boilerplate legal (dan lainnya) yang menghilang dari kode sumber. Setiap komponen mobil tidak memiliki pemberitahuan resmi. Dengan segala cara, buat file dengan teks hukum proyek Anda di dalamnya. Jangan letakkan salinannya di setiap file.
Jonathan Hartley
22
-1 untuk docstring yang memulai "This is module foobar." Modul ini sudah terbukti dengan sendirinya. Mengulanginya adalah mubazir dan cenderung kedaluwarsa jika modul berubah nama. Cukup sertakan bagian "Memberikan dukungan tingkat tinggi untuk ini dan itu".
Jonathan Hartley
@JonathanHartley: setuju. Saya memperbarui bagian terakhir dari jawaban yang sesuai.
brankar alex
16
Jawaban yang mengecewakan. Khusus untuk proyek Django. forms.py "Ini adalah model ... HANYA BERCANDA! Itu adalah formulir. Karena, Anda tahu, file tersebut bernama forms.py. Ini bukan The Da Vinci Code. Menurut Anda, apa yang akan ada di sini?"
Cerin
10
$ cat my_module/test/__init__.py "Hey, PyLint? SHUT UP"
clacke
65

Sudah terlambat, tapi tetap saja ini berguna. Jadi berbagi. Temukan ini di sini .

Anda dapat menambahkan tanda "--errors-only" pada pylint untuk menonaktifkan peringatan.

Untuk melakukan ini, buka pengaturan. Edit baris berikut:

"python.linting.pylintArgs": []

Sebagai

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

Dan Anda siap berangkat!

Nilesh Kevlani
sumber
31
Ini berguna, meskipun "python.linting.pylintArgs": ["--disable=C0111"],mungkin lebih karena itu hanya menenangkan peringatan docstring. Namun pengaturan membahas pertanyaan OP tentang bagaimana menonaktifkan peringatan ini hanya pada tingkat modul.
followben
Ini adalah opsi yang lebih baik karena Anda hanya peduli tentang kesalahan seperti kelas yang hilang, ... daripada peringatan string dokumen
Zerontelli
Sangat menyedihkan ketika saya melihat proyek yang menggunakan cara ini. pylint adalah alat yang bagus untuk menjaga kode tetap bersih. Itu hanya membutuhkan cinta.
Erik Aronesty
9

Saya pikir perbaikannya relatif mudah tanpa menonaktifkan fitur ini.

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

Yang perlu Anda lakukan adalah menambahkan string tanda kutip ganda rangkap tiga di setiap fungsi.

Carlos E Rodriguez
sumber
Terima kasih. Saya baru saja menemukan bahwa bahkan tanda kutip tunggal berfungsi
vikas027
baik itu masih mengganggu misalnya jika Anda mengerjakan proyek Django itu akan membuat banyak berkas modul dan Anda harus masuk ke masing-masing berkas untuk melakukannya. Lebih baik hanya menampilkan pesan kesalahan daripada memperingatkan dengan "" - kesalahan -hanya "dalam pengaturan pengguna pylint
Zerontelli
8

Saya datang mencari jawaban karena, seperti yang dikatakan @cerin, dalam proyek Django adalah merepotkan dan mubazir untuk menambahkan modul docstrings ke setiap berkas yang secara otomatis dihasilkan oleh django ketika membuat aplikasi baru.

Jadi, sebagai solusi untuk fakta bahwa pylint tidak memungkinkan Anda menentukan perbedaan dalam jenis docstring, Anda dapat melakukan ini:

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

Anda harus mengupdate template-msg sehingga ketika Anda grep Anda masih tahu nama file-nya. Ini mengembalikan semua jenis docstring yang hilang lainnya tidak termasuk modul.

Kemudian Anda dapat memperbaiki semua kesalahan itu, dan setelah itu jalankan saja:

pylint */*.py --disable=missing-docstring
mattsl
sumber
7

Tidak. Pylint saat ini tidak mengizinkan Anda membedakan antara peringatan doc-string.

Namun, Anda dapat menggunakan flake8 untuk semua pemeriksaan kode python bersama dengan ekstensi doc-string untuk mengabaikan peringatan ini.

Instal ekstensi doc-string dengan pip (Secara internal, Ini menggunakan pydocstyle ).

pip install flake8_docstrings

Anda kemudian dapat menggunakan --ignore D100sakelar. Sebagai contohflake8 file.py --ignore D100

henryJack
sumber
5

Dengan pylint 2.4 dan yang lebih baru, Anda dapat membedakan berbagai macam pesan missing-docstringdengan menggunakan tiga sub-pesan berikut:

  • C0114( missing-module-docstring)
  • C0115( missing-class-docstring)
  • C0116( missing-function-docstring)

Jadi .pylintrcfile berikut harus berfungsi:

[MASTER]
disable=
    C0114, # missing-module-docstring
Pierre.Sassoulas
sumber
yang menyelamatkan kesehatan mental saya
Tsagana Nokhaeva
5

Letakkan saja baris berikut di awal file apa pun yang ingin Anda nonaktifkan peringatan ini.

# pylint: disable=missing-module-docstring
# pylint: disable=missing-class-docstring
# pylint: disable=missing-function-docstring
Keven Li
sumber
1
Jika Anda ingin menonaktifkan semuanya, Anda hanya perlu menonaktifkannya missing-docstring(berfungsi untuk versi sebelum 2.4.0).
Pierre.Sassoulas
5

Edit "C: \ Users \ Your User \ AppData \ Roaming \ Code \ User \ settings.json" dan tambahkan python.linting.pylintArgsbaris ini di akhir seperti yang ditunjukkan di bawah ini:

{
    "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"
    ],
}
aarw76
sumber
1

(1) CTRL + SHIFT + P (2) Kemudian ketik dan klik> preferensi: konfigurasikan pengaturan khusus bahasa (3) lalu ketik python setelah itu melewati kode

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

}
Mohamed Atef
sumber
0

Buka "settings.json" dan nonaktifkan python pydocstyle

"python.linting.pydocstyleEnabled": false
Mohammed Hrima
sumber
0

Dalam kasus saya, dengan pylint 2.6.0, pesan docstring yang hilang tidak akan hilang, bahkan setelah dinonaktifkan secara eksplisit missing-module-docstring, missing-class-docstringdan missing-function-docstringdi .pylintrcfile saya . Akhirnya, konfigurasi berikut berhasil untuk saya:

[MESSAGES CONTROL]

disable=missing-docstring,empty-docstring

Rupanya, pylint 2.6.0 masih memvalidasi docstrings kecuali kedua pemeriksaan tersebut dinonaktifkan.

Ernesto Elsäßer
sumber