Dai alla tua base di codice una pulizia primaverile con questo strumento da riga di comando facile da usare.

Uno strumento di linting è una risorsa preziosa che può aiutarti a rilevare errori e incoerenze nel tuo codice.

Flake8 è uno degli strumenti di linting più popolari per Python. Identifica gli errori di sintassi e di formattazione nel codice, insieme ad altri problemi come le importazioni inutilizzate. È molto flessibile perché, anche se ha regole predefinite, puoi modificarle o aggiungerle per adattarle alle tue esigenze.

Puoi anche configurare Flake8 in modo che venga eseguito quando salvi gli aggiornamenti al tuo codice utilizzando VS Code. Tutte queste caratteristiche lo rendono uno strumento prezioso da avere quando si scrivono programmi Python.

Installazione di Flake8

Segui i passaggi seguenti per installare Flake8 nel tuo ambiente di sviluppo. Potrebbe essere necessario installa Pip sulla tua macchina Primo.

  1. Esegui il comando seguente nel tuo terminale per installare Flake8:
    pip install flake8
  2. instagram viewer
  3. Verifica che Flake8 sia installato eseguendo il seguente comando:
    flake8 --versione
  4. Se Flake8 è installato correttamente, dovresti vedere un output simile al seguente:
    4.0.1 (mccabe: 0.6.1, pycodestyle: 2.8.0, pyflakes: 2.4.0) CPython 3.9.13SU
    Linux

Dopo aver installato con successo Flake8, puoi iniziare a usarlo.

Utilizzo di Flake8 per analizzare il codice Python

Per capire come usare Flake8, inizia con il seguente codice. Ha un paio di errori intenzionali. Copialo in un file chiamato saluto.py.

defsaluto(nome):
stampa("Ciao, " + nome)

saluto("Alice")
 saluto("Bob")

Esecuzione di Flake8 su un singolo file

La sintassi per eseguire Flake8 su un singolo file è la seguente.

flake8 path/to/file.py

In questo esempio, vai alla directory contenente il file greting.py ed esegui il seguente comando.

flake8 saluto.py

Flake8 dovrebbe restituire il seguente messaggio che mostra che si è verificato un errore di indentazione.

saluto.py:5:1: E999Errore di indentazione: inaspettatotrattino

Questo output indica che la riga 5 è rientrata inutilmente. A correggere questo errore di indentazione, è necessario rimuovere lo spazio dall'inizio di questa riga.

defsaluto(nome):
stampa("Ciao, " + nome)

saluto("Alice")
saluto("Bob")

Ora quando esegui Flake8, riceverai i seguenti avvisi.

saluto.py:4:1: E305previsto 2 vuotolineeDopoclasseOfunzionedefinizione, trovato 1
saluto.py:5:16: W292NOnuova lineaAFINEDifile

Questo output indica i seguenti problemi:

  • Alla riga 4 dovrebbero esserci due righe vuote dopo la definizione della funzione di saluto, ma ce n'è solo una.
  • Alla riga 5 dovrebbe esserci una nuova riga alla fine del file.

Una volta risolti questi problemi, flake8 non dovrebbe restituire alcun messaggio.

Finora abbiamo analizzato solo un file, ma nella maggior parte dei casi vorrai analizzare più file.

Esecuzione di Flake8 su più file

Dì che ne hai chiamato un altro test_saluto.py che contiene il seguente codice:

da saluto importare saluto
defprova_saluto():
affermare saluto("Alice") == "Ciao Alice!"

Per analizzare questi due file, eseguire il seguente comando.

flake8 saluto.py test_saluto.py

Questo metodo funziona ma se hai più di due file, digitare i nomi dei file potrebbe essere noioso e soggetto a errori.

È più efficiente utilizzare il seguente comando per analizzare tutti i file nella directory corrente:

fiocco8 .

Comprensione degli errori e degli avvisi di Flake8

Flake8 segnala due tipi di problemi:

  • Errori: un errore indica una sintassi o un problema strutturale che impedisce l'esecuzione del codice come l'errore di indentazione dell'esempio greeting.py.
  • Avvisi: un avviso indica un potenziale problema o una violazione delle linee guida di stile PEP 8 come l'avviso "nessuna nuova riga alla fine del file" dall'esempio greeting.py.

Alcuni degli errori e degli avvisi comuni sono:

  • E101: il rientro contiene spazi misti e tabulazioni.
  • E302: previste 2 righe vuote, trovate 0.
  • E999 IndentationError: rientro imprevisto.
  • W291: spazio bianco finale.
  • E501: riga troppo lunga (massimo 79 caratteri).
  • F401: modulo importato ma non utilizzato.

Quando esegui Flake8, verrà generato un messaggio come quello mostrato sopra e il numero di riga e la posizione del codice a cui fa riferimento il messaggio. Questo ti aiuta a sapere dove esattamente il tuo codice presenta problemi che ti fanno risparmiare tempo di debug.

Configurazione di Flake8

Per alcuni progetti, le regole di Flake8 potrebbero essere troppo rigide. In questi casi, Flake8 ti consente di configurarlo e adattare il suo comportamento alle tue esigenze.

È possibile fornire opzioni di configurazione quali:

  • Ignorare errori o avvisi specifici.
  • Impostazione della lunghezza massima della linea.
  • Specificare regole aggiuntive.

Per dimostrare, creare un file di configurazione denominato setup.cfg. È inoltre possibile aggiungere le opzioni di configurazione a un file denominato tox.ini o .flake8.

In questo file, inizia creando una sezione flake8 come segue:

[fiocco8]

Quindi aggiungi le opzioni che desideri configurare:

[fiocco8]
max-line-length = 100
ignora = F401

In questo esempio, max-line-length = 100 indica a Flake8 di emettere avvisi per qualsiasi riga nei file del codice sorgente che supera i 100 caratteri di lunghezza. ignore = F401 indica a Flake8 di ignorare gli errori relativi alle importazioni non utilizzate.

Non è necessario aggiungere queste opzioni a un file di configurazione in quanto è possibile chiamarle specificandole sulla riga di comando in questo modo:

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

L'utilizzo di un file di configurazione è l'approccio migliore poiché non è necessario specificare le stesse opzioni ogni volta che si utilizza flake8.

Utilizzo di Flake8 in VS Code

Se stai usando VS Code per scrivere la tua applicazione Python, puoi usare l'estensione flake8 per filtrare i tuoi file Python mentre digiti.

Innanzitutto, devi installare l'estensione flake8 dal marketplace VS Code. Successivamente, per configurarlo, apri le impostazioni di VS Code, quindi cerca "python.linting.flake8Enabled" e abilita il linting con flake8.

Ora dovresti vedere gli errori e gli avvisi evidenziati nel tuo codice con una linea ondulata mentre lo scrivi. Passando il mouse sopra il testo evidenziato verrà visualizzato un messaggio che spiega il problema e suggerisce possibili soluzioni.

Altro IDE Python come Pycharm hanno anche estensioni Flake8 che puoi configurare per semplificare il processo di linting.

Perché dovresti usare un Linter?

Mentre scrivi il codice, potresti introdurre errori e incoerenze che causano il fallimento dell'applicazione o problemi di prestazioni. Un linter come Flake8 ti consente di cogliere in anticipo alcuni di questi problemi, aiutandoti a scrivere codice più pulito. Integrarlo nel tuo flusso di lavoro di sviluppo è molto importante.

Puoi farlo utilizzandolo all'interno del tuo editor di testo o IDE e integrandolo nel tuo file continuo pipeline di integrazione per controllare automaticamente il codice per errori e avvisi prima di unirlo al tuo ramo principale.