Pregunta

Actualmente estoy usando Rcov para obtener el análisis de cobertura de código C0 para un proyecto de rieles que yo estoy trabajando en.

Sin embargo, esos resultados son prácticamente insignificantes: tengo una cobertura del 100% de acuerdo con 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 ahora.

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 proporcione una cobertura similar para ruby?

¿Fue útil?

Solución

Por el momento, no hay herramientas de cobertura C1 para Ruby. De hecho, no hay ninguna 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 desde el mes pasado hay un puerto de RCov para JRuby. Sin embargo, esto requiere un conocimiento de Ruby y C, y un conocimiento bastante profundo, porque jugar con las partes internas de la resonancia magnética 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 Ruby. Espero que esto, junto con el respaldo financiero sustancial de los proveedores de herramientas (muchos de los principales proveedores de IDE estén trabajando o ya hayan introducido IDE 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 Ruby en 2009 y veremos cosas como la cobertura C1, C2, la complejidad de NPath, perfiles mucho más finos, etc.

Hasta entonces, la única idea que tengo es usar herramientas Java. Los chicos de JRuby intentan emitir los metadatos mágicos adecuados para hacer que su código de bytes generado sea al menos penetrable por 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 debe funcionar.

Otros consejos

DeepCover es la única herramienta completa de Cobertura C1 Ruby que existe en la actualidad.

Divulgación : soy coautor de DeepCover .

No sé acerca de las herramientas de cobertura de código, pero Ruby tiene un probador de mutaciones llamado heckle.

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

Desafortunadamente, la última gema 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. Tampoco estoy seguro de cuán confiable es la versión de la rama de desarrollo.

Se deben evitar las pruebas de mutación si el código que se está probando puede potencialmente destruir el sistema (por ejemplo, eliminar archivos). Es posible que desee leer preguntas frecuentes sobre heckle y una pregunta frecuente que menciona rcov versus heckle .

Para el registro, NetBeans 7.0 tiene un análisis de cobertura de código para Ruby incorporado. No puedo encontrar ningún documento que explique si es C0 o C1 o no, pero es algo a tener en cuenta.

Publicación anterior, pero me encontré buscando herramientas de cobertura de Ruby. Para su información, me encontré con una herramienta de cobertura C1 para Ruby llamada single_cov . No sé qué tan bueno es, pero lo probaré uno de estos días.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top