Ruby 2.4

Coverage

Coverage模块

Coverage提供了Ruby的覆盖率测量功能。此功能是实验性的,因此这些API可能会在未来更改。

用法

  • 要求“coverage”

  • do ::start

  • 需要或加载Ruby源文件

  • :: result将返回一个包含文件名作为键和覆盖数组作为值的散列。覆盖数组为每行提供解释器执行的行数。一个nil值意味着这条线的覆盖范围被禁用(例如elseend)。

[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; }