Class: RuboCop::Cop::Layout::LineLength
- Includes:
- CheckLineBreakable, ConfigurableMax, IgnoredPattern, RuboCop::Cop::LineLengthHelp, RangeHelp
- Defined in:
- lib/rubocop/cop/layout/line_length.rb
Overview
This cop 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 Layout cops are recommended to further format the broken lines. (Many of these are enabled by default.)
- ArgumentAlignment
- BlockAlignment
- BlockDelimiters
- BlockEndNewline
- ClosingParenthesisIndentation
- FirstArgumentIndentation
- FirstArrayElementIndentation
- FirstHashElementIndentation
- FirstParameterIndentation
- HashAlignment
- IndentationWidth
- MultilineArrayLineBreaks
- MultilineBlockLayout
- MultilineHashBraceLayout
- MultilineHashKeyLineBreaks
- MultilineMethodArgumentLineBreaks
- ParameterAlignment
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 Util
Instance Attribute Summary
Attributes inherited from Cop
#config, #corrections, #offenses, #processed_source
Instance Method Summary collapse
- #autocorrect(range) ⇒ Object
- #investigate(processed_source) ⇒ Object
- #investigate_post_walk(processed_source) ⇒ Object
- #on_block(node) ⇒ Object
- #on_potential_breakable_node(node) ⇒ Object (also: #on_array, #on_hash, #on_send)
Methods included from CheckLineBreakable
Methods inherited from Cop
#add_offense, all, autocorrect_incompatible_with, badge, #config_to_allow_offenses, #config_to_allow_offenses=, #cop_config, #cop_name, cop_name, #correct, department, #disable_uncorrectable, #duplicate_location?, #excluded_file?, #external_dependency_checksum, #find_location, #highlights, inherited, #initialize, #join_force?, lint?, match?, #message, #messages, #parse, qualified_cop_name, #reason_to_not_correct, #relevant_file?, #target_rails_version, #target_ruby_version
Methods included from AST::Sexp
Methods included from NodePattern::Macros
#def_node_matcher, #def_node_search, #node_search, #node_search_all, #node_search_body, #node_search_first
Methods included from AutocorrectLogic
#autocorrect?, #autocorrect_enabled?, #autocorrect_requested?, #correctable?, #disable_offense, #disable_uncorrectable?, #safe_autocorrect?, #support_autocorrect?
Methods included from IgnoredNode
#ignore_node, #ignored_node?, #part_of_ignored_node?
Methods included from Util
add_parentheses, args_begin, args_end, begins_its_line?, comment_line?, comment_lines?, double_quotes_required?, escape_string, first_part_of_call_chain, interpret_string_escapes, line_range, needs_escaping?, on_node, parentheses?, same_line?, to_string_literal, to_supported_styles, tokens, trim_string_interporation_escape_character
Methods included from PathUtil
absolute?, chdir, hidden_dir?, hidden_file_in_not_hidden_dir?, match_path?, pwd, relative_path, reset_pwd, smart_path
Constructor Details
This class inherits a constructor from RuboCop::Cop::Cop
Instance Method Details
#autocorrect(range) ⇒ Object
91 92 93 94 95 96 97 |
# File 'lib/rubocop/cop/layout/line_length.rb', line 91 def autocorrect(range) return if range.nil? lambda do |corrector| corrector.insert_before(range, "\n") end end |
#investigate(processed_source) ⇒ Object
81 82 83 |
# File 'lib/rubocop/cop/layout/line_length.rb', line 81 def investigate(processed_source) check_for_breakable_semicolons(processed_source) end |
#investigate_post_walk(processed_source) ⇒ Object
85 86 87 88 89 |
# File 'lib/rubocop/cop/layout/line_length.rb', line 85 def investigate_post_walk(processed_source) processed_source.lines.each_with_index do |line, line_index| check_line(line, line_index) end end |
#on_block(node) ⇒ Object
70 71 72 |
# File 'lib/rubocop/cop/layout/line_length.rb', line 70 def on_block(node) check_for_breakable_block(node) end |
#on_potential_breakable_node(node) ⇒ Object Also known as: on_array, on_hash, on_send
74 75 76 |
# File 'lib/rubocop/cop/layout/line_length.rb', line 74 def on_potential_breakable_node(node) check_for_breakable_node(node) end |