2014-09-28 3 views
6

Я использую pylint в проекте, и что-то меня беспокоит.Pylint: отключить предупреждение для подкласса

Например, я создаю единичный тест (подкласс unittest.TestCase). Этот родительский класс имеет много методов, поэтому pylint говорит «R0904: Слишком много публичных методов». Чтобы «решить» это предупреждение, я отключу локально эту проверку.

Но мне нужно написать много модульного теста, и это мешает мне отключать локально эту проверку каждый раз.

Так что я ищу способ отключить эту проверку для всех подклассов unittest.TestCase. В файле конфигурации pylint может быть, но я ничего не нашел.

У вас есть идея сделать это?

Большое спасибо за помощь.

+0

Надеюсь, есть более простой вариант, но если нет ... вы всегда можете написать плагин, что подклассы (или обезьяньи патчи, но подклассы кажутся чище здесь). Я бы сделал это, добавив новую опцию 'ignore-test-classes' и использую ее, чтобы пропустить проверку' max-public-methods' для любого класса, который наследуется от любого из игнорируемых классов. (Код, который обрабатывает «ignore-iface-методы» класса check, должен быть хорошей моделью.) На самом деле это похоже на то, что он может быть достаточно общим, что вы, вероятно, можете отправить его вверх по течению, если вы это сделаете. – abarnert

+2

Не достает вас туда, но вы всегда можете отбросить 'pylintrc' в пакет (т.е. любой каталог с' __init __. Py' в нем), поэтому, если у вас есть все ваши тесты в одном каталоге 'tests', например, вы можете по крайней мере отключить его на основе проекта, даже если это не глобально. –

+0

Спасибо за ваш ответ. Abarnert, я буду проверять, как создать для этого плагин. Моя проблема не только для класса unittest. Например, я использую sqlalchemy и для подкласса sqlalchemy.types.TypeDecorator. Я попытаюсь написать общий плагин, чтобы добавить параметр, например disable-XXXX = unittest.TestCase, ..., ... –

ответ

2

Вы можете определить файл pylintrc и запустить pylint, используя это. Вы можете сделать это следующим образом:

$ pylint --generate-rcfile > pylintrc 

Это генерирует файл pylintrc по умолчанию. Это должно быть пункт, который выглядит как:

# Disable the message, report, category or checker with the given id(s). You 
# can either give multiple identifier separated by comma (,) or put this option 
# multiple time (only on the command line, not in the configuration file where 
# it should appear only once). 
#disable= 

Вы хотите добавить следующую строку после этого пункта (но в пределах СООБЩЕНИЙ CONTROL раздел):

disable=R0904 

или:

disable=too-many-public-methods 

Затем вам нужно запустить pylint с этим rcfile. Это можно сделать, используя аргумент --rcfile=<file>.

Смежные вопросы