【问题标题】:How can I get coveralls to ignore code from gems my gem has as dependencies?如何让工作服忽略我的 gem 作为依赖项的 gem 中的代码?
【发布时间】:2015-01-05 09:26:15
【问题描述】:

我制作了一个小 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

任何想法为什么会发生这种情况?

【问题讨论】:

    标签: ruby unit-testing testing code-coverage coveralls


    【解决方案1】:

    需要两个步骤。

    一方面,按照 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
    

    【讨论】:

    • 太棒了,刚刚做到了!更新了您的回复,以便更多地适用于我的问题,以供将来的提问者使用。谢谢!!
    猜你喜欢
    • 1970-01-01
    • 2019-07-01
    • 1970-01-01
    • 2013-09-04
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多