2010-08-10 5 views
11

Mi actual Ruby on Rails proyecto realiza pruebas a través de rcov (en concreto, relevance rcov, y tenemos un muy alto estándar (que falle la acumulación si tenemos un 95% de cobertura de código <).rcov cobertura cambia drásticamente con -xrefs

Nosotros usamos el siguiente comando para probar esto:.

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

Hoy he encontrado un código que registra verde (de haber corrido) en los informes rcov Homever, puedo demostrar que este código no está recibiendo de funcionamiento (I planteo una excepción al principio de la función, y mis pruebas de unidad pasan)

Hice algunas investigaciones y encontré la bandera --xrefs para rcov, que pensé que agregaría todas las llamadas para cada línea en los informes de rcov.

me cambió el comando rcov a:

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

(notar el agregado --xrefs bandera).

En lugar de información adicional sobre el lugar de trabajo, en cambio, mi cobertura de prueba va del 96% al 48%.

¿--xrefs cambia el tipo de análisis que hace rcov? (Pensé que solo obtendría información del callsite). ¿Cómo es esto diferente/mejor del primer comando? (he visto la caída de la cobertura de prueba de la unidad si hay una prueba de unidad en su defecto, y sé que el porcentaje de cobertura puede caer si hay un error en la carrera, pero se ve bien para mí)

+0

¿Has probado con ''callsites' y no' --xrefs' para determinar si en realidad es la información de los callsites que está causando la diferencia? Podría reducir el problema un poco. – Shadwell

+0

Reemplacé --xrefs y --callites y vi la misma caída en la cobertura de prueba – RyanWilcox

Respuesta

1

De rcov manual:

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

de 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") 

Tener esta analizar rcov puede proporcionar información más precisa la cobertura de coste de ejecución más largo.

Cuestiones relacionadas