2015-06-07 12 views
5

Ich verwende SublimePythonIDE, die Pyflakes verwendet. Es gibt einige Fehler, die Ich mag würde es so ignorieren:Wie lassen sich Pyflakes einige Fehler ignorieren?

(E501) line too long 
(E101) indentation contains mixed spaces and tabs 

was ist der einfachste Weg, das zu tun?

+1

Der einfachste Weg ist es, diese Fehler zu vermeiden. – ZdaR

+0

@ZdaR Ich mag lange Linien – user3571278

+5

Do ** nicht ** ignorieren 'E101', wie Sie fast sicher Fehler bekommen, wenn Sie versuchen, Ihren Code auszuführen. [PEP-8] (https://www.python.org/dev/peps/pep-0008/#indentation) empfiehlt dringend 4 Leerzeichen zu verwenden. – MattDMo

Antwort

7

fast immer ein Plugin in Sublime Konfiguration verwendet das gleiche Verfahren: Klicken Sie auf Preferences -> Package Settings -> Plugin Name -> Settings-Default um die (Überraschungsüberraschung) Standardeinstellungen zu öffnen. Diese Datei enthält im Allgemeinen alle möglichen Einstellungen für das Plugin, normalerweise zusammen mit Kommentaren, die erklären, was jeder tut. Diese Datei kann nicht geändert werden, um die von Ihnen geöffneten Einstellungen anzupassen Preferences -> Package Settings -> Plugin Name -> Settings-User. Normalerweise kopiere ich den gesamten Inhalt der Standardeinstellungen in die Benutzerdatei, passe sie dann wie gewünscht an, speichere und schließe.

Im Fall dieser speziellen Plugin, während es pyflakes nicht verwendet (wie beschrieben), es macht auch Gebrauch von pep8, ein Stil-Checker, die ich in den Kommentaren erwähnte Verwendung des gleichen PEP-8 offiziellen Python Style Guide machen. Dieses Wissen ist nützlich, da pyflakes keine spezifischen Fehlercodes verwendet, während pep8 dies tut.

So, nach Prüfung der Einstellungsdatei des Plugins, finden wir eine "pep8_ignore" Option sowie eine "pyflakes_ignore" eins. Da die error codes von pep8 kommen, werden wir diese Einstellung verwenden:

"pep8_ignore": [ "E501", // line too long 
       "E303", // too many blank lines (3) 
       "E402" // module level import not at top of file 
       ] 

Bitte beachten Sie, dass Codes E121, E123, E126, E133, E226, E241, E242 und E704 standardmäßig ignoriert werden, weil sie nicht sind Regeln werden einstimmig angenommen, und PEP 8 setzt sie nicht durch.


In Bezug auf langen Linien:

Manchmal sind lange Leitungen unvermeidbar. PEP-8s recommendation Zeilen mit 79 Zeichen basieren auf der alten Geschichte, als Terminal-Monitore nur 80 Zeichen große Bildschirme hatten, aber bis heute gibt es mehrere Gründe: Es ist abwärtskompatibel mit altem Code, mit dem einige Geräte noch benutzt werden Diese Einschränkungen, es sieht gut aus, es macht es auf breiteren Displays einfacher, mehrere Dateien nebeneinander geöffnet zu haben, und es ist lesbar (etwas, das Sie beim Codieren immer im Auge behalten sollten). Wenn Sie eine Begrenzung von 90 oder 100 Zeichen bevorzugen, ist das in Ordnung (wenn Ihr Team/Projekt damit einverstanden ist), aber verwenden Sie es konsistent und beachten Sie, dass andere möglicherweise andere Werte verwenden.Wenn Sie pep8 auf einen größeren Wert als den Standardwert 80 setzen möchten, ändern Sie einfach die Einstellung "pep8_max_line_length".

Es gibt viele Möglichkeiten, die Zeichenanzahl von Zeilen zu verringern, um innerhalb des Limits zu bleiben, oder lange Zeilen in mehrere kürzere aufzuteilen. Im Fall von Ihrem Beispiel in den Kommentaren:

flag, message = FacebookUserController.AddFBUserToDB(iOSUserId, fburl, fbsecret, code) 

können Sie ein paar Dinge tun:

# shorten the module/class name 
fbuc = FacebookUserController 
# or 
import FacebookUserController as fbuc 
flag, message = fbuc.AddFBUserToDB(iOSUserId, fburl, fbsecret, code) 
# or eliminate it all together 
from FacebookUserController import AddFBUserToDB 
flag, message = AddFBUserToDB(iOSUserId, fburl, fbsecret, code) 
# split the function's arguments onto separate lines 
flag, message = FacebookUserController.AddFBUserToDB(iOSUserId, 
                fburl, 
                fbsecret, 
                code) 
# There are multiple ways of doing this, just make sure the subsequent 
# line(s) are indented. You don't need to escape newlines inside of 
# braces, brackets, and parentheses, but you do need to outside of them. 
1

Wie andere vorschlagen, möglicherweise die Warnungen beachten. Aber in diesen Fällen können Sie nicht # NOQA zu den endverletzenden Linien hinzufügen. Beachten Sie die zwei Leerzeichen vor dem #, da das auch eine Stilsache ist, über die man sich beschweren wird.

Und wenn pyflakes in flocke8 verpackt ist, kann durch spezifische Fehler ignoriert werden.

Zum Beispiel in einer Datei im Projekt tox.ini setzen oder hinzufügen:

[flake8] 
exclude = .tox,./build 
filename = *.py 
ignore = E501,E101 

Dies ist möglicherweise ein Duplikat mit How do I get Pyflakes to ignore a statement?