Question

J'utilise actuellement Rcov pour obtenir une analyse de couverture de code C0 pour un projet de rails que je suis en train de travailler.

Cependant, ces résultats n’ont pratiquement aucune signification - j’ai une couverture de 100% selon rcov (car elle ne couvre que l’analyse C0) et j’ai à peine écrit la moitié des scénarios de test pour la fonctionnalité existante jusqu’à présent.

Je suis habitué aux résultats utiles de la couverture de code dans Visual Studio 2008 Team, qui couvre C1. Existe-t-il des outils offrant une couverture similaire pour le rubis?

Était-ce utile?

La solution

Il n’existe actuellement aucun outil de couverture C1 pour Ruby. En fait, il n'y a aucun outil de couverture autre que RCov.

Jusqu'à récemment, il était uniquement possible d'écrire de tels outils en corrigeant ou en étendant l'interpréteur IRM en C. Depuis environ deux ans, il est également possible d'étendre JRuby en Java. Depuis le mois dernier, il existe un port de RCov pour JRuby. Cependant, cela nécessite à la fois une connaissance de Ruby et de C, ainsi qu’une connaissance approfondie, car manipuler les composants internes de l’IRM n’est pas une mince affaire.

Mais ce n’est qu’avec Rubinius qu’il sera possible d’écrire des outils d’analyse dynamique tels que des outils de couverture de code dans Ruby lui-même, rendant l’écriture d’outil accessible à une partie beaucoup plus large de la communauté Ruby. J'espère que cela, associé au soutien financier substantiel des fournisseurs d'outils (de nombreux grands fournisseurs d'EDI travaillent déjà ou ont déjà introduit des IDE Ruby, notamment CodeGear (ex-Borland), IntelliJ, NetBeans, Eclipse, SapphireSteel (Ruby in Steel pour Visual Studio) et même Microsoft) débouchera sur une innovation rapide dans le domaine des outils Ruby en 2009 et nous verrons des choses comme C1, la couverture C2, la complexité NPath, un profilage beaucoup plus fin, etc.

Jusque-là, ma seule idée est d’utiliser des outils Java. Les gars de JRuby essaient d’émettre les métadonnées magiques appropriées pour rendre au moins pénétrable leur code secondaire généré par les outils Java. Donc, il est peut-être possible d'utiliser des outils de couverture Java avec JRuby. Cependant, je ne sais pas si cela fonctionne réellement, ni si cela est censé fonctionner.

Autres conseils

DeepCover est le seul outil complet de couverture C1 Ruby existant à ce jour.

Divulgation : je suis co-auteur de DeepCover .

Je ne connais pas les outils de couverture de code, mais Ruby a un testeur de mutation appelé Heckle.

Le test de mutation implique de changer le code testé et de voir si ces mutations font échouer les tests unitaires.

Malheureusement, la dernière gemme officielle (version 1.4.1) contient des bogues, vous pouvez donc en créer une en utilisant le code de la branche de développement. Il ne peut que muter des méthodes d'instance. Je ne suis pas sûr de la fiabilité de la version de la branche de développement.

Le test de mutation doit être évité si le code testé peut potentiellement détruire le système (par exemple, supprimer des fichiers). Vous voudrez peut-être lire une FAQ sur le chahut et une question de la FAQ mentionnant rcov versus heckle .

Pour rappel, NetBeans 7.0 intègre une analyse de couverture de code pour Ruby. Je ne trouve aucun document expliquant s’il s’agit ou non de C0 ou de C1, mais c’est quelque chose à surveiller.

Ancien post, mais je suis tombé dessus à la recherche d'outils de couverture Ruby. Pour info, j'ai rencontré un outil de couverture C1 pour Ruby appelé single_cov . Je ne sais pas à quel point c'est bon, mais je vais l'essayer un de ces jours.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top