在Emacs中显示EUnit代码覆盖率

时间:2013-05-09 04:57:52

标签: emacs erlang rebar eunit

我正在使用Rebar构建我的erlang项目,并希望将其与Emacs更紧密地集成。我发现如果我将{cover_print_enabled, true}.添加到我的rebar配置文件中,我会在构建输出中获得代码覆盖率。

但是还有一个选项cover_export_enabled,它输出某种形式的二进制文件。是否有一个emacs插件来解析该文件和颜色代码我的代码,以显示测试涵盖的代码?

我真的不想切换到浏览器来查看代码覆盖率。

2 个答案:

答案 0 :(得分:2)

据我所知,没有这样的插件。

导出的封面数据文件可以按如下方式读取:

  1. 读取一个字节,给出下一个字词的长度;我们称之为N
  2. 以Erlang二进制术语格式读取N个字节。这可以使用binary_to_term/1解码。
  3. 如果来自步骤2的术语的格式为{'$size',X},则读取X个字节并作为术语解码。 (当术语的二进制表示长于255个字节时会发生这种情况。)
  4. 从步骤1继续,直到文件结束。
  5. Distel有一个名为erlext-read-obj in erlext.elbinary_to_term的Emacs Lisp实现。

    一旦解码,我没有考虑如何处理文件中的术语,但希望这足以让某人开始。如果有疑问,请阅读lib/tools/src/cover.erl

答案 1 :(得分:0)

刚刚在提交https://github.com/leoliu/rebar.el/commit/9ba8699ff6310721226b93341e62491ebfd0ee99

中将此功能添加到rebar.el

利奥