Skip to content

Commit 4e10155

Browse files
authored
Merge pull request #882 from acw224/relx_filter_callback
State extended with a filter method to filter xref_warnings
2 parents c79990d + 77f9b1e commit 4e10155

File tree

3 files changed

+15
-2
lines changed

3 files changed

+15
-2
lines changed

rebar.config

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
{rlx_state, format, 1},
4141
{rlx_state, format, 2},
4242
{rlx_state, dev_mode, 1},
43+
{rlx_state, filter_xref_warning, 2},
4344

4445
%% used in tests
4546
{rlx_app_info, new, 5},

src/rlx_assemble.erl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -734,7 +734,9 @@ maybe_check_for_undefined_functions_(State, Release) ->
734734
%% release
735735
case xref:analyze(Rf, undefined_function_calls) of
736736
{ok, Warnings} ->
737-
format_xref_warning(Warnings);
737+
FilterMethod = rlx_state:filter_xref_warning(State),
738+
FilteredWarnings = FilterMethod(Warnings),
739+
format_xref_warning(FilteredWarnings);
738740
{error, _} = Error ->
739741
?log_warn(
740742
"Error running xref analyze: ~s",

src/rlx_state.erl

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,9 @@
9393
exref/2,
9494
check_for_undefined_functions/1,
9595
check_for_undefined_functions/2,
96-
is_relx_sasl/1]).
96+
is_relx_sasl/1,
97+
filter_xref_warning/1,
98+
filter_xref_warning/2]).
9799

98100
-type mode() :: dev | prod | minimal.
99101

@@ -133,6 +135,7 @@
133135
extended_start_script_extensions=[] :: list(),
134136
generate_start_script=true :: boolean(),
135137
include_start_scripts_for=undefined :: [atom()] | undefined,
138+
filter_xref_warning = fun(Warnings) -> Warnings end :: fun((list({mfa(), mfa()})) -> list({mfa(), mfa()})),
136139

137140
%% `dev_mode' is for backwards compatibility
138141
dev_mode=false :: boolean(),
@@ -261,6 +264,13 @@ root_dir(#state_t{root_dir=RootDir}) ->
261264
root_dir(State, RootDir) ->
262265
State#state_t{root_dir=filename:absname(RootDir)}.
263266

267+
-spec filter_xref_warning(t()) -> fun((list({mfa(), mfa()})) -> list({mfa(), mfa()})).
268+
filter_xref_warning(#state_t{filter_xref_warning=Filter}) -> Filter.
269+
270+
-spec filter_xref_warning(t(), fun((list({mfa(), mfa()})) -> list({mfa(), mfa()}))) -> t().
271+
filter_xref_warning(State, Filter) -> State#state_t{filter_xref_warning=Filter}.
272+
273+
264274
-spec add_configured_release(t(), rlx_release:t()) -> t().
265275
add_configured_release(M=#state_t{configured_releases=Releases}, Release) ->
266276
M#state_t{configured_releases=Releases#{{rlx_release:name(Release),

0 commit comments

Comments
 (0)