diff options
| author | Fred Hebert <mononcqc@ferd.ca> | 2017-06-07 20:12:49 -0400 | 
|---|---|---|
| committer | Fred Hebert <mononcqc@ferd.ca> | 2017-06-07 21:43:18 -0400 | 
| commit | 9a6f04a2d9d00167e0b853776b60b12b5c5dcc57 (patch) | |
| tree | e1bf69f66357c7e39e3eb1c48050d9268ef1582b /src | |
| parent | 8750a677695157af3655d6a354215a4a43fab73d (diff) | |
Fix xref compile hook on deps
If xref analysis is being run by a dependency during its compilation
phase, the xref provider will try to add that deps' parents to the check
job while the ebin/ directories for them do not exist. This causes a
crash.
This patch makes it so directories are only added if they are existing,
preventing failure on any compile hook for dependencies and allowing
successful compilation as a best effort.
Diffstat (limited to 'src')
| -rw-r--r-- | src/rebar_prv_xref.erl | 7 | 
1 files changed, 5 insertions, 2 deletions
| diff --git a/src/rebar_prv_xref.erl b/src/rebar_prv_xref.erl index c4e72e7..51154b5 100644 --- a/src/rebar_prv_xref.erl +++ b/src/rebar_prv_xref.erl @@ -97,8 +97,11 @@ prepare(State) ->                               rebar_state:get(State, xref_warnings, false)},                              {verbose, rebar_log:is_verbose(State)}]), -    [{ok, _} = xref:add_directory(xref, rebar_app_info:ebin_dir(App)) -     || App <- rebar_state:project_apps(State)], +    [{ok, _} = xref:add_directory(xref, Dir) +     || App <- rebar_state:project_apps(State), +        %% the directory may not exist in rare cases of a compile +        %% hook of a dep running xref prior to the full job being done +        Dir <- [rebar_app_info:ebin_dir(App)], filelib:is_dir(Dir)],      %% Get list of xref checks we want to run      ConfXrefChecks = rebar_state:get(State, xref_checks, | 
