2009-04-02 11 views
9

Ich versuche pylint, um meinen Quellcode für Konventionen zu überprüfen. Irgendwie werden einige Variablennamen mit der Regex für Konstanten (const-rgx) anstelle des Variablennamens regex (variable-rgx) abgeglichen. Wie wird der Variablenname mit variable-rgx abgeglichen? Oder sollte ich const-rgx mit meinem variable-rgx Zeug erweitern?Python-Code-Konvention mit pylint

z.B.
C0103: 31: Invalid name "settings" (should match (([A-Z_][A-Z1-9_]*)|(__.*__))$)

Antwort

27

Irgendwie werden einige Variablennamen mit der Regex für Konstanten (const-rgx) anstelle des Variablennamens regex (variable-rgx) abgeglichen.

Sind diese Variablen auf Modulebene deklariert? Vielleicht werden sie deshalb als Konstanten behandelt (so sollten sie laut PEP-8 zumindest deklariert sein).

+1

+1 für die Beantwortung der eigentlichen Frage, d. H. Welche Regex verwendet wird, nicht die eigentliche Regex. – DNS

+0

Sie sind tatsächlich auf Modulebene deklariert! –

+3

Die ärgerlichste Warnung kommt, wenn diese Überprüfung im'if __name__ == '__main __' Block erscheint, aber es ist korrekt, da alle Variablen dort noch auf der Modulebene sind. Der einfachste Weg, das Problem zu lösen, besteht darin, nur eine separate Hauptfunktion (...) aufzurufen – van

10

Ich deaktiviere nur diese Warnung, weil ich diese Namenskonventionen nicht befolge.

, das zu tun, fügen Sie diese Zeile nach oben von Ihnen Modul:

# pylint: disable-msg=C0103 

Wenn Sie, dass global deaktivieren möchten, fügen Sie es dann an den Pylint Befehl:

python lint.py --disable-msg=C0103 ... 
0

(should match (([A-Z_][A-Z1-9_]*)|(__.*__))$) 

Wie Sie sagten, das ist die Const-rgx, die nur mit GROßBRITANNISCHEN Namen oder mit doppelten Unterstrichen umgebenen Namen übereinstimmt.

die Variablen-rgx ist

([a-z_][a-z0-9_]{2,30}$)

wenn Ihre Variable ‚Einstellungen‘ aufgerufen wird, die in der Tat die Variablen-rgx

entsprechen sollte ich nur zwei Gründe dafür denken kann .. entweder Einstellungen ist eine Konstante oder es ist ein Fehler in PyLint.