Ge din kodbas en vårrengöring med detta lättanvända kommandoradsverktyg.

Ett linting-verktyg är en värdefull resurs som kan hjälpa dig att fånga upp fel och inkonsekvenser i din kod.

Flake8 är ett av de mest populära linting-verktygen för Python. Den identifierar syntax- och formateringsfel i din kod, tillsammans med andra problem som oanvända importer. Det är väldigt flexibelt eftersom, även om det har standardregler, kan du ändra dem eller lägga till dem för att passa dina krav.

Du kan också konfigurera Flake8 att köras när du sparar uppdateringar av din kod med VS-kod. Alla dessa funktioner gör det till ett värdefullt verktyg att ha när du skriver Python-program.

Installera Flake8

Följ stegen nedan för att installera Flake8 på din utvecklingsmiljö. Du kan behöva installera Pip på din maskin först.

  1. Kör kommandot nedan i din terminal för att installera Flake8:
    pip installera flake8
  2. Kontrollera att Flake8 är installerat genom att köra följande kommando:
    flake8 --version
  3. Om Flake8 är korrekt installerat bör du se utdata som liknar följande:
    instagram viewer
    4.0.1 (mccabe: 0.6.1, pycodestyle: 2.8.0, pyflakes: 2.4.0) CPython 3.9.13
    Linux

När du väl har installerat Flake8 kan du börja använda den.

Använder Flake8 för att analysera Python-kod

För att förstå hur man använder Flake8, börja med följande kod. Den har ett par avsiktliga fel. Kopiera den till en fil som heter greeting.py.

defhälsning(namn):
skriva ut("Hallå, " + namn)

hälsning("Alice")
 hälsning("Guppa")

Kör Flake8 på en enda fil

Syntaxen för att köra Flake8 på en enda fil är följande.

flake8 sökväg/till/fil.py

I det här exemplet navigerar du till katalogen som innehåller filen greting.py och kör följande kommando.

flake8 greeting.py

Flake8 bör returnera följande meddelande som visar att det fanns ett indragsfel.

hälsning.py:5:1: E999Indragningsfel: oväntatindrag

Denna utgång indikerar att rad 5 är onödigt indragen. Till fixa detta indragsfel, måste du ta bort utrymmet från början av den här raden.

defhälsning(namn):
skriva ut("Hallå, " + namn)

hälsning("Alice")
hälsning("Guppa")

Nu när du kör Flake8 får du följande varningar.

hälsning.py:4:1: E305förväntas 2 tomraderefterklassellerfungeradefinition, hittades 1
hälsning.py:5:16: W292Nejny linjeslutetavfil

Denna utdata indikerar följande problem:

  • På rad 4 ska det finnas två tomma rader efter hälsningsfunktionsdefinitionen, men det finns bara en.
  • På rad 5 ska det finnas en ny rad i slutet av filen.

När du har åtgärdat dessa problem bör flake8 inte returnera några meddelanden.

Hittills har vi bara analyserat en fil men i de flesta fall vill du analysera flera filer.

Kör Flake8 på flera filer

Säg att du har ringt en till test_greeting.py som innehåller följande kod:

från hälsning importera hälsning
deftest_greet():
hävda hälsning("Alice") == "Hej, Alice!"

För att analysera dessa två filer, kör följande kommando.

flake8 greeting.py test_greeting.py

Den här metoden fungerar men om du har fler än två filer kan det vara tröttsamt och felbenäget att skriva ut filnamnen.

Det är mer effektivt att använda följande kommando för att analysera alla filer i den aktuella katalogen:

flaga8.

Förstå Flake8-fel och varningar

Flake8 rapporterar två typer av problem:

  • Fel: Ett fel indikerar ett syntax- eller strukturproblem som hindrar din kod från att köras som indragsfelet från greeting.py-exemplet.
  • Varningar: En varning indikerar ett potentiellt problem eller ett brott mot riktlinjerna för PEP 8-stil som "ingen ny rad i slutet av filen"-varningen från greeting.py-exemplet.

Några av de vanligaste felen och varningarna är:

  • E101: indrag innehåller blandade mellanslag och flikar.
  • E302: förväntade 2 tomma rader, hittade 0.
  • E999 IndentationError: oväntat indrag.
  • W291: efterföljande vitt utrymme.
  • E501: rad för lång (max 79 tecken).
  • F401: modul importerad men oanvänd.

När du kör Flake8 kommer det att mata ut ett meddelande som det som visas ovan och radnumret, och kodplatsen som meddelandet refererar till. Detta hjälper dig att veta exakt var din kod har problem som sparar felsökningstid.

Konfigurera Flake8

För vissa projekt kan Flake8s regler vara för stela. I dessa fall låter Flake8 dig konfigurera den och skräddarsy dess beteende för att passa dina krav.

Du kan tillhandahålla konfigurationsalternativ som:

  • Ignorera specifika fel eller varningar.
  • Ställa in maximal linjelängd.
  • Ange ytterligare regler.

För att demonstrera, skapa en konfigurationsfil med namnet setup.cfg. Du kan också lägga till konfigurationsalternativen till en fil som heter tox.ini eller .flake8.

I den här filen börjar du med att skapa en flake8-sektion enligt följande:

[flake8]

Lägg sedan till alternativen du vill konfigurera:

[flake8]
max-linjelängd = 100
ignorera = F401

I det här exemplet säger max-line-length = 100 till Flake8 att utfärda varningar för alla rader i dina källkodsfiler som överstiger 100 tecken. ignore = F401 säger åt Flake8 att ignorera fel relaterade till oanvända importer.

Du behöver inte lägga till dessa alternativ i en konfigurationsfil eftersom du kan anropa ange dem på kommandoraden så här:

flake8 --ignorera E203 --max-linjelängd 100

Att använda en konfigurationsfil är den bästa metoden eftersom du inte behöver ange samma alternativ varje gång du använder flake8.

Använder Flake8 i VS Code

Om du använder VS-kod för att skriva din Python-applikation kan du använda tillägget flake8 för att luda dina Python-filer medan du skriver.

Först måste du installera flake8-tillägget från VS Code-marknadsplatsen. Öppna sedan VS Code-inställningarna för att konfigurera den, sök sedan efter "python.linting.flake8Enabled" och aktivera linting med flake8.

Du bör nu se fel och varningar markerade i din kod med en snirklig linje när du skriver den. Håller du muspekaren över den markerade texten visas ett meddelande som förklarar problemet och föreslår möjliga korrigeringar.

Övrig Python IDE såsom Pycharm har även Flake8-tillägg som du kan konfigurera för att förenkla lutningsprocessen.

Varför ska du använda en Linter?

När du skriver kod kan du introducera fel och inkonsekvenser som gör att din applikation misslyckas eller har prestandaproblem. En linter som Flake8 låter dig fånga några av dessa problem i förväg, vilket hjälper dig att skriva renare kod. Att integrera det i ditt utvecklingsarbetsflöde är mycket viktigt.

Du kan göra detta genom att använda den i din textredigerare eller IDE och integrera den i din kontinuerliga integrationspipeline för att automatiskt kontrollera din kod för fel och varningar innan du slår ihop den med din huvudgren.