Gi kodebasen din en vårrengjøring med dette brukervennlige kommandolinjeverktøyet.
Et linting-verktøy er en verdifull ressurs som kan hjelpe deg med å fange opp feil og inkonsekvenser i koden din.
Flake8 er et av de mest populære loverktøyene for Python. Den identifiserer syntaks- og formateringsfeil i koden din, sammen med andre problemer som ubrukte importer. Det er veldig fleksibelt fordi selv om det har standardregler, kan du endre dem eller legge til dem for å passe dine behov.
Du kan også konfigurere Flake8 til å kjøre når du lagrer oppdateringer til koden din ved hjelp av VS-kode. Alle disse funksjonene gjør det til et verdifullt verktøy å ha når du skriver Python-programmer.
Installerer Flake8
Følg trinnene nedenfor for å installere Flake8 på utviklingsmiljøet ditt. Det kan hende du må installer Pip på maskinen din først.
- Kjør kommandoen nedenfor i terminalen din for å installere Flake8:
pip installer flake8
- Bekreft at Flake8 er installert ved å kjøre følgende kommando:
flake8 --versjon
- Hvis Flake8 er riktig installert, bør du se utdata som ligner på følgende:
4.0.1 (mccabe: 0.6.1, pycodestyle: 2.8.0, pyflakes: 2.4.0) CPython 3.9.13på
Linux
Når du har installert Flake8, kan du begynne å bruke den.
Bruke Flake8 for å analysere Python-kode
For å forstå hvordan du bruker Flake8, start med følgende kode. Den har et par tilsiktede feil. Kopier den til en fil som heter hilsen.py.
defhilsen(Navn):
skrive ut("Hallo, " + navn)
hilsen("Alice")
hilsen("Bob")
Kjører Flake8 på en enkelt fil
Syntaksen for å kjøre Flake8 på en enkelt fil er som følger.
flake8 path/to/file.py
I dette eksemplet, naviger til katalogen som inneholder greting.py-filen og kjør følgende kommando.
flake8 hilsen.py
Flake8 skal returnere følgende melding som viser at det var en innrykkfeil.
hilsen.py:5:1: E999InnrykkFeil: uventetinnrykk
Denne utgangen indikerer at linje 5 er unødvendig rykket inn. Til fikse denne innrykksfeilen, må du fjerne mellomrommet fra begynnelsen av denne linjen.
defhilsen(Navn):
skrive ut("Hallo, " + navn)
hilsen("Alice")
hilsen("Bob")
Nå når du kjører Flake8, får du følgende advarsler.
hilsen.py:4:1: E305forventet 2 blanklinjeretterklasseellerfunksjondefinisjon, funnet 1
hilsen.py:5:16: W292Neiny linjepåsluttavfil
Denne utgangen indikerer følgende problemer:
- På linje 4 skal det stå to tomme linjer etter definisjonen av hilsenfunksjonen, men det er bare én.
- På linje 5 skal det være en ny linje på slutten av filen.
Når du har løst disse problemene, skal ikke flake8 returnere noen meldinger.
Så langt har vi kun analysert én fil, men i de fleste tilfeller vil du analysere flere filer.
Kjører Flake8 på flere filer
Si at du har ringt en annen test_greeting.py som inneholder følgende kode:
fra hilsen import hilsen
deftest_greet():
hevde hilsen("Alice") == "Hei, Alice!"
For å analysere disse to filene, kjør følgende kommando.
flake8 greeting.py test_greeting.py
Denne metoden fungerer, men hvis du har mer enn to filer, kan det være slitsomt og utsatt for feil å skrive inn filnavnene.
Det er mer effektivt å bruke følgende kommando for å analysere alle filene i gjeldende katalog:
flak8.
Forstå Flake8-feil og advarsler
Flake8 rapporterer to typer problemer:
- Feil: En feil indikerer et syntaks- eller strukturelt problem som hindrer koden din i å kjøre som innrykkfeilen fra greeting.py-eksemplet.
- Advarsler: En advarsel indikerer et potensielt problem eller et brudd på retningslinjene for PEP 8-stil, som "ingen ny linje på slutten av filen"-advarselen fra greeting.py-eksemplet.
Noen av de vanlige feilene og advarslene er:
- E101: Innrykk inneholder blandede mellomrom og tabulatorer.
- E302: forventet 2 tomme linjer, funnet 0.
- E999 Innrykkfeil: uventet innrykk.
- W291: etterfølgende mellomrom.
- E501: linje for lang (maksimalt 79 tegn).
- F401: modul importert, men ubrukt.
Når du kjører Flake8 vil den sende ut en melding som den som er vist ovenfor og linjenummeret, og kodeplassering meldingen refererer til. Dette hjelper deg å vite nøyaktig hvor koden din har problemer som sparer deg for feilsøkingstid.
Konfigurere Flake8
For noen prosjekter kan Flake8s regler være for rigide. I disse tilfellene lar Flake8 deg konfigurere den og skreddersy oppførselen til dine behov.
Du kan gi konfigurasjonsalternativer som:
- Ignorerer spesifikke feil eller advarsler.
- Stille inn maksimal linjelengde.
- Spesifisere tilleggsregler.
For å demonstrere, lag en konfigurasjonsfil kalt setup.cfg. Du kan også legge til konfigurasjonsalternativene til en fil som heter tox.ini eller .flake8.
I denne filen begynner du med å lage en flake8-seksjon som følger:
[flake8]
Legg deretter til alternativene du vil konfigurere:
[flake8]
maks-linjelengde = 100
ignorer = F401
I dette eksemplet forteller max-line-length = 100 Flake8 om å utstede advarsler for enhver linje i kildekodefilene dine som overskrider 100 tegn. ignore = F401 forteller Flake8 å ignorere feil relatert til ubrukte importer.
Du trenger ikke å legge til disse alternativene i en konfigurasjonsfil, da du kan ringe spesifisere dem på kommandolinjen slik:
flake8 --ignorer E203 --max-line-length 100
Å bruke en konfigurasjonsfil er den beste tilnærmingen siden du ikke trenger å spesifisere de samme alternativene hver gang du bruker flake8.
Bruke Flake8 i VS-kode
Hvis du bruker VS Code til å skrive Python-applikasjonen din, kan du bruke flake8-utvidelsen til å linte Python-filene mens du skriver.
Først må du installere flake8-utvidelsen fra VS Code-markedsplassen. Deretter, for å konfigurere den, åpne VS Code-innstillingene, søk deretter etter "python.linting.flake8Enabled" og aktiver linting med flake8.
Du skal nå se feil og advarsler uthevet i koden din med en krøllete linje mens du skriver den. Hvis du holder markøren over den uthevede teksten, vises en melding som forklarer problemet og foreslår mulige løsninger.
Annen Python IDEer som Pycharm har også Flake8-utvidelser du kan konfigurere for å forenkle linting-prosessen.
Hvorfor bør du bruke en Linter?
Når du skriver kode, kan du introdusere feil og inkonsekvenser som fører til at applikasjonen din mislykkes eller har ytelsesproblemer. En linter som Flake8 lar deg fange opp noen av disse problemene på forhånd, og hjelper deg med å skrive renere kode. Det er veldig viktig å integrere det i utviklingsarbeidsflyten din.
Du kan gjøre dette ved å bruke det i tekstredigeringsprogrammet eller IDE og integrere det i din kontinuerlige integrasjonspipeline for automatisk å sjekke koden din for feil og advarsler før du slår den sammen med din Hovedgren.