Geef uw codebase een voorjaarsschoonmaak met deze gebruiksvriendelijke opdrachtregeltool.
Een linting-tool is een waardevol hulpmiddel dat u kan helpen fouten en inconsistenties in uw code op te sporen.
Flake8 is een van de meest populaire linting-tools voor Python. Het identificeert syntaxis- en opmaakfouten in uw code, samen met andere problemen zoals ongebruikte imports. Het is zeer flexibel omdat u, ook al heeft het standaardregels, deze kunt wijzigen of toevoegen om aan uw vereisten te voldoen.
U kunt Flake8 ook configureren om te worden uitgevoerd wanneer u updates van uw code opslaat met behulp van VS Code. Al deze functies maken het tot een waardevol hulpmiddel bij het schrijven van Python-programma's.
Flake8 installeren
Volg de onderstaande stappen om Flake8 op uw ontwikkelomgeving te installeren. Het kan nodig zijn installeer Pip op uw computer Eerst.
- Voer de onderstaande opdracht uit in uw terminal om Flake8 te installeren:
pip installeer flake8
- Controleer of Flake8 is geïnstalleerd door de volgende opdracht uit te voeren:
flake8 --versie
- Als Flake8 correct is geïnstalleerd, zou u de volgende uitvoer moeten zien:
4.0.1 (mccabe: 0.6.1, pycodestijl: 2.8.0, pyflakes: 2.4.0) CPython 3.9.13op
Linux
Nadat u Flake8 met succes hebt geïnstalleerd, kunt u het gaan gebruiken.
Flake8 gebruiken om Python-code te analyseren
Begin met de volgende code om te begrijpen hoe u Flake8 gebruikt. Het bevat een paar opzettelijke fouten. Kopieer het naar een bestand met de naam groet.py.
defgroet(naam):
afdrukken("Hallo, " + naam)
groet("Alice")
groet("Bob")
Flake8 uitvoeren op een enkel bestand
De syntaxis voor het uitvoeren van Flake8 op een enkel bestand is als volgt.
flake8 pad/naar/bestand.py
Navigeer in dit voorbeeld naar de map met het bestand greting.py en voer de volgende opdracht uit.
flake8 groet.py
Flake8 zou het volgende bericht moeten retourneren dat aangeeft dat er een inspringingsfout is opgetreden.
groet.py:5:1: E999Inspringfout: niet verwachtinspringen
Deze uitvoer geeft aan dat regel 5 onnodig is ingesprongen. Naar repareer deze inspringfout, moet u de spatie aan het begin van deze regel verwijderen.
defgroet(naam):
afdrukken("Hallo, " + naam)
groet("Alice")
groet("Bob")
Wanneer u Flake8 uitvoert, krijgt u de volgende waarschuwingen.
groet.py:4:1: E305verwacht 2 blancolijnennaklasoffunctiedefinitie, gevonden 1
groet.py:5:16: W292Neenieuwe lijnbijeindevanbestand
Deze uitvoer geeft de volgende problemen aan:
- Op regel 4 zouden er twee lege regels moeten zijn na de definitie van de begroetingsfunctie, maar er is er maar één.
- Op regel 5 zou er een nieuwe regel aan het einde van het bestand moeten staan.
Zodra u deze problemen heeft opgelost, zou Flake8 geen berichten meer moeten retourneren.
Tot nu toe hebben we slechts één bestand geanalyseerd, maar in de meeste gevallen wilt u meerdere bestanden analyseren.
Flake8 uitvoeren op meerdere bestanden
Stel dat je een andere hebt gebeld test_greeting.py dat de volgende code bevat:
van groet importeren groet
deftest_greet():
beweren groet("Alice") == "Hallo, Alice!"
Voer de volgende opdracht uit om deze twee bestanden te analyseren.
flake8 groet.py test_greeting.py
Deze methode werkt, maar als u meer dan twee bestanden heeft, kan het uittypen van de bestandsnamen vermoeiend en foutgevoelig zijn.
Het is efficiënter om de volgende opdracht te gebruiken om alle bestanden in de huidige map te analyseren:
vlok8 .
Flake8-fouten en waarschuwingen begrijpen
Flake8 meldt twee soorten problemen:
- Fouten: een fout duidt op een syntaxis- of structureel probleem waardoor uw code niet kan worden uitgevoerd zoals de inspringingsfout van het voorbeeld greeting.py.
- Waarschuwingen: een waarschuwing duidt op een mogelijk probleem of een schending van de PEP 8-stijlrichtlijnen, zoals de waarschuwing "geen nieuwe regel aan het einde van het bestand" uit het voorbeeld greeting.py.
Enkele veelvoorkomende fouten en waarschuwingen zijn:
- E101: inspringen bevat gemengde spaties en tabs.
- E302: 2 lege regels verwacht, 0 gevonden.
- E999 IndentationError: onverwacht inspringen.
- W291: witruimte achteraan.
- E501: regel te lang (maximaal 79 tekens).
- F401: module geïmporteerd maar ongebruikt.
Wanneer u Flake8 uitvoert, zal het een bericht uitvoeren zoals hierboven weergegeven en het regelnummer en de codelocatie waarnaar het bericht verwijst. Dit helpt u te weten waar uw code precies problemen heeft, waardoor u tijd bespaart bij het debuggen.
Flake8 configureren
Voor sommige projecten kunnen de regels van Flake8 te rigide zijn. In deze gevallen kunt u met Flake8 het configureren en het gedrag afstemmen op uw vereisten.
U kunt configuratie-opties bieden zoals:
- Het negeren van specifieke fouten of waarschuwingen.
- Instellen van de maximale lijnlengte.
- Het specificeren van aanvullende regels.
Maak ter demonstratie een configuratiebestand met de naam setup.cfg. U kunt de configuratie-opties ook toevoegen aan een bestand met de naam tox.ini of .flake8.
Begin in dit bestand met het maken van een flake8-sectie als volgt:
[flake8]
Voeg vervolgens de opties toe die u wilt configureren:
[flake8]
max-lijnlengte = 100
negeren = F401
In dit voorbeeld, max-line-length = 100 vertelt Flake8 om waarschuwingen te geven voor elke regel in uw broncodebestanden die langer is dan 100 tekens. negeren = F401 vertelt Flake8 om fouten met betrekking tot ongebruikte imports te negeren.
U hoeft deze opties niet aan een configuratiebestand toe te voegen, u kunt ze als volgt op de opdrachtregel opgeven:
flake8 --ignore E203 --max-lijnlengte 100
Het gebruik van een configuratiebestand is de beste aanpak, aangezien u niet elke keer dezelfde opties hoeft op te geven als u flake8 gebruikt.
Flake8 gebruiken in VS Code
Als u VS Code gebruikt om uw Python-toepassing te schrijven, kunt u de flake8-extensie gebruiken om uw Python-bestanden te pluizen terwijl u typt.
Eerst moet u de flake8-extensie van de VS Code-marktplaats installeren. Om het vervolgens te configureren, opent u de VS Code-instellingen, zoekt u vervolgens naar "python.linting.flake8Enabled" en schakelt u linting met flake8 in.
U zou nu fouten en waarschuwingen gemarkeerd in uw code moeten zien met een kronkelige lijn terwijl u deze schrijft. Als u de muisaanwijzer op de gemarkeerde tekst plaatst, wordt er een bericht weergegeven waarin het probleem wordt uitgelegd en mogelijke oplossingen worden voorgesteld.
Ander Python IDE's zoals Pycharm hebben ook Flake8-extensies die u kunt configureren om het linting-proces te vereenvoudigen.
Waarom zou u een Linter gebruiken?
Terwijl u code schrijft, kunt u fouten en inconsistenties introduceren die ervoor zorgen dat uw toepassing niet werkt of prestatieproblemen heeft. Met een linter zoals Flake8 kun je sommige van deze problemen van tevoren opvangen, waardoor je schonere code kunt schrijven. Het integreren ervan in uw ontwikkelingsworkflow is erg belangrijk.
U kunt dit doen door het te gebruiken in uw teksteditor of IDE en het te integreren in uw continuous integratiepijplijn om uw code automatisch te controleren op fouten en waarschuwingen voordat u deze samenvoegt met uw hoofdtak.