You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails项目中如何用Simplecov过滤除api控制器目录外的所有控制器?

只统计Rails项目controllers/api目录的代码覆盖率(Simplecov配置)

无需逐个添加排除规则,通过以下两种方式即可快速过滤出目标目录的覆盖率:

方法一:条件判断过滤

在spec/spec_helper.rb或test/test_helper.rb中配置Simplecov,直接排除所有非controllers/api/目录下的文件:

SimpleCov.start 'rails' do
  # 仅保留 controllers/api/ 目录下的文件,排除其余所有
  add_filter do |source_file|
    !source_file.filename.match?(%r{controllers/api/})
  end
end

说明:通过判断文件路径是否匹配正则%r{controllers/api/},不匹配的文件直接被过滤,最终仅统计目标目录的覆盖率。

方法二:分组+空组过滤

先将目标目录文件归入指定分组,再排除所有未分组的文件:

SimpleCov.start 'rails' do
  # 将 controllers/api/ 下的文件归入「API Controllers」分组
  add_group 'API Controllers', %r{controllers/api/}
  # 排除所有未被分到任何组的文件
  add_filter do |source_file|
    source_file.groups.empty?
  end
end

说明:这种方式既能精准保留目标文件,还能在覆盖率报告中单独查看API控制器的分组统计。

注意事项

  • 若项目路径包含app/前缀,可调整正则为%r{app/controllers/api/},确保路径匹配准确;
  • 配置完成后运行测试,查看Simplecov生成的HTML报告,确认仅目标目录文件被统计。

内容的提问来源于stack exchange,提问作者Victor Motogna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 21:50:35