[
 {
   elvis,
   [
    {config,
     [#{dirs => ["src"],
        filter => "*.erl",
        ruleset => erl_files,
        rules => [{elvis_text_style, line_length, #{limit => 120, skip_comments => whole_line}},
                  %% Ranch 利用のため Transport:send/2 的なのが必要なので ...
                  {elvis_style, invalid_dynamic_call, disable},
                  %% snake_case じゃない場合は本来 '' で囲うべき
                  {elvis_style, atom_naming_convention, #{regex => "^([a-z][a-zA-Z0-9_]*_?)*(_SUITE)?$", enclosed_atoms => ".*"}},
                  {elvis_style, module_naming_convention, #{regex => "^([a-z][a-z0-9]*)(_[a-z0-9]+)*(_SUITE)?$"}},
                  {elvis_style, variable_naming_convention, #{regex => "^(_?[A-Z][0-9a-zA-Z_]*)$"}},

                  {elvis_style, nesting_level, disable},
                  {elvis_style, god_modules, disable},
                  {elvis_style, state_record_and_type, disable},
                  {elvis_style, no_block_expressions, disable},
                  {elvis_style, export_used_types, disable},
                  {elvis_style, private_data_types, disable},
                  %% 要検討
                  {elvis_style, no_single_clause_case, disable},
                  %% 要検討
                  {elvis_style, max_function_arity, disable},
                  %% 要検討
                  {elvis_style, operator_spaces, disable},
                  %% 要検討
                  {elvis_style, no_spec_with_records, disable},
                  %% 要検討
                  {elvis_style, dont_repeat_yourself, disable}]
       },
      #{dirs => ["."],
        filter => "rebar.config",
        ruleset => rebar_config,
        rules => [{elvis_project, protocol_for_deps}]
       },
      #{dirs => ["."],
        filter => "elvis.config",
        ruleset => elvis_config
       }
     ]
    }
   ]
 }
].