Отображение покрытия кода EUnit в Emacs

Я использую Rebar для создания своего проекта erlang и хочу более тесно интегрировать его с Emacs. Я обнаружил, что если я добавлю {cover_print_enabled, true}. к моему файлу конфигурации арматуры я получаю покрытие кода в выводе сборки.

Однако есть и вариант cover_export_enabled который выводит двоичный файл некоторой формы. Есть ли плагин emacs для анализа этого файла и цветового кода моего кода, чтобы показать, какой код покрывается тестами?

Мне действительно не нравится переключаться в браузер, чтобы увидеть покрытие кода.

2 ответа

Насколько я знаю, такого плагина нет.

Экспортированный файл данных обложки можно прочитать следующим образом:

  1. Прочитайте один байт, указав длину следующего члена; давай называть это N,
  2. Читать N байты в формате двоичного термина Эрланга. Это может быть декодировано с помощью binary_to_term / 1.
  3. Если термин из шага 2 имеет вид {'$size',X}затем прочитайте X байты и декодировать как термин. (Это происходит, когда двоичное представление термина длиннее 255 байт.)
  4. Продолжайте с шага 1 до конца файла.

Distel имеет реализацию Emacs Lisp binary_to_term вызвал erlext-read-obj в erlext.el.

Я не изучал, что делать с терминами в файле, когда-то декодированными, но, надеюсь, этого достаточно, чтобы кто-то начал. Прочитайте lib / tools / src / cover.erl, если сомневаетесь.

Просто добавил эту функцию в rebar.el в коммите https://github.com/leoliu/rebar.el/commit/9ba8699ff6310721226b93341e62491ebfd0ee99

Лео

Другие вопросы по тегам