diff --git a/src/elvis_style.erl b/src/elvis_style.erl index 1431170..52fe1e7 100644 --- a/src/elvis_style.erl +++ b/src/elvis_style.erl @@ -195,7 +195,7 @@ default(no_common_caveats_call) -> {timer, send_interval, 3}, {erlang, size, 1}]}; default(atom_naming_convention) -> - #{regex => "^([a-z][a-z0-9]*_?)*(_SUITE)?$", enclosed_atoms => ".*"}; + #{regex => "^[a-z](_?[a-z0-9]+)*(_SUITE)?$", enclosed_atoms => ".*"}; %% Not restrictive. Those who want more restrictions can set it like "^[^_]*$" default(numeric_format) -> #{regex => ".*", diff --git a/test/examples/fail_atom_naming_convention.erl b/test/examples/fail_atom_naming_convention.erl index 7cf7f50..2d75f84 100644 --- a/test/examples/fail_atom_naming_convention.erl +++ b/test/examples/fail_atom_naming_convention.erl @@ -12,4 +12,12 @@ for_test() -> '\'\'', '\'startswithbacktick', 'backtick\'inside', - 'backtick at the end\''. + 'backtick at the end\'', + non200_, + '__', % invalid, even when '_' is actually valid + two_underscores__together_are_not_valid, + '_something', % invalid because it starts with underscore + '42_invalid_because_it_starts_with_a_number', + '42invalid', %% even without underscores + weDontSupportCamelCaseHere, + not_even_in_a__SUITE. diff --git a/test/examples/pass_atom_naming_convention.erl b/test/examples/pass_atom_naming_convention.erl index d650e0a..9536ef8 100644 --- a/test/examples/pass_atom_naming_convention.erl +++ b/test/examples/pass_atom_naming_convention.erl @@ -5,4 +5,10 @@ for_test() -> this_is_an_ok_atom, 'and_so_is_this', - 'and_this_1_too'. + 'and_this_1_too', + non_200, + '_', % used by ets/mnesia/etc. + non200, % valid, even without underscores + valid_200even_if_numb3rs_appear_between_letters, + blahblah_SUITE, + x. diff --git a/test/style_SUITE.erl b/test/style_SUITE.erl index c59f94e..10b1a1e 100644 --- a/test/style_SUITE.erl +++ b/test/style_SUITE.erl @@ -1302,7 +1302,7 @@ verify_atom_naming_convention(Config) -> Group = proplists:get_value(group, Config, erl_files), Ext = proplists:get_value(test_file_ext, Config, "erl"), - BaseRegex = "^([a-z][a-z0-9_]+)$", + BaseRegex = "^[a-z](_?[a-z0-9]+)*(_SUITE)?$", % pass PassModule = pass_atom_naming_convention, @@ -1337,37 +1337,37 @@ verify_atom_naming_convention(Config) -> FailModule2 = fail_atom_naming_convention_exception_class, FailPath2 = atom_to_list(FailModule2) ++ "." ++ Ext, - [_, _, _, _, _, _, _, _, _, _] = + [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] = elvis_core_apply_rule(Config, elvis_style, atom_naming_convention, #{regex => BaseRegex, enclosed_atoms => same}, FailPath), - [_, _, _, _, _, _, _, _] = + [_, _, _, _, _, _, _, _, _, _, _] = elvis_core_apply_rule(Config, elvis_style, atom_naming_convention, #{regex => "^([a-zA-Z_]+)$", enclosed_atoms => same}, FailPath), - [_, _] = + [_, _, _, _, _] = elvis_core_apply_rule(Config, elvis_style, atom_naming_convention, #{regex => "^([a-zA-Z_' \\\\]+)$", enclosed_atoms => same}, FailPath), - [_, _, _, _, _, _, _] = + [_, _, _, _, _, _, _, _, _, _] = elvis_core_apply_rule(Config, elvis_style, atom_naming_convention, #{regex => "^([a-zA-Z\-_]+)$", enclosed_atoms => same}, FailPath), - [_] = + [_, _, _, _] = elvis_core_apply_rule(Config, elvis_style, atom_naming_convention, #{regex => "^([a-zA-Z\-_' \\\\]+)$", enclosed_atoms => same}, FailPath), - [] = + [_] = elvis_core_apply_rule(Config, elvis_style, atom_naming_convention, @@ -1380,26 +1380,26 @@ verify_atom_naming_convention(Config) -> #{regex => BaseRegex, ignore => [FailModule]}, FailPath), KeepRegex = "^([a-zA-Z0-9_]+)$", - [_, _, _, _, _, _, _, _] = + [_, _, _, _, _, _, _, _, _, _, _, _] = elvis_core_apply_rule(Config, elvis_style, atom_naming_convention, #{regex => KeepRegex, enclosed_atoms => "^([a-z][a-z0-9A-Z_]*)$"}, FailPath), - [_, _, _, _, _, _] = + [_, _, _, _, _, _, _, _, _, _] = elvis_core_apply_rule(Config, elvis_style, atom_naming_convention, #{regex => KeepRegex, enclosed_atoms => "^([a-z][a-z0-9A-Z_' \\\\]*)$"}, FailPath), - [_, _, _, _, _, _, _] = + [_, _, _, _, _, _, _, _, _, _, _] = elvis_core_apply_rule(Config, elvis_style, atom_naming_convention, #{regex => KeepRegex, enclosed_atoms => "^([a-z][\-a-z0-9A-Z_]*)$"}, FailPath), - [_, _, _, _] = + [_, _, _, _, _, _] = elvis_core_apply_rule(Config, elvis_style, atom_naming_convention, @@ -1414,7 +1414,7 @@ verify_atom_naming_convention(Config) -> FailPath2), _ = case Group of beam_files -> % 'or_THIS' getting stripped of enclosing ' - [_, _, _, _] = + [_, _, _, _, _, _, _, _] = elvis_core_apply_rule(Config, elvis_style, atom_naming_convention, @@ -1422,7 +1422,7 @@ verify_atom_naming_convention(Config) -> enclosed_atoms => "^([\\\\][\-a-z0-9A-Z_' \\\\]*)$"}, FailPath); erl_files -> - [_, _, _, _, _] = + [_, _, _, _, _, _, _, _, _] = elvis_core_apply_rule(Config, elvis_style, atom_naming_convention,