2015-06-07 15 views
5

Używam SublimePythonIDE, który używa pyflakes. Istnieją pewne błędy, które chciałbym go ignorować jak:Jak pozwolić pyflakes zignorować niektóre błędy?

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

co jest najprostszym sposobem, aby to zrobić?

+1

Najłatwiej jest, aby uniknąć tych błędów. – ZdaR

+0

@ZdaR Lubię długie linie – user3571278

+5

Do ** not ** ignoruj ​​'E101', ponieważ prawie na pewno otrzymasz błędy podczas próby uruchomienia kodu. [PEP-8] (https://www.python.org/dev/peps/pep-0008/#indentation) zdecydowanie zaleca użycie 4 spacji. – MattDMo

Odpowiedz

7

Konfiguracja wtyczki w Sublime prawie zawsze stosuje tę samą procedurę: Kliknij Preferences -> Package Settings -> Plugin Name -> Settings-Default, aby otworzyć domyślne ustawienia (niespodzianka niespodzianka). Ten plik zawiera zazwyczaj wszystkie możliwe ustawienia wtyczki, zwykle wraz z komentarzami wyjaśniającymi, co każdy z nich robi. Tego pliku nie można zmodyfikować, aby dostosować wszelkie ustawienia, które otworzysz: Preferences -> Package Settings -> Plugin Name -> Settings-User. Zwykle kopiuję całą zawartość domyślnych ustawień do pliku użytkownika, następnie dostosowuję według uznania, a następnie zapisuję i zamykam.

W przypadku tej konkretnej wtyczki, podczas gdy używa pyflakes (jak w reklamie), ale również sprawia, że ​​korzystanie z pep8, rejestratora styl sprawia, że ​​korzystanie z tego samego przewodnika PEP-8 oficjalnym stylu Python wspominałem w komentarzach. Ta wiedza jest przydatna, ponieważ pyflakes nie korzysta z określonych kodów błędów, podczas gdy pep8 robi.

Po sprawdzeniu pliku ustawień wtyczki znajduje się opcja "pep8_ignore" oraz "pyflakes_ignore". Ponieważ error codes pochodzą pep8 użyjemy tego ustawienia:

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

Należy pamiętać, że kody E121, E123, E126, E133, E226, E241, E242, E704 i są ignorowane przez domyślnie, ponieważ nie są one zasady przyjęte jednogłośnie, a PEP 8 ich nie egzekwuje.


Odnośnie długie linie:

Czasami długie linie są nieuniknione. PEP-8's linii 79-znakowych opiera się na historii starożytnej, kiedy monitory terminalowe miały tylko 80 ekranów o szerokości znaków, ale trwa to do dzisiaj z kilku powodów: jest kompatybilna wstecz ze starym kodem, niektóre urządzenia wciąż są używane z te ograniczenia wyglądają dobrze, dzięki czemu na szerszych ekranach łatwiej jest otwierać wiele plików obok siebie i można je odczytać (o czym zawsze należy pamiętać przy kodowaniu). Jeśli wolisz mieć limit 90 lub 100 znaków, to dobrze (jeśli twój zespół/projekt zgadza się z tym), ale używaj go konsekwentnie i bądź świadomy, że inni mogą używać różnych wartości.Jeśli chcesz ustawić wartość pep8 na wartość większą niż domyślna 80, po prostu zmodyfikuj ustawienie "pep8_max_line_length".

Istnieje wiele sposobów na zmniejszenie liczby znaków linii, aby pozostać w limicie, lub podzielenie długich linii na wiele krótszych. W przypadku Twojego przykład w komentarzach:

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

można zrobić kilka rzeczy:

# 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

Jak sugerują inni, być może zważaj na ostrzeżenia. Ale w tych przypadkach nie możesz dodać # NOQA do końca obrażających linii. Zwróć uwagę na dwie spacje przed wersją #, ponieważ również jest to styl, na który będą narzekać.

A jeśli pyflakes jest zawijany w flake8, który pozwala ignorować określone błędy.

Na przykład w pliku w projekcie umieścić lub dodać do tox.ini:

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

Jest to prawdopodobnie duplikat z How do I get Pyflakes to ignore a statement?