2008-11-14 20 views
8

Actualmente estoy usando Rcov para obtener el análisis de cobertura de código C0 para un proyecto de carriles en el que estoy trabajando.¿Existe un análisis de cobertura de código C1 para Ruby?

Sin embargo, esos resultados son prácticamente insignificantes. Tengo 100% de cobertura según rcov (ya que solo cubre el análisis C0) y apenas he escrito la mitad de los casos de prueba para la funcionalidad que existe hasta el momento.

Estoy acostumbrado a los resultados útiles de la cobertura del código en Visual Studio 2008 Team, que tiene cobertura C1. ¿Hay alguna herramienta que brinde una cobertura similar para ruby?

Respuesta

12

Por el momento, no hay herramientas de cobertura C1 para Ruby. De hecho, no hay ninguna otra herramienta de cobertura que no sea RCov.

Hasta hace poco, solo era posible escribir herramientas como esta parcheando o extendiendo el intérprete de MRI en C. Desde hace aproximadamente dos años, también es posible extender JRuby en Java, y en realidad desde el mes pasado puerto de RCov para JRuby. Sin embargo, esto requiere tanto el conocimiento de Ruby y C, y un conocimiento bastante profundo en eso, porque juguetear con las partes internas de MRI no es para los débiles de corazón.

Pero solo con Rubinius será posible escribir herramientas de análisis dinámico como las herramientas de cobertura de código en Ruby, haciendo que la escritura de herramientas sea accesible para una porción mucho más grande de la comunidad de Ruby. Mi esperanza es que esto, junto con el respaldo financiero sustancial de los vendedores de herramientas (muchos proveedores IDE importantes ya estén trabajando o ya hayan introducido IDEs de Ruby, incluidos CodeGear (ex-Borland), IntelliJ, NetBeans, Eclipse, SapphireSteel (Ruby in Steel). para Visual Studio) e incluso Microsoft) conducirá a una rápida innovación en el espacio de herramientas de Ruby en 2009 y veremos cosas como la cobertura C1, C2, la complejidad de NPath, mucho más perfiles de grano fino, etc.

Hasta entonces, la única idea que tengo es usar herramientas de Java. Los chicos de JRuby intentan emitir los metadatos mágicos adecuados para hacer que sus códigos de bytes generados sean al menos penetrables con las herramientas de Java. Entonces, tal vez sea posible usar herramientas de cobertura Java con JRuby. Sin embargo, no tengo idea de si eso realmente funciona, ni si se supone que funciona.

+0

¿Sigue siendo este el estado de las cosas en 2016? –

0

No conozco las herramientas de cobertura de código, pero ruby ​​tiene un probador de mutaciones llamado heckle.

Las pruebas de mutación implican cambiar el código que se está probando y ver si esas mutaciones hacen que fallen las pruebas unitarias.

Desafortunadamente, la última joya oficial (versión 1.4.1) tiene algunos errores, por lo que es posible que desee construir una gema utilizando el código de la rama de desarrollo. Solo puede mutar los métodos de instancia. No estoy seguro de cuán confiable es la versión de la rama de desarrollo tampoco.

Las pruebas de mutación deben evitarse si el código que se está probando puede destruir el sistema (por ejemplo, eliminar archivos). Le recomendamos leer a FAQ about heckle y a FAQ question mentioning rcov versus heckle.

+0

está integrado en RSPec. Desde spec --help, hay una opción -H (o --heckle): "Si todos los ejemplos pasan, esto mutará las clases y métodos identificados por CODE poco a poco y ejecutará todos los ejemplos nuevamente para cada mutación. es que para cada mutación, al menos un ejemplo * debería * fallar, y RSpec le dirá si este no es el caso.CODE debe ser Some :: Module, Some :: Class o Some :: Fabulous # method} " – hgmnz

1

Para el registro, NetBeans 7.0 tiene un análisis de cobertura de código para Ruby built-in. No puedo encontrar ningún documento que explique si es C0 o C1 o no, pero es algo que debe vigilarse.

+1

E.S .: Netbeans simplemente está utilizando RCov detrás de las escenas. – srboisvert

Cuestiones relacionadas