Dopřejte své kódové základně jarní úklid pomocí tohoto snadno použitelného nástroje příkazového řádku.
Nástroj pro linting je cenným zdrojem, který vám může pomoci zachytit chyby a nesrovnalosti ve vašem kódu.
Flake8 je jedním z nejoblíbenějších nástrojů pro linting pro Python. Identifikuje chyby syntaxe a formátování ve vašem kódu spolu s dalšími problémy, jako jsou nevyužité importy. Je velmi flexibilní, protože i když má výchozí pravidla, můžete je změnit nebo přidat, aby vyhovovala vašim požadavkům.
Flake8 můžete také nakonfigurovat tak, aby se spouštěl při ukládání aktualizací kódu pomocí VS Code. Všechny tyto vlastnosti z něj dělají cenný nástroj, který můžete mít při psaní programů v Pythonu.
Instalace Flake8
Pro instalaci Flake8 do vašeho vývojového prostředí postupujte podle následujících kroků. Možná budete muset nainstalujte Pip na váš počítač První.
- Spusťte níže uvedený příkaz ve svém terminálu a nainstalujte Flake8:
pip install flake8
- Ověřte, že je Flake8 nainstalován spuštěním následujícího příkazu:
flake8 --verze
- Pokud je Flake8 nainstalován správně, měli byste vidět výstup podobný následujícímu:
4.0.1 (mccabe: 0.6.1, pycodestyle: 2.8.0, pyflakes: 2.4.0) CPython 3.9.13na
Linux
Jakmile úspěšně nainstalujete Flake8, můžete jej začít používat.
Použití Flake8 k analýze kódu Python
Abyste pochopili, jak používat Flake8, začněte s následujícím kódem. Obsahuje několik záměrných chyb. Zkopírujte jej do souboru s názvem pozdrav.py.
defPozdrav(název):
tisk("Ahoj, " + jméno)
Pozdrav("Alice")
Pozdrav("Bob")
Spuštění Flake8 na jediném souboru
Syntaxe pro spuštění Flake8 na jednom souboru je následující.
flake8 cesta/k/souboru.py
V tomto příkladu přejděte do adresáře obsahujícího soubor greting.py a spusťte následující příkaz.
vločka8 pozdrav.py
Flake8 by měl vrátit následující zprávu ukazující, že došlo k chybě odsazení.
Pozdrav.py:5:1: E999IndentationError: neočekávanéOdrážka
Tento výstup označuje, že řádek 5 je zbytečně odsazený. Na opravte tuto chybu odsazení, musíte odstranit mezeru ze začátku tohoto řádku.
defPozdrav(název):
tisk("Ahoj, " + jméno)
Pozdrav("Alice")
Pozdrav("Bob")
Nyní, když spustíte Flake8, dostanete následující varování.
Pozdrav.py:4:1: E305očekávaný 2 prázdnýlinkypotřídanebofunkcedefinice, nalezeno 1
Pozdrav.py:5:16: W292Nenový řádeknakoneczsoubor
Tento výstup indikuje následující problémy:
- Na řádku 4 by po definici funkce pozdravu měly být dva prázdné řádky, ale je pouze jeden.
- Na řádku 5 by měl být na konci souboru nový řádek.
Jakmile tyto problémy opravíte, flake8 by neměl vracet žádné zprávy.
Doposud jsme analyzovali pouze jeden soubor, ale ve většině případů budete chtít analyzovat více souborů.
Spuštění Flake8 na více souborech
Řekněme, že máte další hovor test_pozdrav.py který obsahuje následující kód:
z Pozdrav import Pozdrav
deftest_pozdrav():
tvrdit Pozdrav("Alice") == "Ahoj Alice!"
Chcete-li analyzovat tyto dva soubory, spusťte následující příkaz.
flake8 greeting.py test_greeting.py
Tato metoda funguje, ale pokud máte více než dva soubory, psaní názvů souborů může být únavné a náchylné k chybám.
K analýze všech souborů v aktuálním adresáři je efektivnější použít následující příkaz:
vločka8.
Porozumění chybám a varováním Flake8
Flake8 hlásí dva typy problémů:
- Chyby: Chyba označuje syntaxi nebo strukturální problém, který brání spuštění vašeho kódu jako chyba odsazení z příkladu greeting.py.
- Varování: Varování označuje potenciální problém nebo porušení pokynů pro styl PEP 8, jako je varování „žádný nový řádek na konci souboru“ z příkladu greeting.py.
Některé z běžných chyb a varování jsou:
- E101: odsazení obsahuje smíšené mezery a tabulátory.
- E302: očekáváno 2 prázdné řádky, nalezeno 0.
- E999 IndentationError: neočekávané odsazení.
- W291: bílé místo na konci.
- E501: řádek je příliš dlouhý (maximálně 79 znaků).
- F401: modul importovaný, ale nepoužitý.
Když spustíte Flake8, vypíše zprávu, jako je ta uvedená výše, a číslo řádku a umístění kódu, na který zpráva odkazuje. To vám pomůže zjistit, kde přesně má váš kód problémy, což vám ušetří čas při ladění.
Konfigurace Flake8
U některých projektů mohou být pravidla Flake8 příliš přísná. V těchto případech vám Flake8 umožňuje nakonfigurovat jej a přizpůsobit jeho chování vašim požadavkům.
Můžete poskytnout možnosti konfigurace, například:
- Ignorování konkrétních chyb nebo varování.
- Nastavení maximální délky čáry.
- Určení dalších pravidel.
Pro demonstraci vytvořte konfigurační soubor s názvem setup.cfg. Možnosti konfigurace můžete také přidat do souboru s názvem tox.ini nebo .flake8.
V tomto souboru začněte vytvořením sekce flake8 takto:
[vločka8]
Poté přidejte možnosti, které chcete konfigurovat:
[vločka8]
maximální délka-řádku = 100
ignorovat = F401
V tomto příkladu max-line-length = 100 říká Flake8, aby vydal varování pro jakýkoli řádek v souborech zdrojového kódu, který přesahuje 100 znaků. ignore = F401 říká Flake8, aby ignoroval chyby související s nevyužitými importy.
Tyto možnosti nemusíte přidávat do konfiguračního souboru, protože je můžete zavolat a zadat je na příkazovém řádku takto:
flake8 --ignore E203 --max-line-length 100
Použití konfiguračního souboru je nejlepší přístup, protože nemusíte zadávat stejné možnosti pokaždé, když používáte flake8.
Použití Flake8 ve VS Code
Pokud k psaní své aplikace Python používáte kód VS, můžete použít rozšíření flake8 k lincování souborů Python během psaní.
Nejprve je třeba nainstalovat rozšíření flake8 z tržiště VS Code. Dále pro konfiguraci otevřete nastavení VS Code, vyhledejte „python.linting.flake8Enabled“ a povolte linting pomocí flake8.
Nyní byste při psaní měli vidět chyby a varování zvýrazněné v kódu klikatou čarou. Umístěním kurzoru na zvýrazněný text se zobrazí zpráva, která vysvětluje problém a navrhuje možné opravy.
jiný Python IDE jako Pycharm mají také rozšíření Flake8, která můžete nakonfigurovat pro zjednodušení procesu lintování.
Proč byste měli používat Linter?
Při psaní kódu se mohou objevit chyby a nekonzistence, které způsobí selhání aplikace nebo problémy s výkonem. Linter jako Flake8 vám umožní zachytit některé z těchto problémů předem, což vám pomůže napsat čistší kód. Jeho integrace do vašeho vývojového workflow je velmi důležitá.
Můžete to udělat tak, že jej použijete v textovém editoru nebo IDE a začleníte jej do vašeho průběžného integrační kanál pro automatickou kontrolu chyb a varování ve vašem kódu, než jej sloučíte do svého hlavní větev.