2015-04-14 11 views
6

Nel nostro progetto abbiamo avuto alcune classi "dimenticate" in giro da un po 'di tempo.È possibile scoprire quali classi non sono utilizzate in un'applicazione Ruby on Rails?

Queste classi sono state sostituite da altre ma abbiamo dimenticato di eliminarle. C'è qualche modo/strumento automatico per scoprire quali classi non vengono utilizzate in un'applicazione Ruby {on Rails,}?

Grazie!

+9

Questo è difficile da fare tramite automazione poiché Ruby è così dinamico; le classi possono essere caricate in base al nome della classe, alla posizione, a un simbolo, alla fase lunare (letteralmente), ecc. Anche lo strumentale per vedere se sono mai usati o istanziati può essere problematico se non si dispone di una buona copertura del codice nei tuoi test. –

+0

Se l'applicazione riceve molto traffico, è possibile strumentare le classi sospette per scrivere su un "log di deprecazione" (o includere un tag di deprecazione facilmente reperibile) e monitorare il file di log nel tempo. La registrazione di un'attività per un lungo periodo di tempo dovrebbe significare, anche se il codice della classe è in qualche modo raggiungibile, che nessuno dei tuoi utenti abituali ti mancherà. –

+0

Il fatto è che abbiamo dimenticato di cancellare sia la classe che i suoi test. Con questo, abbiamo avuto una copertura abbastanza buona, ma nessun indizio che la classe fosse inutile. –

risposta

2

Questa domanda è stata fatta un sacco di volte, ma le risposte migliori vengono compilati qui:

Find unused code in a Rails app

io, personalmente, è piaciuto il parsing di registro:

https://stackoverflow.com/a/14161807

Ma in ogni caso è possibile creare il proprio registratore estendendo ActiveRecord :: Base per creare un osservatore che memorizza in un database i moduli più utilizzati. Dopo un tempo prudenziale, sarai in grado di invertire i modelli di ricerca che non vengono chiamati neanche una volta.

Ci sono altri strumenti profesional (a pagamento) che misura il vostro comportamento app:

http://newrelic.com/

Ho usato questo in un progetto e ha fatto un ottimo lavoro misurare l'utilizzo del controller. Potresti trovarlo utile