Proljetno očistite svoju bazu koda s ovim alatom naredbenog retka koji je jednostavan za korištenje.

Alat za linting vrijedan je izvor koji vam može pomoći u otkrivanju pogrešaka i nedosljednosti u vašem kodu.

Flake8 je jedan od najpopularnijih alata za linting za Python. Identificira pogreške u sintaksi i formatiranju u vašem kodu, zajedno s drugim problemima poput neiskorištenog uvoza. Vrlo je fleksibilan jer, iako ima zadana pravila, možete ih promijeniti ili dodati kako bi odgovarali vašim zahtjevima.

Također možete konfigurirati Flake8 da se pokreće kada spremate ažuriranja svog koda koristeći VS Code. Sve te značajke čine ga vrijednim alatom za pisanje Python programa.

Instalacija Flake8

Slijedite korake u nastavku da biste instalirali Flake8 u svoje razvojno okruženje. Možda ćete trebati instalirajte Pip na svoj stroj prvi.

  1. Pokrenite naredbu u nastavku na svom terminalu da instalirate Flake8:
    pip instaliraj flake8
  2. Provjerite je li Flake8 instaliran pokretanjem sljedeće naredbe:
    pahuljica8 --verzija
  3. Ako je Flake8 ispravno instaliran, trebali biste vidjeti izlaz sličan sljedećem:
    4.0.1 (mccabe: 0.6.1, pycodestyle: 2.8.0, pahuljice: 2.4.0) CPython 3.9.13na
    Linux

Nakon što ste uspješno instalirali Flake8, možete ga početi koristiti.

Korištenje Flake8 za analizu Python koda

Da biste razumjeli kako koristiti Flake8, počnite sa sljedećim kodom. Ima nekoliko namjernih grešaka. Kopirajte ga u datoteku pod nazivom pozdrav.py.

defpozdrav(Ime):
ispis("Zdravo, " + ime)

pozdrav("Alice")
 pozdrav("Bob")

Pokretanje Flake8 na jednoj datoteci

Sintaksa za pokretanje Flake8 na jednoj datoteci je sljedeća.

pahuljica8 put/do/datoteke.py

U ovom primjeru idite do direktorija koji sadrži datoteku greting.py i pokrenite sljedeću naredbu.

pahuljica8 pozdrav.py

Flake8 bi trebao vratiti sljedeću poruku pokazujući da je došlo do pogreške u uvlačenju.

pozdrav.py:5:1: E999IndentationError: neočekivanouvlaka

Ovaj izlaz označava da je redak 5 nepotrebno uvučen. Do ispravi ovu pogrešku uvlačenja, trebate ukloniti razmak s početka ovog retka.

defpozdrav(Ime):
ispis("Zdravo, " + ime)

pozdrav("Alice")
pozdrav("Bob")

Sada kada pokrenete Flake8, dobit ćete sljedeća upozorenja.

pozdrav.py:4:1: E305očekivano 2 prazanlinijenakonrazredailifunkcijadefinicija, pronađeno 1
pozdrav.py:5:16: W292Nenova linijanakrajoddatoteka

Ovaj rezultat ukazuje na sljedeće probleme:

  • U retku 4 trebala bi biti dva prazna retka nakon definicije funkcije pozdrava, ali postoji samo jedan.
  • U retku 5, trebao bi biti novi red na kraju datoteke.

Nakon što riješite ove probleme, flake8 ne bi trebao vraćati nikakve poruke.

Do sada smo analizirali samo jednu datoteku, ali u većini slučajeva ćete htjeti analizirati više datoteka.

Pokretanje Flake8 na više datoteka

Reci da imaš drugog pozvanog test_greeting.py koji sadrži sljedeći kod:

iz pozdrav uvoz pozdrav
deftest_greet():
tvrditi pozdrav("Alice") == "Zdravo, Alice!"

Za analizu ove dvije datoteke, pokrenite sljedeću naredbu.

flake8 greeting.py test_greeting.py

Ova metoda funkcionira, ali ako imate više od dvije datoteke, upisivanje naziva datoteka može biti naporno i sklono pogreškama.

Učinkovitije je koristiti sljedeću naredbu za analizu svih datoteka u trenutnom direktoriju:

pahuljica8 .

Razumijevanje pogrešaka i upozorenja Flake8

Flake8 prijavljuje dvije vrste problema:

  • Pogreške: pogreška ukazuje na problem sintakse ili strukture koji sprječava izvođenje vašeg koda poput pogreške uvlačenja iz primjera greeting.py.
  • Upozorenja: upozorenje ukazuje na potencijalni problem ili kršenje stilskih smjernica PEP 8 kao što je upozorenje "bez novog retka na kraju datoteke" iz primjera greeting.py.

Neke od uobičajenih pogrešaka i upozorenja su:

  • E101: uvlaka sadrži miješane razmake i tabulatore.
  • E302: očekivana 2 prazna retka, pronađeno 0.
  • E999 IndentationError: neočekivana uvlaka.
  • W291: razmak na kraju.
  • E501: predug redak (maksimalno 79 znakova).
  • F401: modul uvezen ali nekorišten.

Kada pokrenete Flake8, on će ispisati poruku kao što je ova prikazana gore i broj retka, te lokaciju koda na koju se poruka odnosi. To vam pomaže da znate gdje točno vaš kod ima problema što vam štedi vrijeme za otklanjanje pogrešaka.

Konfiguriranje Flake8

Za neke projekte, pravila Flake8 mogu biti previše kruta. U tim slučajevima, Flake8 vam omogućuje da ga konfigurirate i prilagodite njegovo ponašanje kako bi odgovaralo vašim zahtjevima.

Možete pružiti opcije konfiguracije kao što su:

  • Ignoriranje određenih pogrešaka ili upozorenja.
  • Postavljanje maksimalne duljine linije.
  • Određivanje dodatnih pravila.

Za demonstraciju stvorite konfiguracijsku datoteku pod nazivom setup.cfg. Također možete dodati konfiguracijske opcije u datoteku pod nazivom tox.ini ili .flake8.

U ovoj datoteci započnite stvaranjem odjeljka flake8 na sljedeći način:

[pahuljica8]

Zatim dodajte opcije koje želite konfigurirati:

[pahuljica8]
max-line-length = 100
ignoriraj = F401

U ovom primjeru, max-line-length = 100 govori Flakeu8 da izda upozorenja za bilo koji redak u vašim datotekama izvornog koda koji premašuje duljinu od 100 znakova. ignore = F401 govori Flakeu8 da zanemari pogreške povezane s neiskorištenim uvozima.

Ne morate dodati ove opcije konfiguracijskoj datoteci jer ih možete nazvati navesti u naredbenom retku ovako:

flake8 --ignore E203 --max-line-length 100

Korištenje konfiguracijske datoteke je najbolji pristup budući da ne morate navoditi iste opcije svaki put kada koristite flake8.

Korištenje Flake8 u VS kodu

Ako koristite VS Code za pisanje svoje Python aplikacije, možete upotrijebiti ekstenziju flake8 za crtanje vaših Python datoteka dok tipkate.

Prvo morate instalirati proširenje flake8 s VS Code marketplacea. Zatim, da biste ga konfigurirali, otvorite postavke VS koda, zatim potražite "python.linting.flake8Enabled" i omogućite linting s flake8.

Sada biste trebali vidjeti pogreške i upozorenja istaknute u svom kodu vijugavom linijom dok ga pišete. Postavljanje pokazivača iznad označenog teksta prikazat će poruku koja objašnjava problem i predlaže moguća rješenja.

ostalo Python IDE kao što je Pycharm također ima Flake8 ekstenzije koje možete konfigurirati da pojednostavite proces lintinga.

Zašto biste trebali koristiti Linter?

Dok pišete kod, mogli biste unijeti pogreške i nedosljednosti koje uzrokuju neuspjeh vaše aplikacije ili probleme s izvedbom. Linter kao što je Flake8 omogućuje vam da unaprijed uhvatite neke od ovih problema, pomažući vam da napišete čistiji kod. Vrlo je važno da ga integrirate u svoj tijek razvoja.

To možete učiniti koristeći ga unutar uređivača teksta ili IDE-a i integrirajući ga u svoj kontinuirani integracijski cjevovod za automatsku provjeru pogrešaka i upozorenja u vašem kodu prije nego što ga spojite sa svojim glavna grana.