Class: RuboCop::Cop::Layout::LineLength
- Extended by:
- AutoCorrector
- Includes:
- AllowedPattern, CheckLineBreakable, EndlessMethodRewriter, RuboCop::Cop::LineLengthHelp, RangeHelp
- Defined in:
- lib/rubocop/cop/layout/line_length.rb
Overview
Checks the length of lines in the source code.
The maximum length is configurable.
The tab size is configured in the IndentationWidth
of the Layout/IndentationStyle cop.
It also ignores a shebang line by default.
This cop has some autocorrection capabilities. It can programmatically shorten certain long lines by inserting line breaks into expressions that can be safely split across lines. These include arrays, hashes, and method calls with argument lists.
If autocorrection is enabled, the following cops are recommended to further format the broken lines. (Many of these are enabled by default.)
Layout/ArgumentAlignmentLayout/ArrayAlignmentLayout/BlockAlignmentLayout/BlockEndNewlineLayout/ClosingParenthesisIndentationLayout/FirstArgumentIndentationLayout/FirstArrayElementIndentationLayout/FirstHashElementIndentationLayout/FirstParameterIndentationLayout/HashAlignmentLayout/IndentationWidthLayout/MultilineArrayLineBreaksLayout/MultilineBlockLayoutLayout/MultilineHashBraceLayoutLayout/MultilineHashKeyLineBreaksLayout/MultilineMethodArgumentLineBreaksLayout/MultilineMethodParameterLineBreaksLayout/ParameterAlignmentStyle/BlockDelimiters
Together, these cops will pretty print hashes, arrays, method calls, etc. For example, let's say the max columns is 25:
Constant Summary collapse
- MSG =
'Line is too long. [%<length>d/%<max>d]'
Constants included from Alignment
Constants included from RangeHelp
RangeHelp::BYTE_ORDER_MARK, RangeHelp::NOT_GIVEN
Constants inherited from Base
Instance Attribute Summary
Attributes inherited from Base
#config, #processed_source, #project_index
Instance Method Summary collapse
- #on_block(node) ⇒ Object (also: #on_numblock, #on_itblock)
- #on_def(node) ⇒ Object (also: #on_defs)
- #on_dstr(node) ⇒ Object
- #on_investigation_end ⇒ Object
- #on_new_investigation ⇒ Object
- #on_potential_breakable_node(node) ⇒ Object (also: #on_array, #on_hash, #on_send, #on_csend)
- #on_str(node) ⇒ Object
Methods included from AutoCorrector
Methods included from EndlessMethodRewriter
Methods included from CheckLineBreakable
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?, #message, #offenses, #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
cop_dir_for, #exclude_limit, read_limits
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
Constructor Details
This class inherits a constructor from RuboCop::Cop::Base
Instance Method Details
#on_block(node) ⇒ Object Also known as: on_numblock, on_itblock
75 76 77 |
# File 'lib/rubocop/cop/layout/line_length.rb', line 75 def on_block(node) check_for_breakable_block(node) end |
#on_def(node) ⇒ Object Also known as: on_defs
97 98 99 100 101 102 103 |
# File 'lib/rubocop/cop/layout/line_length.rb', line 97 def on_def(node) if node.endless? track_endless_method(node) else check_for_breakable_node(node) end end |
#on_dstr(node) ⇒ Object
85 86 87 |
# File 'lib/rubocop/cop/layout/line_length.rb', line 85 def on_dstr(node) check_for_breakable_dstr(node) end |
#on_investigation_end ⇒ Object
112 113 114 115 116 |
# File 'lib/rubocop/cop/layout/line_length.rb', line 112 def on_investigation_end processed_source.lines.each_with_index do |line, line_index| check_line(line, line_index) end end |
#on_new_investigation ⇒ Object
106 107 108 109 110 |
# File 'lib/rubocop/cop/layout/line_length.rb', line 106 def on_new_investigation return unless processed_source.raw_source.include?(';') check_for_breakable_semicolons(processed_source) end |
#on_potential_breakable_node(node) ⇒ Object Also known as: on_array, on_hash, on_send, on_csend
89 90 91 |
# File 'lib/rubocop/cop/layout/line_length.rb', line 89 def on_potential_breakable_node(node) check_for_breakable_node(node) end |
#on_str(node) ⇒ Object
81 82 83 |
# File 'lib/rubocop/cop/layout/line_length.rb', line 81 def on_str(node) check_for_breakable_str(node) end |