Pylint вимкне всі попередження для файлу


86

Ми використовуємо pylint у нашій системі складання. У нашій базі коду є пакет python, який має викидний код, і я хотів би тимчасово відключити всі попередження для модуля, щоб я міг припинити помилки інших розробників цими зайвими повідомленнями. Чи є простий спосіб pylint: disableусіх попереджень для модуля?

Відповіді:


120

З Питання та відповіді про PyLint

Якщо Pylint <0,25, додайте

# pylint: disable-all

на початку модуля.

Pylint 0.26.1 та новіші змінили цю директиву на

# pylint: skip-file

(але перша версія буде збережена для зворотної сумісності).

Для того, щоб полегшити пошук, які модулі ігноруються, видається інформаційне повідомлення I0013. У останніх версіях Pylint, якщо ви використовуєте старий синтаксис, видається додаткове повідомлення I0014.


2
Примітка: це вимкне всі попередження та всі помилки . Якщо ви шукаєте спосіб вимкнути лише попередження, див. Мою відповідь на цій сторінці.
eatcrayons

31

PyLint має п'ять "категорій" для повідомлень (про що мені відомо).

Раніше ці категорії були дуже очевидними, але пронумеровані повідомлення Pylint тепер замінені іменами. Наприклад, C0302зараз too-many-lines. Але "С" говорить нам, що too-many-linesце повідомлення Конвенції . Це бентежить, оскільки повідомлення Конвенції часто просто відображаються як попередження, оскільки багато систем (наприклад, Syntastic ) класифікують все як попередження або помилку. Однак звіт PyLint все ще розбиває речі на ці категорії, тому він все одно безумовно підтримується.

Ваше запитання конкретно стосується Попереджень , і всі назви повідомлень PyLint Warning починаються з "W".

Мені було трохи важко простежити це, але ця відповідь врешті-решт привела мене до відповіді. PyLint все ще підтримує вимкнення цілих категорій повідомлень. Отже, щоб вимкнути всі попередження , потрібно зробити:

disable=W

Це можна використовувати в командному рядку:

$ pylint --disable=W myfile.py

Або ви можете помістити його у свій файл pylintrc:

[MESSAGES CONTROL]
disable=W

Примітка: можливо, ви вже маєте disableопцію у своєму файлі rc, і в цьому випадку вам слід додати 'W' до цього списку.

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

# pylint: disable=W

Щоб вимкнути його для цілого файлу, найкраще помістити його в самий верх файлу. Однак, навіть у самому верху файлу, я виявив, що все ще отримую trailing-newlinesпопереджувальне повідомлення (технічно попередження про конвенцію , але я до цього дістаюся).

У моєму випадку у мене була бібліотека, написана кимось давно. Це працювало добре, тому насправді не потрібно було турбуватися про сучасну конвенцію Python і т. Д. Все, що мені було дуже цікаво, - це помилки, які, ймовірно, можуть зламати мій код.

Моє рішення полягало в тому, щоб вимкнути всі повідомлення попередження , конвенції та рефакторингу для цього одного файлу, лише розмістивши таку команду PyLint у перший рядок:

# pylint: disable=W,C,R

Окрім вищезазначеного повідомлення про відстеження нових рядків, це зробило саме те, що мені потрібно.


15

Так, ви можете вказати # pylint: skip-fileу файлі, але поганою практикою є вимкнення всіх попереджень для файлу.

Якщо ви хочете відключити лише конкретні попередження, це можна зробити, додавши коментар, наприклад, # pylint: disable=message-nameщоб вимкнути вказане повідомлення для залишку файлу або принаймні до # pylint: enable=message-name.

Приклад:

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

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

Щоб уникнути повідомлення про те, що конкретне попередження було відключено, як це disable=locally-disabledможна додати до pylintrc.
Полковник Фазакерлі,

6

Інший варіант - використовувати параметр --ignoreкомандного рядка, щоб пропустити аналіз деяких файлів.


0

Моїм випадком використання є запуск pylint *.pyдля обробки всіх файлів у каталозі, за винятком того, що я хочу пропустити один конкретний файл.

Додавання #pylint: skip-fileпризвело до помилки пілінта I: 8, 0: Ignoring entire file (file-ignored). Додавання #pylint: disable=file-ignoredцього не виправляє. Імовірно, це глобальна помилка, а не специфічна для файлу.

Рішенням було включити --disable=file-ignoredдо параметрів команди pylint. Надто довго це було зрозуміло; не повинно бути file-ignoredпомилки, коли ви явно ігноруєте файл.


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