Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Automatizzare il code refactoring con Codemod

Link copiato negli appunti

Codemod è una libreria concepita con lo scopo di fornire uno strumento che assista lo sviluppatore in procedure che prevedono il refactoring di codebase di grandi dimensioni; l'obbiettivo è in sostanza quello di permettere la modifica, l'aggiornamento o la correzione di porzioni di sorgente anche particolarmente estese mantenendo inalterate le funzionalità di base di un'applicazione.

Codemod è una soluzione realizzata all'interno dei laboratori di Facebook e presenta un approccio improntato all'automatizzazione dei processi, in linea generale esso dovrebbe rivelarsi particolarmente adatto a tutti quei progetti per i quali il code refactoring può essere parzialmente automatizzato pur richiedendo una supervisione tecnica da parte dei developer e occasionali interventi manuali.

Rilasciata sotto licenza Open Source, la libreria è stata implementata in linguaggio Python e può essere installata adottando il package manager system pip (Python Package Index):

# in ambiente virtuale o una volta impersonato l'admin
pip install codemod
# nel proprio sistema tramite sudo
sudo -H pip install codemod

L'automatizzazione del refactoring in Codemod si basa sostanzialmente sull'impiego di espressioni regolari. Un esempio particolarmente interessante potrebbe essere quello che prevede la sostituzione di un costrutto deprecato: nel codice seguente vengono definiti dei pattern per l'individuazione del tag font, quando esso viene utilizzato per la colorazione del testo attraverso l'attributo color, per poi inserire al suo posto una semplice regola CSS:

codemod -m -d /home/jrosenstein/www --extensions php,html \
    '(.*?)' \
    '\2'

Ogni volta verrà rilevata una corrispondenza in fase di esecuzione Codemod provvederà a segnalarla, lo sviluppatore potrà quindi accettare la sostituzione prevista, rifiutarla o intervenire direttamente sulla riga di codice evidenziata per modificarla personalmente tramite editor.

I parametri previsti sono quindi un pattern per l'individuazione e una stringa sostitutiva; nel caso in cui dovesse essere necessaria quest'ultima potrà essere omessa, la libreria si occuperà quindi della sola fase di rilevazione e il developer potrà decidere di volta in volta quali interventi effettuare per tutte le corrispondenze individuate.

Via Codemod

Ti consigliamo anche