class RuboCop::Cop::Style::MutableConstant
This cop checks whether some constant value isn't a mutable literal (e.g. array or hash).
@example
# bad CONST = [1, 2, 3] # good CONST = [1, 2, 3].freeze
Constants
- MSG
Public Instance Methods
autocorrect(node)
click to toggle source
# File lib/rubocop/cop/style/mutable_constant.rb, line 30 def autocorrect(node) expr = node.source_range ->(corrector) { corrector.replace(expr, "#{expr.source}.freeze") } end
on_casgn(node)
click to toggle source
# File lib/rubocop/cop/style/mutable_constant.rb, line 20 def on_casgn(node) _scope, _const_name, value = *node on_assignment(value) end
on_or_asgn(node)
click to toggle source
# File lib/rubocop/cop/style/mutable_constant.rb, line 25 def on_or_asgn(node) lhs, value = *node on_assignment(value) if lhs && lhs.type == :casgn end
Private Instance Methods
on_assignment(value)
click to toggle source
# File lib/rubocop/cop/style/mutable_constant.rb, line 37 def on_assignment(value) return unless value return unless value.mutable_literal? return if FROZEN_STRING_LITERAL_TYPES.include?(value.type) && frozen_string_literals_enabled?(processed_source) add_offense(value, :expression) end