Coverage
Coverage模块
Coverage提供了Ruby的覆盖率测量功能。此功能是实验性的,因此这些API可能会在未来更改。
用法
- 要求“coverage”
- do ::start
- 需要或加载Ruby源文件
- :: result将返回一个包含文件名作为键和覆盖数组作为值的散列。覆盖数组为每行提供解释器执行的行数。一个
nil
值意味着这条线的覆盖范围被禁用(例如else
和end
)。
例
[foo.rb]
s = 0
10.times do |x|
s += x
end
if s == 45
p :ok
else
p :ng
end
[EOF]
require "coverage"
Coverage.start
require "foo.rb"
p Coverage.result #=> {"foo.rb"=>[1, 1, 10, nil, nil, 1, 1, nil, 0, nil]}
公共类方法
peek_result → hash Show source
返回包含文件名作为键和覆盖数组作为值的散列。
static VALUE
rb_coverage_peek_result(VALUE klass)
{
VALUE coverages = rb_get_coverages(
VALUE ncoverages = rb_hash_new(
if (!RTEST(coverages)) {
rb_raise(rb_eRuntimeError, "coverage measurement is not enabled"
}
st_foreach(RHASH_TBL(coverages), coverage_peek_result_i, ncoverages
rb_hash_freeze(ncoverages
return ncoverages;
}
result → hash Show source
返回包含文件名作为键和覆盖数组作为值的散列,并禁用覆盖率测量。
static VALUE
rb_coverage_result(VALUE klass)
{
VALUE ncoverages = rb_coverage_peek_result(klass
rb_reset_coverages(
return ncoverages;
}
start → nil Show source
启用覆盖率测量。
static VALUE
rb_coverage_start(VALUE klass)
{
VALUE coverages = rb_get_coverages(
if (!RTEST(coverages)) {
coverages = rb_hash_new(
rb_obj_hide(coverages
rb_set_coverages(coverages
}
return Qnil;
}