summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Luna <daniel@lunas.se>2012-09-13 16:07:18 -0400
committerTuncer Ayaz <tuncer.ayaz@gmail.com>2012-09-13 22:20:55 +0200
commit7bd318c219bc283d5df16a0401aae00546fc8eea (patch)
tree0e40855d4efca5cb3a58b01a3de49c4dcd86b77a
parenteaad535e316c7719babe42faa011a08e1e8675cb (diff)
xref: allow multiple behaviours and ignore_xref pragmas
-rw-r--r--src/rebar_xref.erl18
1 files changed, 6 insertions, 12 deletions
diff --git a/src/rebar_xref.erl b/src/rebar_xref.erl
index 4b045a0..84b59f6 100644
--- a/src/rebar_xref.erl
+++ b/src/rebar_xref.erl
@@ -146,10 +146,10 @@ filter_away_ignored(UnusedExports) ->
%% any functions marked to ignore. We then use this list to mask any
%% functions marked as unused exports by xref
F = fun(Mod) ->
- Attrs = kf(attributes, Mod:module_info()),
- Ignore = kf(ignore_xref, Attrs),
- Callbacks =
- [B:behaviour_info(callbacks) || B <- kf(behaviour, Attrs)],
+ Attrs = Mod:module_info(attributes),
+ Ignore = keyall(ignore_xref, Attrs),
+ Callbacks = [B:behaviour_info(callbacks)
+ || B <- keyall(behaviour, Attrs)],
[{Mod, F, A} || {F, A} <- Ignore ++ lists:flatten(Callbacks)]
end,
AttrIgnore =
@@ -157,14 +157,8 @@ filter_away_ignored(UnusedExports) ->
lists:map(F, lists:usort([M || {M, _, _} <- UnusedExports]))),
[X || X <- UnusedExports, not lists:member(X, AttrIgnore)].
-
-kf(Key, List) ->
- case lists:keyfind(Key, 1, List) of
- {Key, Value} ->
- Value;
- false ->
- []
- end.
+keyall(Key, List) ->
+ lists:flatmap(fun({K, L}) when Key =:= K -> L; (_) -> [] end, List).
display_mfas([], _Message) ->
ok;