A rebar plugin
$ rebar3 compile
Add the plugin to your rebar config:
{profiles,
[
{lint, [{plugins, [{rebar3_lint, {git, "https://github.com/project-fifo/rebar3_lint.git", {tag, "0.1.11"}}}]}]}
]
}.
Then just call your plugin directly in an existing application:
$ rebar3 as lint lint
===> Fetching rebar3_lint
===> Compiling rebar3_lint
<Plugin Output>
the plugin supports the following configuration options in the rebar.config:
Elvis check configuration (keyword config if placed in application config or elvis.config file)
{elvis, [map()]}.
Specify output format. Default: colors
{elvis_output_format, plain | colors}.
If no elvis
configuation statement is given in the rebar.config
file the
plug-in will look for a elvis.config
file in the project root folder. But
only the config section will be applied (this is an elvis idiosyncrasy). The
outpup format may be configured separately in the rebar.config
{elvis,
[#{dirs => ["apps/*/src", "src"],
filter => "*.erl",
rules => [{elvis_style, line_length,
#{ignore => [],
limit => 100,
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}},
{elvis_style, god_modules,
#{limit => 25,
ignore => []}},
{elvis_style, no_if_expression},
{elvis_style, invalid_dynamic_call,
#{ignore => []}},
{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 => 10}},
{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",
rules => [{elvis_project, no_deps_master_rebar, #{ignore => []}},
{elvis_project, protocol_for_deps_rebar, #{ignore => []}}]
}
]
}