Class: RuboCop::Cop::Style::NumericLiteralPrefix

Inherits:
Cop
  • Object
show all
Includes:
IntegerNode
Defined in:
lib/rubocop/cop/style/numeric_literal_prefix.rb

Overview

This cop checks for octal, hex, binary and decimal literals using uppercase prefixes and corrects them to lowercase prefix or no prefix (in case of decimals). eg. for octal use ‘0o` instead of `0` or `0O`.

Can be configured to use ‘0` only for octal literals using `EnforcedOctalStyle` => `zero_only`

Constant Summary collapse

OCTAL_ZERO_ONLY_REGEX =
/^0[Oo][0-7]+$/
OCTAL_REGEX =
/^0O?[0-7]+$/
HEX_REGEX =
/^0X[0-9A-F]+$/
BINARY_REGEX =
/^0B[01]+$/
DECIMAL_REGEX =
/^0[dD][0-9]+$/
OCTAL_ZERO_ONLY_MSG =
'Use 0 for octal literals.'.freeze
OCTAL_MSG =
'Use 0o for octal literals.'.freeze
HEX_MSG =
'Use 0x for hexadecimal literals.'.freeze
BINARY_MSG =
'Use 0b for binary literals.'.freeze
DECIMAL_MSG =
'Do not use prefixes for decimal literals.'.freeze

Constants included from Util

Util::ASGN_NODES, Util::BYTE_ORDER_MARK, Util::EQUALS_ASGN_NODES, Util::LITERAL_REGEX, Util::OPERATOR_METHODS, Util::SHORTHAND_ASGN_NODES

Instance Attribute Summary

Attributes inherited from Cop

#config, #corrections, #offenses, #processed_source

Instance Method Summary collapse

Methods included from IntegerNode

#integer_part

Methods inherited from Cop

#add_offense, all, #config_to_allow_offenses, #config_to_allow_offenses=, #cop_config, #cop_name, cop_name, cop_type, #correct, #debug?, #details, #display_cop_names?, #display_style_guide?, #excluded_file?, #extra_details?, #highlights, inherited, #initialize, #join_force?, lint?, match?, #message, #messages, non_rails, #parse, qualified_cop_name, #reference_url, #relevant_file?, #style_guide_url, #target_ruby_version

Methods included from Sexp

#s

Methods included from NodePattern::Macros

#def_node_matcher, #def_node_search, #node_search_body

Methods included from AutocorrectLogic

#autocorrect?, #autocorrect_enabled?, #autocorrect_requested?, #support_autocorrect?

Methods included from IgnoredNode

#ignore_node, #ignored_node?, #part_of_ignored_node?

Methods included from Util

begins_its_line?, block_length, comment_line?, directions, double_quotes_acceptable?, double_quotes_required?, effective_column, ends_its_line?, escape_string, first_part_of_call_chain, interpret_string_escapes, line_range, move_pos, needs_escaping?, numeric_range_size, on_node, operator?, parentheses?, parenthesized_call?, range_with_surrounding_comma, range_with_surrounding_space, source_range, strip_quotes, to_string_literal, to_symbol_literal, within_node?

Methods included from PathUtil

absolute?, match_path?, relative_path

Constructor Details

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

Instance Method Details

#on_int(node) ⇒ Object



29
30
31
32
33
34
35
# File 'lib/rubocop/cop/style/numeric_literal_prefix.rb', line 29

def on_int(node)
  type = literal_type(node)
  return unless type

  msg = self.class.const_get("#{type.upcase}_MSG")
  add_offense(node, :expression, msg)
end