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.