Интересно, разработчики rebar3 ручками открывают ошибки компиляции, такой прогресс как compile-mode до них не дошёл? Иначе как объяснить, что они спекциально берут и форматируют ошибки красивенько, но так что СУКА никаких регулярок не напасёшься. К примеру:
src/brod_utils.erl
324: The call kpro:connect(Endpoint::{integer(),pos_integer()}, ConnCfg::[{atom(),_}] | #{'client_id'=>_, 'connect_timeout'=>_, 'debug'=>_, 'extra_sock_opts'=>_, 'nolink'=>_, 'query_api_versions'=>_, 'request_timeout'=>_, 'sasl'=>_, 'ssl'=>_}) will never return since the success typing is ({atom() | binary() | string(),non_neg_integer()}, [{'client_id' | 'connect_timeout' | 'debug' | 'extra_sock_opts' | 'nolink' | 'query_api_versions' | 'request_timeout' | 'sasl' | 'ssl',_}] | #{'client_id'=>_, 'connect_timeout'=>_, 'debug'=>_, 'extra_sock_opts'=>_, 'nolink'=>_, 'query_api_versions'=>_, 'request_timeout'=>_, 'sasl'=>_, 'ssl'=>_}) -> {'error',_} | {'ok',pid()} and the contract is (endpoint(), conn_config()) -> {'ok',connection()} | {'error',any()}
406: Invalid type specification for function brod_utils:list_groups/2. The success typing is ({atom() | binary() | [any()],non_neg_integer()},[{_,_}] | #{'client_id'=>_, 'connect_timeout'=>_, 'debug'=>_, 'extra_sock_opts'=>_, 'nolink'=>_, 'query_api_versions'=>_, 'request_timeout'=>_, 'sasl'=>_, 'ssl'=>_}) -> any()
430: Invalid type specification for function brod_utils:describe_groups/3. The success typing is ({atom() | binary() | [any()],non_neg_integer()},[{_,_}] | #{'client_id'=>_, 'connect_timeout'=>_, 'debug'=>_, 'extra_sock_opts'=>_, 'nolink'=>_, 'query_api_versions'=>_, 'request_timeout'=>_, 'sasl'=>_, 'ssl'=>_},_) -> any()
А ошибки edoc тоже красивенькие:
brod_utils.erl: at line 566: syntax error before: '?BIND_STACKTRACE'