ruby, personale, rubyonrails January 31, 2006 10:38 pm (Save post)
rcov è uno strumento di code coverage, ovvero un affare che serve a verificare quanta parte del vostro codice viene esercitata dai vostri test. Oggi l’ho sperimentato con il wiki, e sono abbastanza soddisfatto.
Oddio, tecnicamente si potrebbe usare iun tool di coverage senza test, se si fosse interessati a sapere quanta parte del proprio codice viene utilizzata in un certo uso del programma, ma tipicamente uno strumento del genere è utile per verificare che la propria test suite copra effettivamente tutto il codice che si è scritto.
rcov è decisamente semplice da usare:
rcov [opzioni] file.rb
al momento non supporta più di un file in input (modificare il codice per farglielo fare è banale), ma tanto è pratica comune usare un file test_all.rb che raccolga tutti i vari test.
In applicazioni fatte con rubyonrails però non è così comune, perché si usa il Rakefile per eseguire tutti i test, quindi io mi sono creato un paio di file all.rb in test/unit/ e test/functional, ed un test_all.rb nella directory principale che caricava quei due.
A questo punto ho dato un:
rcov -I test/unit/ -I test/functional/ -x test -x lib all_tests.rb
che tradotto significa “esegui all_tests includendo nel path test/functional e test/unit ed escludendo dall’analisi i file con lib nel nome“.
È utile escluderli altrimenti i dati globali vengono fuori falsati. Attenzione, i risultati non sono comunque del tutto corretti, in quanti rcov usa delle euristiche per capire se alcune cose sono state usate, e non sempre ci prende.
Sono comunque meglio di un rake stats ( Code LOC: 336 Test LOC: 435 Code to Test Ratio: 1:1.3)
I risultati vengono mostrati creando una directory coverage/ che contiene numerosi file html, ognuno rappresenta uno dei file del vostro progetto, con
- numero di linee
- numero di linee di codice
- percentuale di linee coperte
- percentuale di linee di codice copert
- il codice, colorato in modo differente se è stato eseguito o meno, in modo da evidenziare gli “interruttori” da toccare per testare tutto
Decisamente utile, quantomeno per avere piena confidenza nella propria test suite.
(ah, per il wiki si ottiene: Average (code only): 78.1%
Average (with comments): 81.5%, devo controllare ancora un sacco di cose
)

