/rebar3_lint

rebar3 plugin for elvis

Primary LanguageErlangOtherNOASSERTION

rebar3_lint

A rebar plugin

Build

$ rebar3 compile

Use

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>

Configuration

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

This is the default if no config is provided

{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 => []}}]
      }
    ]
}