Pylint meldet weiterhin den Fehler ( R: 73,0:MyLogging: Too many public methods (22/20)
) für den folgenden Code:
Zuerst dachte ich, es wäre ein Fehler in Pylint, da MyLogging
class genau 22 Zeilen Code hatte, aber als ich merkte, dass es alle öffentlichen Methoden von der Basisklasse logging.Logger
mit einschließt, was 20 zu der Statistiken.
Wissen Sie, ob es möglich ist, öffentliche Basisklassenmethoden aus der Pylint-Statistik auszuschließen?
PS. Ich bin mir bewusst, dass ich max-public-methods
zu höherer Zahl ändern kann, oder einmalige Ausnahme mit # pylint: disable=R0904
Es gibt Wege, aber keine davon ist gut.
Dies ist nicht konfigurierbar: Sie können den Code in pylint design_analysis.MisdesignChecker in def leave_class
:
Der obige Code iteriert einfach alle Methoden, die nicht mit "_" beginnen, und zählt sie als öffentliche Methoden.
Folglich sehe ich zwei Möglichkeiten, um das zu tun, was Sie tun möchten:
1) fork pylint und modifiziere diese Methode:
%Vor% method.parent
- der Klassenknoten, an dem diese Funktion definiert ist; Auch in Ihrer Funktion leave_class
haben Sie einen Parameter node
- was der Klassenknoten ist.
Vergleichen Sie sie können Sie verstehen, ob es die aktuelle Klasse ist oder nicht.
2) deaktiviere diese Regel in der pylint config und erstelle dein eigenes Plugin:
%Vor%Im Grunde ist diese Implementierung der leicht modifizierte Auszug aus design_analysis.MisdesignChecker aus dem pylint Quellcode.
Weitere Informationen zu Plug-ins: Ссылка und im pylint-Quellcode.
Es gibt derzeit keine Konfiguration in pylint, die es erlaubt, übergeordnete Methoden zu ignorieren. Sie können tun, was Romanl vorschlägt, indem Sie das Problem bestehen, bis das Problem, das ich für Ihre PB erstellt habe, stromaufwärts gelöst wird (http://www.logilab.org/ticket/116963)