Giv din kodebase en forårsrengøring med dette brugervenlige kommandolinjeværktøj.

Et fnugværktøj er en værdifuld ressource, der kan hjælpe dig med at fange fejl og uoverensstemmelser i din kode.

Flake8 er et af de mest populære fnugværktøjer til Python. Det identificerer syntaks- og formateringsfejl i din kode sammen med andre problemer som ubrugte importer. Det er meget fleksibelt, fordi selvom det har standardregler, kan du ændre dem eller tilføje dem, så de passer til dine krav.

Du kan også konfigurere Flake8 til at køre, når du gemmer opdateringer til din kode ved hjælp af VS Code. Alle disse funktioner gør det til et værdifuldt værktøj at have, når du skriver Python-programmer.

Installation af Flake8

Følg nedenstående trin for at installere Flake8 på dit udviklingsmiljø. Det kan være nødvendigt installer Pip på din maskine først.

  1. Kør kommandoen nedenfor i din terminal for at installere Flake8:
    pip installer flake8
  2. Bekræft, at Flake8 er installeret ved at køre følgende kommando:
    flake8 --version
  3. instagram viewer
  4. Hvis Flake8 er installeret korrekt, bør du se output svarende til følgende:
    4.0.1 (mccabe: 0.6.1, pycodestyle: 2.8.0, pyflakes: 2.4.0) CPython 3.9.13
    Linux

Når du har installeret Flake8, kan du begynde at bruge det.

Brug af Flake8 til at analysere Python-kode

For at forstå, hvordan man bruger Flake8, skal du starte med følgende kode. Den har et par bevidste fejl. Kopier det til en fil kaldet hilsen.py.

defhilsen(navn):
Print("Hej, " + navn)

hilsen("Alice")
 hilsen("Bob")

Kører Flake8 på en enkelt fil

Syntaksen for at køre Flake8 på en enkelt fil er som følger.

flake8 path/to/file.py

I dette eksempel skal du navigere til den mappe, der indeholder filen greting.py, og køre følgende kommando.

flake8 hilsen.py

Flake8 skulle returnere følgende meddelelse, der viser, at der var en indrykningsfejl.

hilsen.py:5:1: E999Indrykningsfejl: uventetindrykning

Dette output indikerer, at linje 5 er unødvendigt indrykket. Til ret denne indrykningsfejl, skal du fjerne mellemrummet fra begyndelsen af ​​denne linje.

defhilsen(navn):
Print("Hej, " + navn)

hilsen("Alice")
hilsen("Bob")

Når du nu kører Flake8, får du følgende advarsler.

hilsen.py:4:1: E305forventet 2 blanklinjerefterklasseellerfungeredefinition, fundet 1
hilsen.py:5:16: W292ingenny linjeendeaffil

Dette output indikerer følgende problemer:

  • På linje 4 skal der være to tomme linjer efter velkomstfunktionsdefinitionen, men der er kun én.
  • På linje 5 skal der være en ny linje i slutningen af ​​filen.

Når du har løst disse problemer, bør flake8 ikke returnere nogen meddelelser.

Indtil videre har vi kun analyseret én fil, men i de fleste tilfælde vil du gerne analysere flere filer.

Kører Flake8 på flere filer

Sig, du har ringet til en anden test_greeting.py der indeholder følgende kode:

fra hilsen importere hilsen
deftest_hilsen():
hævde hilsen("Alice") == "Hej, Alice!"

For at analysere disse to filer skal du køre følgende kommando.

flake8 greeting.py test_greeting.py

Denne metode virker, men hvis du har mere end to filer, kan det være trættende og udsat for fejl at indtaste filnavnene.

Det er mere effektivt at bruge følgende kommando til at analysere alle filerne i den aktuelle mappe:

flage8.

Forstå Flake8-fejl og advarsler

Flake8 rapporterer to typer problemer:

  • Fejl: En fejl angiver en syntaks eller et strukturelt problem, der forhindrer din kode i at køre ligesom indrykningsfejlen fra greeting.py-eksemplet.
  • Advarsler: En advarsel angiver et potentielt problem eller en overtrædelse af retningslinjerne i PEP 8-stil som f.eks. advarslen "ingen ny linje ved slutningen af ​​filen" fra greeting.py-eksemplet.

Nogle af de almindelige fejl og advarsler er:

  • E101: Indrykning indeholder blandede mellemrum og tabulatorer.
  • E302: forventet 2 tomme linjer, fundet 0.
  • E999 Indrykningsfejl: uventet indrykning.
  • W291: bagende hvidt rum.
  • E501: linje for lang (maks. 79 tegn).
  • F401: modul importeret, men ubrugt.

Når du kører Flake8, vil den udsende en meddelelse som den, der er vist ovenfor, og linjenummeret, og kodeplacering meddelelsen refererer til. Dette hjælper dig med at vide, hvor præcis din kode har problemer, som sparer dig for fejlretningstid.

Konfiguration af Flake8

For nogle projekter kan Flake8s regler være for stive. I disse tilfælde giver Flake8 dig mulighed for at konfigurere den og skræddersy dens adfærd, så den passer til dine krav.

Du kan angive konfigurationsmuligheder såsom:

  • Ignorerer specifikke fejl eller advarsler.
  • Indstilling af den maksimale linjelængde.
  • Angivelse af yderligere regler.

For at demonstrere skal du oprette en konfigurationsfil med navnet setup.cfg. Du kan også tilføje konfigurationsmulighederne til en fil med navnet tox.ini eller .flake8.

I denne fil skal du begynde med at oprette en flake8-sektion som følger:

[flake8]

Tilføj derefter de muligheder, du vil konfigurere:

[flake8]
max-line-længde = 100
ignorere = F401

I dette eksempel fortæller max-line-length = 100 Flake8 om at udstede advarsler for enhver linje i dine kildekodefiler, der overstiger 100 tegn. ignore = F401 fortæller Flake8 at ignorere fejl relateret til ubrugte importer.

Du behøver ikke at tilføje disse muligheder til en konfigurationsfil, da du kan kalde angive dem på kommandolinjen sådan her:

flake8 --ignorer E203 --max-line-længde 100

Brug af en konfigurationsfil er den bedste tilgang, da du ikke behøver at angive de samme muligheder, hver gang du bruger flake8.

Brug af Flake8 i VS-kode

Hvis du bruger VS Code til at skrive din Python-applikation, kan du bruge flake8-udvidelsen til at fnug dine Python-filer, mens du skriver.

Først skal du installere flake8-udvidelsen fra VS Code-markedspladsen. Åbn derefter VS Code-indstillingerne for at konfigurere den, søg derefter efter "python.linting.flake8Enabled" og aktiver linting med flake8.

Du bør nu se fejl og advarsler fremhævet i din kode med en snoet linje, mens du skriver den. Hvis du holder markøren over den fremhævede tekst, vises en meddelelse, der forklarer problemet og foreslår mulige rettelser.

Andet Python IDE'er såsom Pycharm har også Flake8-udvidelser, du kan konfigurere for at forenkle fnugprocessen.

Hvorfor skal du bruge en Linter?

Mens du skriver kode, kan du introducere fejl og uoverensstemmelser, der får din applikation til at fejle eller have problemer med ydeevnen. En linter som Flake8 giver dig mulighed for at fange nogle af disse problemer på forhånd, hvilket hjælper dig med at skrive renere kode. Det er meget vigtigt at integrere det i din udviklingsarbejdsgang.

Du kan gøre dette ved at bruge det i din teksteditor eller IDE og integrere det i din kontinuerlige integrationspipeline for automatisk at tjekke din kode for fejl og advarsler, før du flette den til din hovedgren.