2010-08-10 10 views
11

Il mio attuale Ruby on Rails progetto fa test tramite rcov (nello specifico, relevance rcov, e noi abbiamo uno standard piuttosto elevato (siamo fallire la build se abbiamo < copertura del codice del 95%).Rcov di copertura cambia drasticamente con -xrefs

Usiamo il seguente comando per verificare questa:.

rcov_cmd = "rcov --rails --text-summary \ 
      --include #{included_dirs} \ 
      --exclude #{excluded_dirs} \ 
      --aggregate #{coverage_dir}/coverage.data \ 
      --output #{coverage_dir} \ 

Oggi ho trovato un po 'di codice che registra verde (che hanno percorso) nelle relazioni Rcov Homever, posso dimostrare che questo codice non è sempre run (alzo un'eccezione all'inizio della funzione e il mio test unitario passa)

Ho fatto qualche ricerca e ho trovato il flag --xrefs per rcov, che pensavo avrebbe aggiunto tutti i chiamanti per ogni riga nei report di rcov.

ho cambiato il comando rcov a:

rcov_cmd = "rcov --rails --text-summary --xrefs \ 
     --include #{included_dirs} \ 
     --exclude #{excluded_dirs} \ 
     --aggregate #{coverage_dir}/coverage.data \ 
     --output #{coverage_dir} \ 

(notare l'aggiunta --xrefs bandiera).

Invece di ulteriori informazioni sul sito, ho invece la copertura del test che va dal 96% al 48%.

Does --xrefs cambia il tipo di analisi come fa rcov? (Pensavo che avrebbe raccolto solo le informazioni sul callsite). Com'è diverso/migliore dal primo comando? (ho visto il calo di copertura unit test se c'è un test di unità in mancanza, e so che la percentuale di copertura può scendere se c'è un errore nella corsa, ma si guarda bene a me)

+0

Hai provato con solo '--callsites' e no' --xrefs' per determinare se sono effettivamente le informazioni sui calliti incluse che stanno causando la differenza? Potrebbe ridurre il problema un po '. – Shadwell

+0

Ho sostituito --xrefs e --callsites e ho visto lo stesso calo nella copertura di test – RyanWilcox

risposta

1

Da rcov manual:

--[no-]callsites 
    Show callsites in generated XHTML report. (somewhat slower; disabled by default) 
--[no-]xrefs 
    Generate fully cross-referenced report. (includes --callsites) 

Da Rcov CallSiteAnalyzer Class

A CallSiteAnalyzer can be used to obtain information about: 

    * where a method is defined ("defsite") 
    * where a method was called from ("callsite") 

Avere questa analizzare rcov in grado di fornire informazioni più precise la copertura dei costi di esecuzione più lungo.

Problemi correlati