我目前正在使用 Rcov 来获取我的铁路项目的C0代码覆盖率分析正在努力。

然而,这些结果实际上毫无意义 - 根据rcov,我有100%的覆盖率(因为它只涵盖了C0分析),而且我几乎没有为目前存在的功能写出一半的测试用例。

我已经习惯了Visual Studio 2008 Team中的代码覆盖率的有用结果,它具有C1覆盖率。是否有任何工具可以为ruby提供类似的覆盖范围?

有帮助吗?

解决方案

目前,Ruby没有C1覆盖工具。事实上,除了RCov之外,还没有任何覆盖工具。

直到最近,才有可能通过在C中修补或扩展MRI解释器来编写这样的工具。从大约两年前开始,也可以在Java中扩展JRuby,实际上从上个月开始就有一个端口RCov为JRuby。然而,这需要对Ruby C的了解,以及对此的非常深入的了解,因为摆弄MRI内部并不适合胆小的人。

但只有Rubinius才有可能编写动态分析工具,例如Ruby本身的代码覆盖工具,使得Ruby社区的更大部分可以访问工具。我希望这一点,加上工具供应商的大量财务支持(许多主要的IDE供应商正在开发或已经引入了Ruby IDE,包括CodeGear(前Borland),IntelliJ,NetBeans,Eclipse,SapphireSteel(Ruby in Steel)对于Visual Studio)甚至微软)将导致2009年Ruby工具领域的快速创新,我们将看到诸如C1,C2覆盖,NPath复杂性,更细粒度的分析等等。

在那之前,我唯一的想法就是使用Java工具。 JRuby的人试图发出适当的魔术元数据,使他们生成的字节码至少可以被Java工具穿透。因此,也许可以将Java覆盖工具与JRuby一起使用。但是,我不知道这是否真的有效,也不知道它是否有效。

其他提示

DeepCover 是目前唯一存在的完整的C1 Ruby Coverage工具。

披露:我是DeepCover的合着者。

我不知道代码覆盖工具,但ruby有一个名为heckle的变异测试器。

变异测试涉及更改正在测试的代码,并查看这些突变是否导致单元测试失败。

不幸的是,最新的官方gem(版本1.4.1)中存在一些错误,因此您可能希望使用开发分支中的代码构建gem。它只能改变实例方法。我不确定开发分支版本的可靠性。

如果被测试的代码可能会破坏系统(例如删除文件),则应避免进行变异测试。您可能需要阅读关于heckle的常见问题提及rcov与heckle的常见问题解答

为了记录,NetBeans 7.0具有Ruby内置的代码覆盖率分析。我找不到任何文件解释它是否是C0或C1,但它是值得关注的东西。

旧帖子,但我遇到了它寻找Ruby覆盖工具。仅供参考我在Ruby上遇到了一个名为 single_cov 的C1覆盖工具。不知道它有多好,但我会在这些日子里试一试。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top