Собственный инструмент покрытия вставляет вызовы «bump» в каждую строку исходного кода, модуля записи, функции, арности, номера предложения и номера строки:
bump_call(Vars, Line) ->
A = erl_anno:new(0),
{call,A,{remote,A,{atom,A,ets},{atom,A,update_counter}},
[{atom,A,?COVER_TABLE},
{tuple,A,[{atom,A,?BUMP_REC_NAME},
{atom,A,Vars#vars.module},
{atom,A,Vars#vars.function},
{integer,A,Vars#vars.arity},
{integer,A,Vars#vars.clause},
{integer,A,Line}]},
{integer,A,1}]}.
( из cover.erl)
Как уже упоминалось в сопроводительной документации , вы можете получить покрытие для модулей, функций, функциональных предложений и строк.Похоже, что ExCoveralls использует только покрытие линий в своих отчетах, но нет никаких причин, по которым он не может выполнять все четыре типа покрытия.
Покрытие филиала не поддерживается.Похоже, что для поддержки покрытия веток потребуется расширить запись «bump» и обновить cover.erl
для записи этой информации.Пока кто-то не сделает этого, информация о покрытии будет точной только тогда, когда ответвления появляются в разных строках.Например:
case always_false() of
true ->
%% this line shows up as not covered
do_something();
false ->
ok
end.
%% this line shows up as covered, even though do_something is never called
always_false() andalso do_something()