rebar.config

%% -*- erlang -*-
{cover_enabled, true}.
{erl_opts, [debug_info, warnings_as_errors, {parse_transform, lager_transform}]}.
{edoc_opts, [{dir, "doc"}]}.
{eunit_opts, [{report,{eunit_surefire,[{dir,"."}]}}]}.
{deps,
 [
  {lager, "2.1.1"},
  {riak_dt, "2.1.1"},
  {jsx, "1.4.5"},
  fifo_utils,
  jsxd,
  libsnarlmatch
 ]}.

{profiles,
 [
  {lint,  [{plugins, [{rebar3_lint, {git, "https://github.com/project-fifo/rebar3_lint.git", {tag, "0.1.3"}}}]}]},
  {eqc,
   [{erl_opts, [{d, 'EQC'}]},
    {deps, [fqc]},
    {plugins, [rebar3_eqc]}]}]}.

{xref_checks, [
               %% since vlock isn't here ...
               %% undefined_function_calls
               %% undefined_functions,
               locals_not_used,
               deprecated_function_calls, deprecated_functions]}.
    {config,
     [#{dirs => ["src"],
        filter => "*.erl",
        rules => [{elvis_style, line_length,
                   #{ignore => [],
                     limit => 80,
                     skip_comments => false}},
                  {elvis_style, no_tabs},
                  {elvis_style, no_trailing_whitespace},
                  {elvis_style, macro_names, #{ignore => []}},
                  {elvis_style, macro_module_names},
                  {elvis_style, operator_spaces, #{rules => [{right, ","},
                                                             {right, "++"},
                                                             {left, "++"}]}},
                  {elvis_style, nesting_level, #{level => 3}},
                  %% we don't check for god modules here since they are all
                  %% scoped
                  %%{elvis_style, god_modules, #{limit => 25, ignore => []}},
                  {elvis_style, no_if_expression},
                  {elvis_style, invalid_dynamic_call,
                   #{ignore => [old_map, fifo_dt]}},
                  {elvis_style, used_ignored_variable},
                  {elvis_style, no_behavior_info},
                  {
                    elvis_style,
                    module_naming_convention,
                    #{regex => "^[a-z]([a-z0-9]*_?)*(_SUITE)?$",
                      ignore => []}
                  },
                  {
                    elvis_style,
                    function_naming_convention,
                    #{regex => "^([a-z][a-z0-9]*_?)*$"}
                  },
                  {elvis_style, state_record_and_type},
                  {elvis_style, no_spec_with_records},
                  {elvis_style, dont_repeat_yourself, #{min_complexity => 11}},
                  {elvis_style, no_debug_call,
                   #{ignore => []}}
                 ]
       },
      #{dirs => ["."],
        filter => "Makefile",
        rules => [{elvis_project, no_deps_master_erlang_mk, #{ignore => []}},
                  {elvis_project, protocol_for_deps_erlang_mk, #{ignore => []}}]
       },
      #{dirs => ["."],
        filter => "rebar.config",
        %% on the test branch master deps are OK
        rules => [%{elvis_project, no_deps_master_rebar, #{ignore => []}},
                  {elvis_project, protocol_for_deps_rebar, #{ignore => []}}]
       },
      #{dirs => ["."],
        filter => "elvis.config",
        rules => [{elvis_project, old_configuration_format}]
       }
     ]
    }.