Python è un linguaggio molto potente e versatile e se ben padroneggiato può offrire diverse soddisfazioni allo sviluppatore. Abbiamo spesso proposto articoli a riguardo e oggi in particolare vogliamo illustrarvi le 5 librerie Python dedicate alla manutenzione del codice. Tali librerie si occupano quindi di mantenere il codice "in salute" e aiutano lo sviluppatore a rispettare determinati standard in modo da permettere al progetto di maturare nel modo corretto.
Pylint
Partiamo da Pylint, si tratta di una libreria che si occupa di verificare se sono state rispettate le specifiche della Python Enhancement Proposal (PEP8), ovvero delle linee guida consigliate dal team che ha creato Python in modo da garantire lo sviluppo di codice quanto più pulito e ordinato possibile.
Pylint può essere implementata all'interno di numerosi IDE dedicati a Python, per installarla basta usare il package management system pip:
sudo pip install pylint
e per eseguire il controllo del codice:
pylint path/to/dir
o in alternativa:
pylint path/to/modulo.py
Flake8
Passiamo a Flake8, è un tool che unisce: le PEP8, Pyflakes (una libreria simile a pylint), McCabe (un code complexity checker) e vari plugin di terze parti in un unico programma. Flake8 è dunque un tool molto potente e completo che integra numerose funzionalità che possono essere impostate e personalizzate a secondo delle esigenze dell'utente tramite un pratico file di configurazione. Possiamo installare Flake8 sempre tramite pip:
sudo pip install flake8
la sua sintassi è simile a pylint:
flake8 /progetto/dir
oppure:
flake8 modulo.py
Autopep8
Andiamo adesso su Autopep8, questo tool si occuperò di riformattare il codice analizzato in modo che rispetti le regole del PEP8, ad esempio eseguirà il re-indent delle linee di codice, rimuoverà gli spazi vuoti e andrà a sistemare gli errori di confronto più comuni (come ad esempio quelli booleani). Possiamo installarlo cosi:
sudo pip install --upgrade autopep8
mentre per eseguire il controllo ed il refactoring del codice:
autopep8 --in-place --aggressive --aggressive
L'opzione aggressive (e le sue ripetizioni) va ad indicare il numero di controlli che autopep8 andrà ad effettuare sul codice.
Yapf
È il turno di Yapf, è sempre un reformatting code tool ma al contrario di autopep8 non si limita a controllare se sono state applicate le regole del PEP8, va infatti oltre e si occupa di offrire suggerimenti all'utente per migliorare la leggibilità del codice. Per provarlo:
sudo pip install yapf
yapf /progetto/dir
o
yapf modulo.py
Coverage
Chiudiamo questo articolo con Coverage, durante lo sviluppo del codice sarà ovviamente necessario creare dei test per provare il funzionamento della propria applicazione. Qui entra in scena Coverage che si occupa di analizzare e misurare l'efficacia dei test sviluppati. Questo tool è molto versatile, si possono configurare anche i singoli test da eseguire direttamente dal suo file di configurazione, ed oltre al normale report via shell può anche visualizzare i risultati su una pagina HTML ed indicare esattamente dove il test ha evidenziato delle lacune. Vediamo come eseguire l'analisi:
sudo pip install coverage
coverage run /dir/module.py
per visualizzare anche le linee di codice problematiche basterà aggiungere questa opzione:
coverage run /dir/module.py report -m