2014-09-28 4 views
6

Ich benutze Pylint in einem Projekt und etwas stört mich.Pyint: Deaktiviere Warnung für Unterklasse

Zum Beispiel, ich erstelle einen Komponententest (Unterklasse von unittest.TestCase). Diese Elternklasse hat eine Menge Methoden, also sagt pylint "R0904: Zu viele öffentliche Methoden". Um diese Warnung zu "lösen", deaktiviere ich lokal diese Überprüfung.

Aber ich muss eine Menge Unit-Test schreiben und es stört mich, Localy diese Überprüfung jedes Mal zu deaktivieren.

Also ich suche nach einer Möglichkeit, diese Prüfung für alle Unterklasse von unittest.TestCase zu deaktivieren. In einer Pylint-Konfigurationsdatei kann sein, aber ich habe nichts gefunden.

Haben Sie eine Idee, das zu tun?

Vielen Dank für Ihre Hilfe.

+0

Hoffentlich gibt es eine einfachere Option, aber wenn nicht ... Sie können immer ein Plugin schreiben, dass Unterklassen (oder Monkeypatches, aber Unterklassen scheint hier sauberer) der Design-Checker. Ich würde es tun, indem ich eine neue Option "ignore-test-classes" hinzufüge und diese verwende, um die Prüfung "max-public-methods" für jede Klasse zu überspringen, die von einer der ignorierten Klassen erbt. (Der Code, der die 'Ignorieren-iface-Methoden' der Klassenüberprüfung handhabt, sollte ein gutes Modell sein.) In der Tat scheint es, als könnte es von allgemeinem Nutzen sein, dass Sie es wahrscheinlich upstream hochladen könnten, wenn Sie es tun. – abarnert

+2

Das bringt Sie nicht ganz dorthin, aber Sie können immer eine 'pylintrc' in ein Paket (dh jedes Verzeichnis mit einem '__init __.py') einfügen, wenn Sie also alle Ihre Tests in einem' tests'-Verzeichnis haben, Zum Beispiel können Sie es zumindest auf Projektbasis deaktivieren, auch wenn es nicht global ist. –

+0

Danke für Ihre Antwort. Abarnert, ich werde prüfen, wie man dafür ein Plugin erstellt. Mein Problem besteht nicht nur für die Unittest-Klasse. Zum Beispiel verwende ich sqlalchemy und für die Unterklasse von sqlalchemy.types.TypeDecorator. Ich werde versuchen, ein generisches Plugin zu schreiben, um eine Option hinzuzufügen wie disable-XXXX = unittest.TestCase, ..., ... –

Antwort

2

Sie können eine pylintrc Datei definieren und pylint damit ausführen. Sie können das folgendermaßen tun:

$ pylint --generate-rcfile > pylintrc 

Das generiert die Standardpylintrc-Datei. Dies sollte einen Absatz haben, der wie folgt aussieht:

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

Sie möchten die folgende Zeile nach diesem Absatz (aber innerhalb der Steuernachrichten Abschnitt):

disable=R0904 

oder:

disable=too-many-public-methods 

Sie müssen dann pylint mit dieser rcfile ausführen. Dies kann mit dem Argument --rcfile=<file> erfolgen.