我怎样才能让工作服忽略来自 gem 的代码,我的 gem 作为依赖项?

How can I get coveralls to ignore code from gems my gem has as dependencies?

我做了一个小的 gem (SmsSafe),它目前有 100% 的代码覆盖率(根据 SimpleCov)。

但是,根据 Coveralls 的数据,它只有 41% 的覆盖率 (report here)。

造成这种差异的原因似乎是工作服从我的 gem 的依赖项中获取代码作为我代码的一部分,并抱怨那些没有被涵盖...

我似乎没有在我调查过的任何其他 gem 中执行此操作,而且我在那些 gem 的代码库中似乎没有任何特殊的工作服配置。 .

我调用工作服的方式是在我的 Rakefile 中包含这个:

require 'coveralls/rake/task'
Coveralls::RakeTask.new
task :test_with_coveralls => ["test", "coveralls:push"]

并让 Travis evecute "test_with_coveralls":

script: bundle exec rake test_with_coveralls

哪种添加方式正确according to their docs

知道为什么会这样吗?

需要两个步骤。

一方面,按照 Coveralls 文档,将 SimpleCov 格式化程序设置为 Coveralls:

require "simplecov"
require "coveralls"
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
    SimpleCov::Formatter::HTMLFormatter,
    Coveralls::SimpleCov::Formatter
]

SimpleCov.formatter = Coveralls::SimpleCov::Formatter

这并不能解决问题,但这是未记录的部分:

调用SimpleCov.start时,一定要过滤掉“/gemfiles/vendor”目录

SimpleCov.start do
    add_filter "/gemfiles/vendor"
end