martedì 3 settembre 2013

etags su progetti grandi

Solitamente uso etags unito ad Emacs per sfogliare il codice sorgente di progetti anche di grosse dimensioni. Tuttavia indicizzando la code base di FreeBSD mi sono trovato degli strani errori di riferimento: di fatto Emacs saltava nel punto sbagliato portandomi da un tag all'altro apparentemente senza senso.
Ho poi scoperto, grazie all'aiuto sulla mailing list Emacs, che sbagliavo l'invocazione della generazione dei tag:

cd /usr/src && find . -name '*.[ch]' -print0 | xargs -0 etags

questo comando sfrutta la capacità di xargs di lanciare piu' job in parallelo, e quindi ci si trovava ad avere dei processi etags concorrenti fra loro che sovrascrivevano le modifiche in modo conflittuale.
Siccome etags consente di leggere direttamente da standard input i file da indicizzare, il seguente comando risulta piu' lungo ma accurato nei risultati:

cd /usr/src && find . -name '*.[ch]' | etags -

Nessun commento: