Як вимкнути попередження про відсутність документації на рівні файлу в Pylint?


94

Pylint видає помилки, що в деяких файлах відсутні документи. Я намагаюся додати рядки документації до кожного класу, методу та функції, але, схоже, Pylint також перевіряє, чи мають файли мати рядки документів на початку цього. Чи можу я це якось вимкнути? Я хотів би отримати повідомлення про відсутність документації у класі, функції або методі, але це не повинно бути обов'язковим для файлу, щоб мати документ-ланцюжок.

(Чи існує термін юридичного жаргону, який часто зустрічається на початку власного вихідного файлу? Будь-які приклади? Я не знаю, чи добре розміщувати таке тривіальне питання окремо.)

Відповіді:


106

Приємно, щоб модуль Python мав документ зі стрічками, пояснюючи, що робить модуль, що він надає, приклади використання класів. Це відрізняється від коментарів, які ви часто бачите на початку файлу з інформацією про авторське право та ліцензію, яких ІМО не повинно входити до документації (деякі навіть стверджують, що вони повинні взагалі зникнути, див., Наприклад, http: // hackerboss. com / позбутися шаблонів / )

За допомогою Pylint 2.4 та новіших версій ви можете розрізняти різні missing-docstringза допомогою трьох таких підповідомлень:

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

Отже, такий .pylintrcфайл повинен працювати:

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

У попередніх версіях Pylint він не має окремого коду для різних місць, де можуть виникати рядки документації, тому все, що ви можете зробити, - це вимкнути C0111. Проблема полягає в тому, що якщо ви вимкнете це в області модуля, то вона буде відключена скрізь в модулі (тобто ви не отримаєте жодного рядка C для відсутньої документації функції / класу / методу. Що, мабуть, неприємно.

Тож я пропоную додати цю маленьку відсутність документації, сказавши щось на зразок:

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

Досить скоро ви знайдете там корисні речі, наприклад, наведете приклади того, як використовувати різні класи / функції модуля, які не обов'язково належать до окремих документальних рядків класів / функцій (наприклад, як ці взаємодіяти або щось на зразок короткого посібника для початку).


9
+1 для легального (та іншого) зразка, який зникає з вихідного коду. До кожного компонента автомобіля не додаються юридичні повідомлення. Обов’язково створіть файл із юридичним текстом вашого проекту. Не вкладайте копії цього файлу в кожен файл.
Джонатан Хартлі,

22
-1 для рядків документа, які починаються "Це модуль foobar." Вже зрозуміло, що це за модуль. Повторне його відновлення зайве і схильне до застарівання, якщо модуль коли-небудь змінює назву. Просто включіть частину "Надає підтримку високого рівня для того і іншого".
Джонатан Хартлі,

@ Джонатан Хартлі: погодився. Відповідно оновив останню частину відповіді.
Герні Алекс

16
Невтішна відповідь. Спеціально для проектів Django. form.py "Це моделі ... ПРОСТО ВИШУВАЙТЕ! Це форми. Тому що, ви знаєте, файл називається forms.py. Це не Код Да Вінчі. Що ви думали, що тут буде?"
Серін

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

65

Пізно, але все-таки я знайшов це корисним. Тож ділимось. Знайшов це тут .

Ви можете додати прапорець "--errors-only" для pylint, щоб вимкнути попередження.

Для цього перейдіть у налаштування. Відредагуйте наступний рядок:

"python.linting.pylintArgs": []

Як

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

І вам добре їхати!


31
Це корисно, хоча "python.linting.pylintArgs": ["--disable=C0111"],, ймовірно, це більше, оскільки воно просто заспокоює попередження щодо документації. Однак налаштування вирішує питання OP, як вимкнути ці попередження лише на рівні модуля.
followben

Це кращий варіантg, оскільки ви дбаєте лише про помилку, як про відсутність класу, ... замість попередження рядка документа
Zerontelli

Так сумно, коли я бачу проект, який вдався до цього. pylint - настільки хороший інструмент для підтримання чистоти коду. Просто потрібно трохи любові.
Ерік Аронесті

9

Я думаю, виправлення є відносно простим без відключення цієї функції.

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

Все, що вам потрібно зробити, це додати потрійний рядок із подвійними лапками у кожну функцію.


Дякую. Я щойно виявив, що працюють навіть одинарні цитати
vikas027,

ну це все одно дратує, наприклад, якщо ви працюєте над проектом Django, він створить купу файлів модулів, і вам доведеться зайти в кожен з них, щоб це зробити. Краще відображати лише повідомлення про помилку, ніж попередження з "" - помилки -тільки "в налаштуваннях користувача pylint
Зеронтеллі

8

Я прийшов шукати відповіді, тому що, як сказав @cerin, у проектах Django громіздко і зайво додавати модульні теки до кожного з файлів, які django автоматично створює при створенні нової програми.

Отже, для вирішення того факту, що pylint не дозволяє вказати різницю у типах документації, ви можете зробити це:

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

Вам доведеться оновити шаблон msg, щоб при grep ви все одно знали ім'я файлу. Це повертає всі інші типи відсутніх документів, виключаючи модулі.

Потім ви можете виправити всі ці помилки, а потім просто запустити:

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

7

Ні. На даний момент Pylint не дозволяє вам розрізняти попередження щодо рядків документів.

Однак ви можете використовувати flake8 для всієї перевірки коду python разом із розширенням doc-string, щоб ігнорувати це попередження.

Встановіть розширення doc-string за допомогою pip (внутрішньо, воно використовує pydocstyle ).

pip install flake8_docstrings

Тоді ви можете просто використовувати --ignore D100перемикач. Наприкладflake8 file.py --ignore D100


5

За допомогою Pylint 2.4 та новіших версій ви можете розрізняти різні missing-docstringза допомогою трьох таких підповідомлень:

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

Отже, такий .pylintrcфайл повинен працювати:

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

що врятувало моє психічне здоров'я
Цагана Нохаєва

5

Просто поставте наступні рядки на початку будь-якого файлу, для якого ви хочете відключити ці попередження.

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

1
Якщо ви хочете відключити все, що вам просто потрібно вимкнути missing-docstring(працює для версії до 2.4.0).
П’єр Сасулас

5

Відредагуйте "C: \ Users \ Your User \ 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) Потім введіть і натисніть> налаштування: налаштуйте мовні параметри (3), а потім введіть python після цього за кодом

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

}


0

У моєму випадку, з pylint 2.6.0, відсутні повідомлення будуть рядок документації не зникне, навіть після того, як явно відключити missing-module-docstring, missing-class-docstringі missing-function-docstringв моєму .pylintrcфайлі. Нарешті, у мене працювала наступна конфігурація:

[MESSAGES CONTROL]

disable=missing-docstring,empty-docstring

Очевидно, pylint 2.6.0 все ще перевіряє документи, якщо обидві перевірки не вимкнені.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.