2014-09-28 13 views
6

Używam pylint w projekcie i coś mi przeszkadza.Pylint: wyłącz ostrzeżenie dla podklasy

Na przykład tworzę test jednostkowy (podklasa unittest.TestCase). Ta klasa nadrzędna ma wiele metod, więc pylint mówi "R0904: Zbyt wiele publicznych metod". Aby "rozwiązać" to ostrzeżenie, wyłączam tę kontrolę lokalnie.

Ale muszę napisać wiele testów jednostkowych i przeszkadza mi to, że za każdym razem wyłączam kontrolę lokalną.

Poszukuję sposobu wyłączenia tej kontroli dla wszystkich podklas jednostek unittest.TestCase. W pliku konfiguracyjnym pylint może być, ale niczego nie znalazłem.

Masz jakiś pomysł, aby to zrobić?

Bardzo dziękuję za pomoc.

+0

Mam nadzieję, że istnieje prostsza opcja, ale jeśli nie ... zawsze możesz napisać wtyczkę, która podklasuje (lub małymi podróbkami, ale podklasy wydają się tu czystsze). Zrobiłbym to, dodając nową opcję 'ignore-test-classes' i używaj jej do pominięcia sprawdzenia' max-public-methods' dla dowolnej klasy, która dziedziczy z dowolnej z ignorowanych klas. (Kod, który obsługuje "ignore-iface-methods" modułu sprawdzania klasy "powinien być dobrym modelem.) W rzeczywistości wygląda na to, że może być wystarczająco powszechny, abyś mógł go przesłać dalej, jeśli to zrobisz. – abarnert

+2

Nie dość, że się tam dostaniesz, ale zawsze możesz umieścić 'pylintrc' w paczce (tzn. W dowolnym katalogu z' __init __. Py'), więc jeśli masz wszystkie testy w jednym katalogu 'tests', na przykład możesz przynajmniej wyłączyć to na podstawie projektu, nawet jeśli nie globalnie. –

+0

Dzięki za odpowiedź. Abarnert, sprawdzę, jak stworzyć wtyczkę do tego. Mój problem dotyczy nie tylko klasy najbardziej zależnej. Na przykład używam sqlalchemy i podklasy sqlalchemy.types.TypeDecorator. Spróbuję napisać ogólną wtyczkę, aby dodać opcję, taką jak disable-XXXX = unittest.TestCase, ..., ... –

Odpowiedz

2

Możesz zdefiniować plik pylintrc i uruchomić pylint za pomocą tego. Możesz to zrobić w następujący sposób:

$ pylint --generate-rcfile > pylintrc 

Generuje to domyślny plik pylintrc. Powinno to mieć paragraf, który wygląda tak:

# 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= 

Chcesz dodać następującą linię po tym ustępie (lecz w komunikatów sterujących sekcji):

disable=R0904 

czyli

disable=too-many-public-methods 

Następnie należy uruchomić pylint z tym plikiem rc. Można to zrobić za pomocą argumentu --rcfile=<file>.

Powiązane problemy