Class: RuboCop::Cop::Naming::VariableName

Inherits:
Base
  • Object
show all
Includes:
AllowedIdentifiers, AllowedPattern, ConfigurableNaming, ForbiddenIdentifiers, ForbiddenPattern
Defined in:
lib/rubocop/cop/naming/variable_name.rb

Overview

Checks that the configured style (snake_case or camelCase) is used for all variable names. This includes local variables, instance variables, class variables, method arguments (positional, keyword, rest or block), and block arguments.

The cop can also be configured to forbid using specific names for variables, using ‘ForbiddenIdentifiers` or `ForbiddenPatterns`. In addition to the above, this applies to global variables as well.

Method definitions and method calls are not affected by this cop.

Examples:

EnforcedStyle: snake_case (default)

# bad
fooBar = 1

# good
foo_bar = 1

EnforcedStyle: camelCase

# bad
foo_bar = 1

# good
fooBar = 1

AllowedIdentifiers: [‘fooBar’]

# good (with EnforcedStyle: snake_case)
fooBar = 1

AllowedPatterns: [‘_vd+z’]

# good (with EnforcedStyle: camelCase)
release_v1 = true

ForbiddenIdentifiers: [‘fooBar’]

# bad (in all cases)
fooBar = 1
@fooBar = 1
@@fooBar = 1
$fooBar = 1

ForbiddenPatterns: [‘_vd+z’]

# bad (in all cases)
release_v1 = true
@release_v1 = true
@@release_v1 = true
$release_v1 = true

Constant Summary collapse

MSG =
'Use %<style>s for variable names.'
MSG_FORBIDDEN =
'`%<identifier>s` is forbidden, use another name instead.'

Constants included from ForbiddenIdentifiers

ForbiddenIdentifiers::SIGILS

Constants included from ConfigurableNaming

ConfigurableNaming::FORMATS

Constants included from AllowedIdentifiers

AllowedIdentifiers::SIGILS

Constants inherited from Base

Base::RESTRICT_ON_SEND

Instance Attribute Summary

Attributes inherited from Base

#config, #processed_source

Instance Method Summary collapse

Methods included from ForbiddenPattern

#forbidden_pattern?, #forbidden_patterns

Methods included from ForbiddenIdentifiers

#forbidden_identifier?, #forbidden_identifiers

Methods included from ConfigurableFormatting

#check_name, #class_emitter_method?, #report_opposing_styles

Methods included from ConfigurableEnforcedStyle

#alternative_style, #alternative_styles, #ambiguous_style_detected, #correct_style_detected, #detected_style, #detected_style=, #no_acceptable_style!, #no_acceptable_style?, #opposite_style_detected, #style, #style_configured?, #style_detected, #style_parameter_name, #supported_styles, #unexpected_style_detected

Methods included from AllowedIdentifiers

#allowed_identifier?, #allowed_identifiers

Methods inherited from Base

#active_support_extensions_enabled?, #add_global_offense, #add_offense, #always_autocorrect?, autocorrect_incompatible_with, badge, #begin_investigation, #callbacks_needed, callbacks_needed, #config_to_allow_offenses, #config_to_allow_offenses=, #contextual_autocorrect?, #cop_config, cop_name, #cop_name, department, documentation_url, exclude_from_registry, #excluded_file?, #external_dependency_checksum, inherited, #initialize, #inspect, joining_forces, lint?, match?, #offenses, #on_investigation_end, #on_new_investigation, #on_other_file, #parse, #parser_engine, #ready, #relevant_file?, requires_gem, #string_literals_frozen_by_default?, support_autocorrect?, support_multiple_source?, #target_gem_version, #target_rails_version, #target_ruby_version

Methods included from ExcludeLimit

#exclude_limit

Methods included from AutocorrectLogic

#autocorrect?, #autocorrect_enabled?, #autocorrect_requested?, #autocorrect_with_disable_uncorrectable?, #correctable?, #disable_uncorrectable?, #safe_autocorrect?

Methods included from IgnoredNode

#ignore_node, #ignored_node?, #part_of_ignored_node?

Methods included from Util

silence_warnings

Constructor Details

This class inherits a constructor from RuboCop::Cop::Base

Instance Method Details

#on_gvasgn(node) ⇒ Object

Only forbidden names are checked for global variable assignment

[View source]

88
89
90
91
92
93
# File 'lib/rubocop/cop/naming/variable_name.rb', line 88

def on_gvasgn(node)
  return unless (name = node.name)
  return unless forbidden_name?(name)

  register_forbidden_name(node)
end

#on_lvasgn(node) ⇒ Object Also known as: on_ivasgn, on_cvasgn, on_arg, on_optarg, on_restarg, on_kwoptarg, on_kwarg, on_kwrestarg, on_blockarg, on_lvar

[View source]

66
67
68
69
70
71
72
73
74
75
# File 'lib/rubocop/cop/naming/variable_name.rb', line 66

def on_lvasgn(node)
  return unless (name = node.name)
  return if allowed_identifier?(name)

  if forbidden_name?(name)
    register_forbidden_name(node)
  else
    check_name(node, name, node.loc.name)
  end
end

#valid_name?(node, name, given_style = style) ⇒ Boolean

Returns:

  • (Boolean)
[View source]

62
63
64
# File 'lib/rubocop/cop/naming/variable_name.rb', line 62

def valid_name?(node, name, given_style = style)
  super || matches_allowed_pattern?(name)
end