开源项目 找小伙伴一起开发 Ruby 增量代码覆盖率工具

jfry · August 31, 2019 · Last by jfry replied at August 31, 2019 · 6010 hits

简介

该项目的初衷主要是为了方便在开发中看到自己的代码自测程度,对于遗漏的点好及时发现和自测

项目目前已经实现了一些基本的功能了,先看一个例子:

$ incrcov develop HEAD

+----------------+-----------+-------------+---------------+---------------+--------------+
| Path           | Method    | Total Lines | Covered Lines | Coverage Rate | Missed Lines |
+----------------+-----------+-------------+---------------+---------------+--------------+
| app/demo2.rb:6 | say_world | 2           | 1             | 50.0%         | 7            |
+----------------+-----------+-------------+---------------+---------------+--------------+

Overall incremental test coverage: 50.0%
Number of updated methods: 1
Number of low test coverage(<90%) methods: 1

上面的例子表示当前分支和 develop 分支相比,app/demo2.rb 第 6 行的 say_world 方法发生了变化,该方法总共两行被覆盖了一行,覆盖率为 50%

功能

  • 支持汇报两个 Git Commit 之间修改的代码的覆盖情况
  • 支持不同格式的输出,可以在控制台查看,在 GitLab 或者 GitHub 的 PR 中查看

项目目前基本可用,但是还有很多待完善和改进的地方,找感兴趣的小伙伴一起来开发~

项目地址: https://github.com/toaco/incrcov

第一次更新:2019 年 08 月 31 日 15:19:47

感谢 @gaotongfei 推荐的 undercover,了解了下 undercover 后发现 incrcov 里面的实现和 undercover 如出一辙。但是使用起来有一些差异,当前差异如下:

  • 依赖和侵入性
    • undercover 依赖于 SimpleCov 以及 LcovFormatter,incrcov 只依赖于 SimpleCov
    • 使用 undercover 需要修改现有代码,设置和安装 Lcovformatter;incrcov 不需要,无侵入
  • 报告类型的不同
    • undercover 展示没有覆盖的代码;incrcov 更多的是提供汇总信息,不会展示代码,只会提供行号的信息
    • incrcov 报告覆盖率,undercover 不报告
    • incrcov 支持覆盖率阈值设置,只会输出覆盖率低于该阈值的代码
  • 报告格式不同
    • undercover 的输出格式单一;incrcov 针对提供了多种格式的报告,有专门的用于控制台展示的,也有可以直接粘贴在 Github、GitLab 评论中的 Markdown 格式的报告
  • undercover 更加成熟稳定。

代码自测程度是指哪些方法被修改了吗?

Reply to w7938940

嗯,是指修改了哪些方法,并且这些方法当前的测试覆盖率情况是怎么样的。比如新增了一个方法,没写测试,那么会显示方法的覆盖率为 0,或者修改了一个方法删除了其中的一行,这个方法之前没写测试现在也没补充,那么覆盖率也会显示为 0

Reply to gaotongfei

诶,好像就是这个,之前没搜到,我去看看

You need to Sign in before reply, if you don't have an account, please Sign up first.