浏览代码

Re-format cover exclusion code

- brings back former error handling and debug messages
- keeps the filtering of excluded mods and debug messages
- breaks up code into multiple functions and removes nesting
pull/1314/head
Fred Hebert 8 年前
父节点
当前提交
4b0a07221d
共有 1 个文件被更改,包括 26 次插入17 次删除
  1. +26
    -17
      src/rebar_prv_cover.erl

+ 26
- 17
src/rebar_prv_cover.erl 查看文件

@ -308,23 +308,16 @@ cover_compile(State, Dirs) ->
lists:foreach(fun(Dir) ->
case file:list_dir(Dir) of
{ok, Files} ->
Files2 = [F || F <- Files, filename:extension(F) == ".beam"],
lists:foreach(fun(File) ->
case lists:any(fun (Excl) ->
File =:= (atom_to_list(Excl) ++ ".beam")
end, ExclMods) of
true ->
?DEBUG("cover ignoring ~p ~p", [Dir, File]);
_ ->
?DEBUG("cover compiling ~p ~p", [Dir, File]),
case catch(cover:compile_beam(filename:join(Dir, File))) of
{error, Reason} ->
?WARN("Cover compilation failed: ~p", [Reason]);
{ok, _} ->
ok
end
end
end, Files2);
?DEBUG("cover compiling ~p", [Dir]),
[cover_compile_file(filename:join(Dir, File))
|| File <- Files,
filename:extension(File) == ".beam",
not is_ignored(Dir, File, ExclMods)],
ok;
{error, eacces} ->
?WARN("Directory ~p not readable, modules will not be included in coverage", [Dir]);
{error, enoent} ->
?WARN("Directory ~p not found", [Dir]);
{error, Reason} ->
?WARN("Directory ~p error ~p", [Dir, Reason])
end
@ -332,6 +325,22 @@ cover_compile(State, Dirs) ->
rebar_utils:cleanup_code_path(rebar_state:code_paths(State, default)),
ok.
is_ignored(Dir, File, ExclMods) ->
Ignored = lists:any(fun(Excl) ->
File =:= atom_to_list(Excl) ++ ".beam"
end,
ExclMods),
Ignored andalso ?DEBUG("cover ignoring ~p ~p", [Dir, File]),
Ignored.
cover_compile_file(FileName) ->
case catch(cover:compile_beam(FileName)) of
{error, Reason} ->
?WARN("Cover compilation failed: ~p", [Reason]);
{ok, _} ->
ok
end.
app_dirs(Apps) ->
lists:foldl(fun app_ebin_dirs/2, [], Apps).

正在加载...
取消
保存