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

CommentaDi' la tua

Il tuo indirizzo email non sarà mostrato pubblicamente. I campi obbligatori sono contrassegnati da *