class RuboCop::Cop::Naming::MethodName
def api_gen1; end
def release_v1; end
# bad
@example ForbiddenPatterns: [‘_v1z’, ‘_gen1z’]
def super; end
def def; end
# bad
@example ForbiddenIdentifiers: [‘def’, ‘super’]
def fooBar; end
# good
def foo_bar; end
# bad
@example EnforcedStyle: camelCase
def foo_bar; end
# good
def fooBar; end
# bad
@example EnforcedStyle: snake_case (default)
—-
- ‘_gen1z’
- ‘_v1z’
ForbiddenPatterns:
- ‘super’
- ‘def’
ForbiddenIdentifiers:
Naming/MethodName:
—-
[source,yaml]
using ‘ForbiddenIdentifiers` or `ForbiddenPatterns`:
As well, you can also forbid specific method names or regexp patterns
—-
- ’AonSelectionClearedz‘
- ’AonSelectionBulkChangez‘
AllowedPatterns:
Naming/MethodName:
—-
[source,yaml]
The cop can be configured with `AllowedPatterns` to allow certain regexp patterns:
Method names matching patterns are always allowed.
snake_case or camelCase, for their names.
Makes sure that all methods use the configured style,
def attr_name(name_item)
def attr_name(name_item) sym_name(name_item) || str_name(name_item) end
def forbidden_name?(name)
def forbidden_name?(name) forbidden_identifier?(name) || forbidden_pattern?(name) end
def message(style)
def message(style) format(MSG, style: style) end
def on_def(node)
def on_def(node) return if node.operator_method? || matches_allowed_pattern?(node.method_name) if forbidden_name?(node.method_name.to_s) register_forbidden_name(node) else check_name(node, node.method_name, node.loc.name) end end
def on_send(node)
def on_send(node) return unless (attrs = node.attribute_accessor?) attrs.last.each do |name_item| name = attr_name(name_item) next if !name || matches_allowed_pattern?(name) if forbidden_name?(name.to_s) register_forbidden_name(node) else check_name(node, name, range_position(node)) end end end
def range_position(node)
def range_position(node) selector_end_pos = node.loc.selector.end_pos + 1 expr_end_pos = node.source_range.end_pos range_between(selector_end_pos, expr_end_pos) end
def register_forbidden_name(node)
def register_forbidden_name(node) if node.any_def_type? name_node = node.loc.name method_name = node.method_name else attrs = node.attribute_accessor? name_node = attrs.last.last method_name = attr_name(name_node) end message = format(MSG_FORBIDDEN, identifier: method_name) add_offense(name_node, message: message) end