Отображение покрытия кода EUnit в Emacs
Я использую Rebar для создания своего проекта erlang и хочу более тесно интегрировать его с Emacs. Я обнаружил, что если я добавлю {cover_print_enabled, true}.
к моему файлу конфигурации арматуры я получаю покрытие кода в выводе сборки.
Однако есть и вариант cover_export_enabled
который выводит двоичный файл некоторой формы. Есть ли плагин emacs для анализа этого файла и цветового кода моего кода, чтобы показать, какой код покрывается тестами?
Мне действительно не нравится переключаться в браузер, чтобы увидеть покрытие кода.
2 ответа
Насколько я знаю, такого плагина нет.
Экспортированный файл данных обложки можно прочитать следующим образом:
- Прочитайте один байт, указав длину следующего члена; давай называть это
N
, - Читать
N
байты в формате двоичного термина Эрланга. Это может быть декодировано с помощью binary_to_term / 1. - Если термин из шага 2 имеет вид
{'$size',X}
затем прочитайтеX
байты и декодировать как термин. (Это происходит, когда двоичное представление термина длиннее 255 байт.) - Продолжайте с шага 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
Лео