.rubocop.yml
AllCops:
DisabledByDefault: true
DisplayCopNames: true
DisplayStyleGuide: true
SuggestExtensions: false
TargetRubyVersion: 2.7
# Department 'Bundler' (4):
Bundler/DuplicatedGem:
Description: Checks for duplicate gem entries in Gemfile.
Enabled: true
VersionAdded: '0.46'
Include:
- "**/*.gemfile"
- "**/Gemfile"
- "**/gems.rb"
# Supports --auto-correct
Bundler/InsecureProtocolSource:
Description: The source `:gemcutter`, `:rubygems` and `:rubyforge` are deprecated
because HTTP requests are insecure. Please change your source to 'https://rubygems.org'
if possible, or 'http://rubygems.org' if not.
Enabled: true
VersionAdded: '0.50'
Include:
- "**/*.gemfile"
- "**/Gemfile"
- "**/gems.rb"
# Supports --auto-correct
Bundler/OrderedGems:
Description: Gems within groups in the Gemfile should be alphabetically sorted.
Enabled: true
VersionAdded: '0.46'
VersionChanged: '0.47'
TreatCommentsAsGroupSeparators: true
ConsiderPunctuation: false
Include:
- "**/*.gemfile"
- "**/Gemfile"
- "**/gems.rb"
# Department 'Gemspec' (4):
Gemspec/DuplicatedAssignment:
Description: An attribute assignment method calls should be listed only once in a
gemspec.
Enabled: true
VersionAdded: '0.52'
Include:
- "**/*.gemspec"
# Supports --auto-correct
Gemspec/OrderedDependencies:
Description: Dependencies in the gemspec should be alphabetically sorted.
Enabled: true
VersionAdded: '0.51'
TreatCommentsAsGroupSeparators: true
ConsiderPunctuation: false
Include:
- "**/*.gemspec"
Gemspec/RequiredRubyVersion:
Description: Checks that `required_ruby_version` of gemspec is specified and equal
to `TargetRubyVersion` of .rubocop.yml.
Enabled: true
VersionAdded: '0.52'
VersionChanged: '0.89'
Include:
- "**/*.gemspec"
Gemspec/RubyVersionGlobalsUsage:
Description: Checks usage of RUBY_VERSION in gemspec.
StyleGuide: "#no-ruby-version-in-the-gemspec"
Enabled: true
VersionAdded: '0.72'
Include:
- "**/*.gemspec"
# Department 'Layout' (92):
# Supports --auto-correct
Layout/AccessModifierIndentation:
Description: Check indentation of private/protected visibility modifiers.
StyleGuide: "#indent-public-private-protected"
Enabled: true
VersionAdded: '0.49'
EnforcedStyle: indent
SupportedStyles:
- outdent
- indent
IndentationWidth:
# Supports --auto-correct
Layout/ArgumentAlignment:
Description: Align the arguments of a method call if they span more than one line.
StyleGuide: "#no-double-indent"
Enabled: true
VersionAdded: '0.68'
VersionChanged: '0.77'
EnforcedStyle: with_first_argument
SupportedStyles:
- with_first_argument
- with_fixed_indentation
IndentationWidth:
# Supports --auto-correct
Layout/ArrayAlignment:
Description: Align the elements of an array literal if they span more than one line.
StyleGuide: "#no-double-indent"
Enabled: true
VersionAdded: '0.49'
VersionChanged: '0.77'
EnforcedStyle: with_first_element
SupportedStyles:
- with_first_element
- with_fixed_indentation
IndentationWidth:
# Supports --auto-correct
Layout/AssignmentIndentation:
Description: Checks the indentation of the first line of the right-hand-side of a
multi-line assignment.
Enabled: true
VersionAdded: '0.49'
VersionChanged: '0.77'
IndentationWidth:
# Supports --auto-correct
Layout/BeginEndAlignment:
Description: Align ends corresponding to begins correctly.
Enabled: true
VersionAdded: '0.91'
EnforcedStyleAlignWith: start_of_line
SupportedStylesAlignWith:
- start_of_line
- begin
Severity: warning
# Supports --auto-correct
Layout/BlockAlignment:
Description: Align block ends correctly.
Enabled: true
VersionAdded: '0.53'
EnforcedStyleAlignWith: either
SupportedStylesAlignWith:
- either
- start_of_block
- start_of_line
# Supports --auto-correct
Layout/BlockEndNewline:
Description: Put end statement of multiline block on its own line.
Enabled: true
VersionAdded: '0.49'
# Supports --auto-correct
Layout/CaseIndentation:
Description: Indentation of when in a case/when/[else/]end.
StyleGuide: "#indent-when-to-case"
Enabled: true
VersionAdded: '0.49'
EnforcedStyle: case
SupportedStyles:
- case
- end
IndentOneStep: false
IndentationWidth:
# Supports --auto-correct
Layout/ClosingHeredocIndentation:
Description: Checks the indentation of here document closings.
Enabled: true
VersionAdded: '0.57'
# Supports --auto-correct
Layout/ClosingParenthesisIndentation:
Description: Checks the indentation of hanging closing parentheses.
Enabled: true
VersionAdded: '0.49'
# Supports --auto-correct
Layout/CommentIndentation:
Description: Indentation of comments.
Enabled: true
VersionAdded: '0.49'
# Supports --auto-correct
Layout/ConditionPosition:
Description: Checks for condition placed in a confusing position relative to the keyword.
StyleGuide: "#same-line-condition"
Enabled: true
VersionAdded: '0.53'
VersionChanged: '0.83'
# Supports --auto-correct
Layout/DefEndAlignment:
Description: Align ends corresponding to defs correctly.
Enabled: true
VersionAdded: '0.53'
EnforcedStyleAlignWith: start_of_line
SupportedStylesAlignWith:
- start_of_line
- def
Severity: warning
# Supports --auto-correct
Layout/DotPosition:
Description: Checks the position of the dot in multi-line method calls.
StyleGuide: "#consistent-multi-line-chains"
Enabled: true
VersionAdded: '0.49'
EnforcedStyle: leading
SupportedStyles:
- leading
- trailing
# Supports --auto-correct
Layout/ElseAlignment:
Description: Align elses and elsifs correctly.
Enabled: true
VersionAdded: '0.49'
# Supports --auto-correct
Layout/EmptyComment:
Description: Checks empty comment.
Enabled: true
VersionAdded: '0.53'
AllowBorderComment: true
AllowMarginComment: true
# Supports --auto-correct
Layout/EmptyLineAfterGuardClause:
Description: Add empty line after guard clause.
Enabled: true
VersionAdded: '0.56'
VersionChanged: '0.59'
# Supports --auto-correct
Layout/EmptyLineAfterMagicComment:
Description: Add an empty line after magic comments to separate them from code.
StyleGuide: "#separate-magic-comments-from-code"
Enabled: true
VersionAdded: '0.49'
# Supports --auto-correct
Layout/EmptyLineBetweenDefs:
Description: Use empty lines between defs.
StyleGuide: "#empty-lines-between-methods"
Enabled: true
VersionAdded: '0.49'
AllowAdjacentOneLineDefs: false
NumberOfEmptyLines: 1
# Supports --auto-correct
Layout/EmptyLines:
Description: Don't use several empty lines in a row.
StyleGuide: "#two-or-more-empty-lines"
Enabled: true
VersionAdded: '0.49'
# Supports --auto-correct
Layout/EmptyLinesAroundAccessModifier:
Description: Keep blank lines around access modifiers.
StyleGuide: "#empty-lines-around-access-modifier"
Enabled: true
VersionAdded: '0.49'
EnforcedStyle: around
SupportedStyles:
- around
- only_before
Reference:
- https://edgeguides.rubyonrails.org/contributing_to_ruby_on_rails.html#follow-the-coding-conventions
# Supports --auto-correct
Layout/EmptyLinesAroundArguments:
Description: Keeps track of empty lines around method arguments.
Enabled: true
VersionAdded: '0.52'
# Supports --auto-correct
Layout/EmptyLinesAroundAttributeAccessor:
Description: Keep blank lines around attribute accessors.
StyleGuide: "#empty-lines-around-attribute-accessor"
Enabled: true
VersionAdded: '0.83'
VersionChanged: '0.84'
AllowAliasSyntax: true
AllowedMethods:
- alias_method
- public
- protected
- private
# Supports --auto-correct
Layout/EmptyLinesAroundBeginBody:
Description: Keeps track of empty lines around begin-end bodies.
StyleGuide: "#empty-lines-around-bodies"
Enabled: true
VersionAdded: '0.49'
# Supports --auto-correct
Layout/EmptyLinesAroundBlockBody:
Description: Keeps track of empty lines around block bodies.
StyleGuide: "#empty-lines-around-bodies"
Enabled: true
VersionAdded: '0.49'
EnforcedStyle: no_empty_lines
SupportedStyles:
- empty_lines
- no_empty_lines
# Supports --auto-correct
Layout/EmptyLinesAroundClassBody:
Description: Keeps track of empty lines around class bodies.
StyleGuide: "#empty-lines-around-bodies"
Enabled: true
VersionAdded: '0.49'
VersionChanged: '0.53'
EnforcedStyle: no_empty_lines
SupportedStyles:
- empty_lines
- empty_lines_except_namespace
- empty_lines_special
- no_empty_lines
- beginning_only
- ending_only
# Supports --auto-correct
Layout/EmptyLinesAroundExceptionHandlingKeywords:
Description: Keeps track of empty lines around exception handling keywords.
StyleGuide: "#empty-lines-around-bodies"
Enabled: true
VersionAdded: '0.49'
# Supports --auto-correct
Layout/EmptyLinesAroundMethodBody:
Description: Keeps track of empty lines around method bodies.
StyleGuide: "#empty-lines-around-bodies"
Enabled: true
VersionAdded: '0.49'
# Supports --auto-correct
Layout/EmptyLinesAroundModuleBody:
Description: Keeps track of empty lines around module bodies.
StyleGuide: "#empty-lines-around-bodies"
Enabled: true
VersionAdded: '0.49'
EnforcedStyle: no_empty_lines
SupportedStyles:
- empty_lines
- empty_lines_except_namespace
- empty_lines_special
- no_empty_lines
# Supports --auto-correct
Layout/EndAlignment:
Description: Align ends correctly.
Enabled: true
VersionAdded: '0.53'
EnforcedStyleAlignWith: keyword
SupportedStylesAlignWith:
- keyword
- variable
- start_of_line
Severity: warning
Layout/EndOfLine:
Description: Use Unix-style line endings.
StyleGuide: "#crlf"
Enabled: true
VersionAdded: '0.49'
EnforcedStyle: native
SupportedStyles:
- native
- lf
- crlf
# Supports --auto-correct
Layout/ExtraSpacing:
Description: Do not use unnecessary spacing.
Enabled: true
VersionAdded: '0.49'
AllowForAlignment: false
AllowBeforeTrailingComments: false
ForceEqualSignAlignment: false
# Supports --auto-correct
Layout/FirstArgumentIndentation:
Description: Checks the indentation of the first argument in a method call.
Enabled: true
VersionAdded: '0.68'
VersionChanged: '0.77'
EnforcedStyle: special_for_inner_method_call_in_parentheses
SupportedStyles:
- consistent
- consistent_relative_to_receiver
- special_for_inner_method_call
- special_for_inner_method_call_in_parentheses
IndentationWidth:
# Supports --auto-correct
Layout/FirstArrayElementIndentation:
Description: Checks the indentation of the first element in an array literal.
Enabled: true
VersionAdded: '0.68'
VersionChanged: '0.77'
EnforcedStyle: special_inside_parentheses
SupportedStyles:
- special_inside_parentheses
- consistent
- align_brackets
IndentationWidth:
# Supports --auto-correct
Layout/FirstHashElementIndentation:
Description: Checks the indentation of the first key in a hash literal.
Enabled: true
VersionAdded: '0.68'
VersionChanged: '0.77'
EnforcedStyle: special_inside_parentheses
SupportedStyles:
- special_inside_parentheses
- consistent
- align_braces
IndentationWidth:
# Supports --auto-correct
Layout/FirstParameterIndentation:
Description: Checks the indentation of the first parameter in a method definition.
Enabled: true
VersionAdded: '0.49'
VersionChanged: '0.77'
EnforcedStyle: consistent
SupportedStyles:
- consistent
- align_parentheses
IndentationWidth:
# Supports --auto-correct
Layout/HashAlignment:
Description: Align the elements of a hash literal if they span more than one line.
Enabled: true
AllowMultipleStyles: true
VersionAdded: '0.49'
VersionChanged: '0.77'
EnforcedHashRocketStyle: key
SupportedHashRocketStyles:
- key
- separator
- table
EnforcedColonStyle: key
SupportedColonStyles:
- key
- separator
- table
EnforcedLastArgumentHashStyle: always_inspect
SupportedLastArgumentHashStyles:
- always_inspect
- always_ignore
- ignore_implicit
- ignore_explicit
# Supports --auto-correct
Layout/HeredocIndentation:
Description: This cop checks the indentation of the here document bodies.
StyleGuide: "#squiggly-heredocs"
Enabled: true
VersionAdded: '0.49'
VersionChanged: '0.85'
# Supports --auto-correct
Layout/IndentationConsistency:
Description: Keep indentation straight.
StyleGuide: "#spaces-indentation"
Enabled: true
VersionAdded: '0.49'
EnforcedStyle: normal
SupportedStyles:
- normal
- indented_internal_methods
Reference:
- https://edgeguides.rubyonrails.org/contributing_to_ruby_on_rails.html#follow-the-coding-conventions
# Supports --auto-correct
Layout/IndentationStyle:
Description: Consistent indentation either with tabs only or spaces only.
StyleGuide: "#spaces-indentation"
Enabled: true
VersionAdded: '0.49'
VersionChanged: '0.82'
IndentationWidth:
EnforcedStyle: spaces
SupportedStyles:
- spaces
- tabs
# Supports --auto-correct
Layout/IndentationWidth:
Description: Use 2 spaces for indentation.
StyleGuide: "#spaces-indentation"
Enabled: true
VersionAdded: '0.49'
Width: 2
AllowedPatterns: []
# Supports --auto-correct
Layout/InitialIndentation:
Description: Checks the indentation of the first non-blank non-comment line in a file.
Enabled: true
VersionAdded: '0.49'
# Supports --auto-correct
Layout/LeadingCommentSpace:
Description: Comments should start with a space.
StyleGuide: "#hash-space"
Enabled: true
VersionAdded: '0.49'
VersionChanged: '0.73'
AllowDoxygenCommentStyle: false
AllowGemfileRubyComment: false
# Supports --auto-correct
Layout/LeadingEmptyLines:
Description: Check for unnecessary blank lines at the beginning of a file.
Enabled: true
VersionAdded: '0.57'
VersionChanged: '0.77'
# Supports --auto-correct
Layout/MultilineArrayBraceLayout:
Description: Checks that the closing brace in an array literal is either on the same
line as the last array element, or a new line.
Enabled: true
VersionAdded: '0.49'
EnforcedStyle: symmetrical
SupportedStyles:
- symmetrical
- new_line
- same_line
# Supports --auto-correct
Layout/MultilineBlockLayout:
Description: Ensures newlines after multiline block do statements.
Enabled: true
VersionAdded: '0.49'
# Supports --auto-correct
Layout/MultilineHashBraceLayout:
Description: Checks that the closing brace in a hash literal is either on the same
line as the last hash element, or a new line.
Enabled: true
VersionAdded: '0.49'
EnforcedStyle: symmetrical
SupportedStyles:
- symmetrical
- new_line
- same_line
# Supports --auto-correct
Layout/MultilineMethodCallBraceLayout:
Description: Checks that the closing brace in a method call is either on the same
line as the last method argument, or a new line.
Enabled: true
VersionAdded: '0.49'
EnforcedStyle: symmetrical
SupportedStyles:
- symmetrical
- new_line
- same_line
# Supports --auto-correct
Layout/MultilineMethodCallIndentation:
Description: Checks indentation of method calls with the dot operator that span more
than one line.
Enabled: true
VersionAdded: '0.49'
EnforcedStyle: aligned
SupportedStyles:
- aligned
- indented
- indented_relative_to_receiver
IndentationWidth:
# Supports --auto-correct
Layout/MultilineMethodDefinitionBraceLayout:
Description: Checks that the closing brace in a method definition is either on the
same line as the last method parameter, or a new line.
Enabled: true
VersionAdded: '0.49'
EnforcedStyle: symmetrical
SupportedStyles:
- symmetrical
- new_line
- same_line
# Supports --auto-correct
Layout/MultilineOperationIndentation:
Description: Checks indentation of binary operations that span more than one line.
Enabled: true
VersionAdded: '0.49'
EnforcedStyle: aligned
SupportedStyles:
- aligned
- indented
IndentationWidth:
# Supports --auto-correct
Layout/ParameterAlignment:
Description: Align the parameters of a method definition if they span more than one
line.
StyleGuide: "#no-double-indent"
Enabled: true
VersionAdded: '0.49'
VersionChanged: '0.77'
EnforcedStyle: with_first_parameter
SupportedStyles:
- with_first_parameter
- with_fixed_indentation
IndentationWidth:
# Supports --auto-correct
Layout/RescueEnsureAlignment:
Description: Align rescues and ensures correctly.
Enabled: true
VersionAdded: '0.49'
# Supports --auto-correct
Layout/SpaceAfterColon:
Description: Use spaces after colons.
StyleGuide: "#spaces-operators"
Enabled: true
VersionAdded: '0.49'
# Supports --auto-correct
Layout/SpaceAfterComma:
Description: Use spaces after commas.
StyleGuide: "#spaces-operators"
Enabled: true
VersionAdded: '0.49'
# Supports --auto-correct
Layout/SpaceAfterMethodName:
Description: Do not put a space between a method name and the opening parenthesis
in a method definition.
StyleGuide: "#parens-no-spaces"
Enabled: true
VersionAdded: '0.49'
# Supports --auto-correct
Layout/SpaceAfterNot:
Description: Tracks redundant space after the ! operator.
StyleGuide: "#no-space-bang"
Enabled: true
VersionAdded: '0.49'
# Supports --auto-correct
Layout/SpaceAfterSemicolon:
Description: Use spaces after semicolons.
StyleGuide: "#spaces-operators"
Enabled: true
VersionAdded: '0.49'
# Supports --auto-correct
Layout/SpaceAroundBlockParameters:
Description: Checks the spacing inside and after block parameters pipes.
Enabled: true
VersionAdded: '0.49'
EnforcedStyleInsidePipes: no_space
SupportedStylesInsidePipes:
- space
- no_space
# Supports --auto-correct
Layout/SpaceAroundEqualsInParameterDefault:
Description: Checks that the equals signs in parameter default assignments have or
don't have surrounding space de on configuration.
StyleGuide: "#spaces-around-equals"
Enabled: true
VersionAdded: '0.49'
EnforcedStyle: space
SupportedStyles:
- space
- no_space
# Supports --auto-correct
Layout/SpaceAroundKeyword:
Description: Use a space around keywords if appropriate.
Enabled: true
VersionAdded: '0.49'
# Supports --auto-correct
Layout/SpaceAroundMethodCallOperator:
Description: Checks method call operators to not have spaces around them.
Enabled: true
VersionAdded: '0.82'
# Supports --auto-correct
Layout/SpaceAroundOperators:
Description: Use a single space around operators.
StyleGuide: "#spaces-operators"
Enabled: true
VersionAdded: '0.49'
AllowForAlignment: true
EnforcedStyleForExponentOperator: no_space
SupportedStylesForExponentOperator:
- space
- no_space
# Supports --auto-correct
Layout/SpaceBeforeBlockBraces:
Description: Checks that the left block brace has or doesn't have space before it.
Enabled: true
VersionAdded: '0.49'
EnforcedStyle: space
SupportedStyles:
- space
- no_space
EnforcedStyleForEmptyBraces: space
SupportedStylesForEmptyBraces:
- space
- no_space
VersionChanged: 0.52.1
# Supports --auto-correct
Layout/SpaceBeforeComma:
Description: No spaces before commas.
Enabled: true
VersionAdded: '0.49'
# Supports --auto-correct
Layout/SpaceBeforeComment:
Description: Checks for missing space between code and a comment on the same line.
Enabled: true
VersionAdded: '0.49'
# Supports --auto-correct
Layout/SpaceBeforeFirstArg:
Description: Checks that exactly one space is used between a method name and the first
argument for method calls without parentheses.
Enabled: true
VersionAdded: '0.49'
AllowForAlignment: true
# Supports --auto-correct
Layout/SpaceBeforeSemicolon:
Description: No spaces before semicolons.
Enabled: true
VersionAdded: '0.49'
# Supports --auto-correct
Layout/SpaceInLambdaLiteral:
Description: Checks for spaces in lambda literals.
Enabled: true
VersionAdded: '0.49'
EnforcedStyle: require_no_space
SupportedStyles:
- require_no_space
- require_space
# Supports --auto-correct
Layout/SpaceInsideArrayLiteralBrackets:
Description: Checks the spacing inside array literal brackets.
Enabled: true
VersionAdded: '0.52'
EnforcedStyle: no_space
SupportedStyles:
- space
- no_space
- compact
EnforcedStyleForEmptyBrackets: no_space
SupportedStylesForEmptyBrackets:
- space
- no_space
# Supports --auto-correct
Layout/SpaceInsideArrayPercentLiteral:
Description: No unnecessary additional spaces between elements in %i/%w literals.
Enabled: true
VersionAdded: '0.49'
# Supports --auto-correct
Layout/SpaceInsideBlockBraces:
Description: Checks that block braces have or don't have surrounding space. For blocks
taking parameters, checks that the left brace has or doesn't have trailing space.
Enabled: true
VersionAdded: '0.49'
EnforcedStyle: space
SupportedStyles:
- space
- no_space
EnforcedStyleForEmptyBraces: no_space
SupportedStylesForEmptyBraces:
- space
- no_space
SpaceBeforeBlockParameters: true
# Supports --auto-correct
Layout/SpaceInsideHashLiteralBraces:
Description: Use spaces inside hash literal braces - or don't.
StyleGuide: "#spaces-braces"
Enabled: true
VersionAdded: '0.49'
EnforcedStyle: space
SupportedStyles:
- space
- no_space
- compact
EnforcedStyleForEmptyBraces: no_space
SupportedStylesForEmptyBraces:
- space
- no_space
# Supports --auto-correct
Layout/SpaceInsideParens:
Description: No spaces after ( or before ).
StyleGuide: "#spaces-braces"
Enabled: true
VersionAdded: '0.49'
VersionChanged: '0.55'
EnforcedStyle: no_space
SupportedStyles:
- space
- no_space
# Supports --auto-correct
Layout/SpaceInsidePercentLiteralDelimiters:
Description: No unnecessary spaces inside delimiters of %i/%w/%x literals.
Enabled: true
VersionAdded: '0.49'
# Supports --auto-correct
Layout/SpaceInsideRangeLiteral:
Description: No spaces inside range literals.
StyleGuide: "#no-space-inside-range-literals"
Enabled: true
VersionAdded: '0.49'
# Supports --auto-correct
Layout/SpaceInsideReferenceBrackets:
Description: Checks the spacing inside referential brackets.
Enabled: true
VersionAdded: '0.52'
VersionChanged: '0.53'
EnforcedStyle: no_space
SupportedStyles:
- space
- no_space
EnforcedStyleForEmptyBrackets: no_space
SupportedStylesForEmptyBrackets:
- space
- no_space
# Supports --auto-correct
Layout/SpaceInsideStringInterpolation:
Description: Checks for padding/surrounding spaces inside string interpolation.
StyleGuide: "#string-interpolation"
Enabled: true
VersionAdded: '0.49'
EnforcedStyle: no_space
SupportedStyles:
- space
- no_space
# Supports --auto-correct
Layout/TrailingEmptyLines:
Description: Checks trailing blank lines and final newline.
StyleGuide: "#newline-eof"
Enabled: true
VersionAdded: '0.49'
VersionChanged: '0.77'
EnforcedStyle: final_newline
SupportedStyles:
- final_newline
- final_blank_line
# Supports --auto-correct
Layout/TrailingWhitespace:
Description: Avoid trailing whitespace.
StyleGuide: "#no-trailing-whitespace"
Enabled: true
VersionAdded: '0.49'
VersionChanged: '0.83'
AllowInHeredoc: true
# Department 'Lint' (104):
Lint/AmbiguousBlockAssociation:
Description: Checks for ambiguous block association with method when param passed
without parentheses.
StyleGuide: "#syntax"
Enabled: true
VersionAdded: '0.48'
# Supports --auto-correct
Lint/AmbiguousOperator:
Description: Checks for ambiguous operators in the first argument of a method invocation
without parentheses.
StyleGuide: "#method-invocation-parens"
Enabled: true
VersionAdded: '0.17'
VersionChanged: '0.83'
# Supports --auto-correct
Lint/AmbiguousRegexpLiteral:
Description: Checks for ambiguous regexp literals in the first argument of a method
invocation without parentheses.
Enabled: true
VersionAdded: '0.17'
VersionChanged: '0.83'
Lint/AssignmentInCondition:
Description: Don't use assignment in conditions.
StyleGuide: "#safe-assignment-in-condition"
Enabled: true
VersionAdded: '0.9'
AllowSafeAssignment: true
# Supports --auto-correct
Lint/BigDecimalNew:
Description: "`BigDecimal.new()` is deprecated. Use `BigDecimal()` instead."
Enabled: true
VersionAdded: '0.53'
Lint/BinaryOperatorWithIdenticalOperands:
Description: This cop checks for places where binary operator has identical operands.
Enabled: true
Safe: false
VersionAdded: '0.89'
# Supports --auto-correct
Lint/BooleanSymbol:
Description: Check for `:true` and `:false` symbols.
Enabled: true
VersionAdded: '0.50'
VersionChanged: '0.83'
Lint/CircularArgumentReference:
Description: Default values in optional keyword arguments and optional ordinal arguments
should not refer back to the name of the argument.
Enabled: true
VersionAdded: '0.33'
Lint/ConstantDefinitionInBlock:
Description: Do not define constants within a block.
StyleGuide: "#no-constant-definition-in-block"
Enabled: true
VersionAdded: '0.91'
Lint/Debugger:
Description: Check for debugger calls.
Enabled: true
VersionAdded: '0.14'
VersionChanged: '0.49'
Exclude:
- test/examples/*.rb
# Supports --auto-correct
Lint/DeprecatedClassMethods:
Description: Check for deprecated class method calls.
Enabled: true
VersionAdded: '0.19'
# Supports --auto-correct
Lint/DeprecatedOpenSSLConstant:
Description: Don't use algorithm constants for `OpenSSL::Cipher` and `OpenSSL::Digest`.
Enabled: true
VersionAdded: '0.84'
# Supports --auto-correct
Lint/DisjunctiveAssignmentInConstructor:
Description: In constructor, plain assignment is preferred over disjunctive.
Enabled: true
Safe: false
VersionAdded: '0.62'
VersionChanged: '0.88'
Lint/DuplicateCaseCondition:
Description: Do not repeat values in case conditionals.
Enabled: true
VersionAdded: '0.45'
Lint/DuplicateElsifCondition:
Description: Do not repeat conditions used in if `elsif`.
Enabled: true
VersionAdded: '0.88'
Lint/DuplicateHashKey:
Description: Check for duplicate keys in hash literals.
Enabled: true
VersionAdded: '0.34'
VersionChanged: '0.77'
Lint/DuplicateMethods:
Description: Check for duplicate method definitions.
Enabled: true
VersionAdded: '0.29'
Lint/DuplicateRequire:
Description: Check for duplicate `require`s and `require_relative`s.
Enabled: true
VersionAdded: '0.90'
Lint/DuplicateRescueException:
Description: Checks that there are no repeated exceptions used in `rescue` expressions.
Enabled: true
VersionAdded: '0.89'
Lint/EachWithObjectArgument:
Description: Check for immutable argument given to each_with_object.
Enabled: true
VersionAdded: '0.31'
Lint/ElseLayout:
Description: Check for odd code arrangement in an else block.
Enabled: true
VersionAdded: '0.17'
Lint/EmptyConditionalBody:
Description: This cop checks for the presence of `if`, `elsif` and `unless` branches
without a body.
Enabled: true
AllowComments: true
VersionAdded: '0.89'
# Supports --auto-correct
Lint/EmptyEnsure:
Description: Checks for empty ensure block.
Enabled: true
VersionAdded: '0.10'
VersionChanged: '0.48'
Lint/EmptyExpression:
Description: Checks for empty expressions.
Enabled: true
VersionAdded: '0.45'
Lint/EmptyFile:
Description: Enforces that Ruby source files are not empty.
Enabled: true
AllowComments: true
VersionAdded: '0.90'
# Supports --auto-correct
Lint/EmptyInterpolation:
Description: Checks for empty string interpolation.
Enabled: true
VersionAdded: '0.20'
VersionChanged: '0.45'
Lint/EmptyWhen:
Description: Checks for `when` branches with empty bodies.
Enabled: true
AllowComments: true
VersionAdded: '0.45'
VersionChanged: '0.83'
# Supports --auto-correct
Lint/EnsureReturn:
Description: Do not use return in an ensure block.
StyleGuide: "#no-return-ensure"
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.83'
# Supports --auto-correct
Lint/ErbNewArguments:
Description: Use `:trim_mode` and `:eoutvar` keyword arguments to `ERB.new`.
Enabled: true
VersionAdded: '0.56'
Lint/FlipFlop:
Description: Checks for flip-flops.
StyleGuide: "#no-flip-flops"
Enabled: true
VersionAdded: '0.16'
Lint/FloatComparison:
Description: Checks for the presence of precise comparison of floating point numbers.
StyleGuide: "#float-comparison"
Enabled: true
VersionAdded: '0.89'
Lint/FloatOutOfRange:
Description: Catches floating-point literals too large or small for Ruby to represent.
Enabled: true
VersionAdded: '0.36'
Lint/FormatParameterMismatch:
Description: The number of parameters to format/sprint must match the fields.
Enabled: true
VersionAdded: '0.33'
Lint/HashCompareByIdentity:
Description: Prefer using `Hash#compare_by_identity` than using `object_id` for keys.
StyleGuide: "#identity-comparison"
Enabled: true
Safe: false
VersionAdded: '0.93'
# Supports --auto-correct
Lint/IdentityComparison:
Description: Prefer `equal?` over `==` when comparing `object_id`.
Enabled: true
StyleGuide: "#identity-comparison"
VersionAdded: '0.91'
Lint/ImplicitStringConcatenation:
Description: Checks for adjacent string literals on the same line, which could better
be represented as a single string literal.
Enabled: true
VersionAdded: '0.36'
Lint/IneffectiveAccessModifier:
Description: Checks for attempts to use `private` or `protected` to set the visibility
of a class method, which does not work.
Enabled: true
VersionAdded: '0.36'
# Supports --auto-correct
Lint/InheritException:
Description: Avoid inheriting from the `Exception` class.
Enabled: true
VersionAdded: '0.41'
EnforcedStyle: runtime_error
SupportedStyles:
- runtime_error
- standard_error
# Supports --auto-correct
Lint/InterpolationCheck:
Description: Raise warning for interpolation in single q strs.
Enabled: true
Safe: false
VersionAdded: '0.50'
VersionChanged: '0.87'
Lint/LiteralAsCondition:
Description: Checks of literals used in conditions.
Enabled: true
VersionAdded: '0.51'
# Supports --auto-correct
Lint/LiteralInInterpolation:
Description: Checks for literals used in interpolation.
Enabled: true
VersionAdded: '0.19'
VersionChanged: '0.32'
# Supports --auto-correct
Lint/Loop:
Description: Use Kernel#loop with break rather than begin/end/until or begin/end/while
for post-loop tests.
StyleGuide: "#loop-with-break"
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.89'
Lint/MissingCopEnableDirective:
Description: Checks for a `# rubocop:enable` after `# rubocop:disable`.
Enabled: true
VersionAdded: '0.52'
MaximumRangeSize: .inf
Lint/MixedRegexpCaptureTypes:
Description: Do not mix named captures and numbered captures in a Regexp literal.
Enabled: true
VersionAdded: '0.85'
# Supports --auto-correct
Lint/MultipleComparison:
Description: Use `&&` operator to compare multiple values.
Enabled: true
VersionAdded: '0.47'
VersionChanged: '0.77'
Lint/NestedMethodDefinition:
Description: Do not use nested method definitions.
StyleGuide: "#no-nested-methods"
Enabled: true
VersionAdded: '0.32'
Lint/NestedPercentLiteral:
Description: Checks for nested percent literals.
Enabled: true
VersionAdded: '0.52'
Lint/NextWithoutAccumulator:
Description: Do not omit the accumulator when calling `next` in a `reduce`/`inject`
block.
Enabled: true
VersionAdded: '0.36'
# Supports --auto-correct
Lint/NonDeterministicRequireOrder:
Description: Always sort arrays returned by Dir.glob when requiring files.
Enabled: true
VersionAdded: '0.78'
Safe: false
Lint/NonLocalExitFromIterator:
Description: Do not use return in iterator to cause non-local exit.
Enabled: true
VersionAdded: '0.30'
# Supports --auto-correct
Lint/OrderedMagicComments:
Description: Checks the proper ordering of magic comments and whether a magic comment
is not placed before a shebang.
Enabled: true
VersionAdded: '0.53'
Lint/OutOfRangeRegexpRef:
Description: Checks for out of range reference for Regexp because it always returns
nil.
Enabled: true
Safe: false
VersionAdded: '0.89'
# Supports --auto-correct
Lint/ParenthesesAsGroupedExpression:
Description: Checks for method calls with a space before the opening parenthesis.
StyleGuide: "#parens-no-spaces"
Enabled: true
VersionAdded: '0.12'
VersionChanged: '0.83'
# Supports --auto-correct
Lint/PercentStringArray:
Description: Checks for unwanted commas and quotes in %w/%W literals.
Enabled: true
Safe: false
VersionAdded: '0.41'
# Supports --auto-correct
Lint/PercentSymbolArray:
Description: Checks for unwanted commas and colons in %i/%I literals.
Enabled: true
VersionAdded: '0.41'
# Supports --auto-correct
Lint/RaiseException:
Description: Checks for `raise` or `fail` statements which are raising `Exception`
class.
StyleGuide: "#raise-exception"
Enabled: true
Safe: false
VersionAdded: '0.81'
VersionChanged: '0.86'
AllowedImplicitNamespaces:
- Gem
Lint/RandOne:
Description: Checks for `rand(1)` calls. Such calls always return `0` and most likely
a mistake.
Enabled: true
VersionAdded: '0.36'
# Supports --auto-correct
Lint/RedundantCopDisableDirective:
Description: 'Checks for rubocop:disable comments that can be removed. Note: this
cop is not disabled when disabling all cops. It must be explicitly disabled.'
Enabled: true
VersionAdded: '0.76'
# Supports --auto-correct
Lint/RedundantCopEnableDirective:
Description: Checks for rubocop:enable comments that can be removed.
Enabled: true
VersionAdded: '0.76'
# Supports --auto-correct
Lint/RedundantRequireStatement:
Description: Checks for unnecessary `require` statement.
Enabled: true
VersionAdded: '0.76'
# Supports --auto-correct
Lint/RedundantSafeNavigation:
Description: Checks for redundant safe navigation calls.
Enabled: true
VersionAdded: '0.93'
AllowedMethods:
- instance_of?
- kind_of?
- is_a?
- eql?
- respond_to?
- equal?
Safe: false
# Supports --auto-correct
Lint/RedundantSplatExpansion:
Description: Checks for splat unnecessarily being called on literals.
Enabled: true
VersionAdded: '0.76'
# Supports --auto-correct
Lint/RedundantStringCoercion:
Description: Checks for Object#to_s usage in string interpolation.
StyleGuide: "#no-to-s"
Enabled: true
VersionAdded: '0.19'
VersionChanged: '0.77'
# Supports --auto-correct
Lint/RedundantWithIndex:
Description: Checks for redundant `with_index`.
Enabled: true
VersionAdded: '0.50'
# Supports --auto-correct
Lint/RedundantWithObject:
Description: Checks for redundant `with_object`.
Enabled: true
VersionAdded: '0.51'
# Supports --auto-correct
Lint/RegexpAsCondition:
Description: Do not use regexp literal as a condition. The regexp literal matches
`$_` implicitly.
Enabled: true
VersionAdded: '0.51'
VersionChanged: '0.86'
Lint/RequireParentheses:
Description: Use parentheses in the method call to avoid confusion about precedence.
Enabled: true
VersionAdded: '0.18'
Lint/RescueException:
Description: Avoid rescuing the Exception class.
StyleGuide: "#no-blind-rescues"
Enabled: true
VersionAdded: '0.9'
VersionChanged: 0.27.1
# Supports --auto-correct
Lint/RescueType:
Description: Avoid rescuing from non constants that could result in a `TypeError`.
Enabled: true
VersionAdded: '0.49'
Lint/ReturnInVoidContext:
Description: Checks for return in void context.
Enabled: true
VersionAdded: '0.50'
Lint/SafeNavigationChain:
Description: Do not chain ordinary method call after safe navigation operator.
Enabled: true
VersionAdded: '0.47'
VersionChanged: '0.77'
AllowedMethods:
- present?
- blank?
- presence
- try
- try!
- in?
# Supports --auto-correct
Lint/SafeNavigationConsistency:
Description: Check to make sure that if safe navigation is used for a method call
in an `&&` or `||` condition that safe navigation is used for all method calls on
that same object.
Enabled: true
VersionAdded: '0.55'
VersionChanged: '0.77'
AllowedMethods:
- present?
- blank?
- presence
- try
- try!
# Supports --auto-correct
Lint/SafeNavigationWithEmpty:
Description: Avoid `foo&.empty?` in conditionals.
Enabled: true
VersionAdded: '0.62'
VersionChanged: '0.87'
# Supports --auto-correct
Lint/ScriptPermission:
Description: Grant script file execute permission.
Enabled: true
VersionAdded: '0.49'
VersionChanged: '0.50'
Lint/SelfAssignment:
Description: Checks for self-assignments.
Enabled: true
VersionAdded: '0.89'
# Supports --auto-correct
Lint/SendWithMixinArgument:
Description: Checks for `send` method when using mixin.
Enabled: true
VersionAdded: '0.75'
Lint/ShadowedArgument:
Description: Avoid reassigning arguments before they were used.
Enabled: true
VersionAdded: '0.52'
IgnoreImplicitReferences: false
Lint/ShadowedException:
Description: Avoid rescuing a higher level exception before a lower level exception.
Enabled: true
VersionAdded: '0.41'
Lint/ShadowingOuterLocalVariable:
Description: Do not use the same name as outer local variable for block arguments
or block local variables.
Enabled: true
VersionAdded: '0.9'
Lint/StructNewOverride:
Description: Disallow overriding the `Struct` built-in methods via `Struct.new`.
Enabled: true
VersionAdded: '0.81'
Lint/SuppressedException:
Description: Don't suppress exceptions.
StyleGuide: "#dont-hide-exceptions"
Enabled: true
AllowComments: true
VersionAdded: '0.9'
VersionChanged: '0.81'
# Supports --auto-correct
Lint/ToJSON:
Description: 'Ensure #to_json includes an optional argument.'
Enabled: true
VersionAdded: '0.66'
Lint/TopLevelReturnWithArgument:
Description: This cop detects top level return statements with argument.
Enabled: true
VersionAdded: '0.89'
# Supports --auto-correct
Lint/TrailingCommaInAttributeDeclaration:
Description: This cop checks for trailing commas in attribute declarations.
Enabled: true
VersionAdded: '0.90'
Lint/UnderscorePrefixedVariableName:
Description: Do not use prefix `_` for a variable that is used.
Enabled: true
VersionAdded: '0.21'
AllowKeywordBlockArguments: false
# Supports --auto-correct
Lint/UnifiedInteger:
Description: Use Integer instead of Fixnum or Bignum.
Enabled: true
VersionAdded: '0.43'
Lint/UnreachableCode:
Description: Unreachable code.
Enabled: true
VersionAdded: '0.9'
Lint/UnreachableLoop:
Description: This cop checks for loops that will have at most one iteration.
Enabled: true
VersionAdded: '0.89'
# Supports --auto-correct
Lint/UnusedBlockArgument:
Description: Checks for unused block arguments.
StyleGuide: "#underscore-unused-vars"
Enabled: true
VersionAdded: '0.21'
VersionChanged: '0.22'
IgnoreEmptyBlocks: true
AllowUnusedKeywordArguments: false
# Supports --auto-correct
Lint/UnusedMethodArgument:
Description: Checks for unused method arguments.
StyleGuide: "#underscore-unused-vars"
Enabled: true
VersionAdded: '0.21'
VersionChanged: '0.81'
AllowUnusedKeywordArguments: false
IgnoreEmptyMethods: true
IgnoreNotImplementedMethods: true
Lint/UriEscapeUnescape:
Description: "`URI.escape` method is obsolete and should not be used. Instead, use
`CGI.escape`, `URI.encode_www_form` or `URI.encode_www_form_component` de
on your specific use case. Also `URI.unescape` method is obsolete and should not
be used. Instead, use `CGI.unescape`, `URI.decode_www_form` or `URI.decode_www_form_component`
de on your specific use case."
Enabled: true
VersionAdded: '0.50'
# Supports --auto-correct
Lint/UriRegexp:
Description: Use `URI::DEFAULT_PARSER.make_regexp` instead of `URI.regexp`.
Enabled: true
VersionAdded: '0.50'
# Supports --auto-correct
Lint/UselessAccessModifier:
Description: Checks for useless access modifiers.
Enabled: true
VersionAdded: '0.20'
VersionChanged: '0.83'
ContextCreatingMethods: []
MethodCreatingMethods: []
Lint/UselessAssignment:
Description: Checks for useless assignment to a local variable.
StyleGuide: "#underscore-unused-vars"
Enabled: true
VersionAdded: '0.11'
Lint/UselessElseWithoutRescue:
Description: Checks for useless `else` in `begin..end` without `rescue`.
Enabled: true
VersionAdded: '0.17'
# Supports --auto-correct
Lint/UselessMethodDefinition:
Description: Checks for useless method definitions.
Enabled: true
VersionAdded: '0.90'
Safe: false
Lint/UselessSetterCall:
Description: Checks for useless setter call to a local variable.
Enabled: true
VersionAdded: '0.13'
VersionChanged: '0.80'
Safe: false
# Supports --auto-correct
Lint/UselessTimes:
Description: Checks for useless `Integer#times` calls.
Enabled: true
VersionAdded: '0.91'
Safe: false
Lint/Void:
Description: Possible use of operator/literal/variable in void context.
Enabled: true
VersionAdded: '0.9'
CheckForMethodsWithNoSideEffects: false
# Department 'Migration' (1):
# Supports --auto-correct
Migration/DepartmentName:
Description: Check that cop names in rubocop:disable (etc) comments are given with
department name.
Enabled: true
VersionAdded: '0.75'
# Department 'Naming' (16):
Naming/AccessorMethodName:
Description: Check the naming of accessor methods for get_/set_.
StyleGuide: "#accessor_mutator_method_names"
Enabled: true
VersionAdded: '0.50'
Naming/AsciiIdentifiers:
Description: Use only ascii symbols in identifiers and constants.
StyleGuide: "#english-identifiers"
Enabled: true
VersionAdded: '0.50'
VersionChanged: '0.87'
AsciiConstants: true
Naming/BinaryOperatorParameterName:
Description: When defining binary operators, name the argument other.
StyleGuide: "#other-arg"
Enabled: true
VersionAdded: '0.50'
Naming/BlockParameterName:
Description: Checks for block parameter names that contain capital letters, end in
numbers, or do not meet a minimal length.
Enabled: true
VersionAdded: '0.53'
VersionChanged: '0.77'
MinNameLength: 1
AllowNamesEndingInNumbers: true
AllowedNames: []
ForbiddenNames: []
Naming/ClassAndModuleCamelCase:
Description: Use CamelCase for classes and modules.
StyleGuide: "#camelcase-classes"
Enabled: true
VersionAdded: '0.50'
VersionChanged: '0.85'
AllowedNames:
- module_parent
Naming/ConstantName:
Description: Constants should use SCREAMING_SNAKE_CASE.
StyleGuide: "#screaming-snake-case"
Enabled: true
VersionAdded: '0.50'
Naming/FileName:
Description: Use snake_case for source file names.
StyleGuide: "#snake-case-files"
Enabled: true
VersionAdded: '0.50'
Exclude:
- lib/pry-byebug.rb
- pry-byebug.gemspec
ExpectMatchingDefinition: false
CheckDefinitionPathHierarchy: true
Regex:
IgnoreExecutableScripts: true
AllowedAcronyms:
- CLI
- DSL
- ACL
- API
- ASCII
- CPU
- CSS
- DNS
- EOF
- GUID
- HTML
- HTTP
- HTTPS
- ID
- IP
- JSON
- LHS
- QPS
- RAM
- RHS
- RPC
- SLA
- SMTP
- SQL
- SSH
- TCP
- TLS
- TTL
- UDP
- UI
- UID
- UUID
- URI
- URL
- UTF8
- VM
- XML
- XMPP
- XSRF
- XSS
Naming/HeredocDelimiterCase:
Description: Use configured case for heredoc delimiters.
StyleGuide: "#heredoc-delimiters"
Enabled: true
VersionAdded: '0.50'
EnforcedStyle: uppercase
SupportedStyles:
- lowercase
- uppercase
Naming/HeredocDelimiterNaming:
Description: Use descriptive heredoc delimiters.
StyleGuide: "#heredoc-delimiters"
Enabled: true
VersionAdded: '0.50'
ForbiddenDelimiters:
- !ruby/regexp /(^|\s)(EO[A-Z]{1}|END)(\s|$)/
Naming/MemoizedInstanceVariableName:
Description: Memoized method name should match memo instance variable name.
Enabled: true
VersionAdded: '0.53'
VersionChanged: '0.58'
EnforcedStyleForLeadingUnderscores: disallowed
SupportedStylesForLeadingUnderscores:
- disallowed
- required
- optional
Naming/MethodName:
Description: Use the configured style when naming methods.
StyleGuide: "#snake-case-symbols-methods-vars"
Enabled: true
VersionAdded: '0.50'
EnforcedStyle: snake_case
SupportedStyles:
- snake_case
- camelCase
AllowedPatterns: []
Naming/MethodParameterName:
Description: Checks for method parameter names that contain capital letters, end in
numbers, or do not meet a minimal length.
Enabled: true
VersionAdded: '0.53'
VersionChanged: '0.77'
MinNameLength: 3
AllowNamesEndingInNumbers: true
AllowedNames:
- at
- by
- db
- id
- in
- io
- ip
- of
- 'on'
- os
- pp
- to
ForbiddenNames: []
Naming/PredicateName:
Description: Check the names of predicate methods.
StyleGuide: "#bool-methods-qmark"
Enabled: true
VersionAdded: '0.50'
VersionChanged: '0.77'
NamePrefix:
- is_
- has_
- have_
ForbiddenPrefixes:
- is_
- has_
- have_
AllowedMethods:
- is_a?
MethodDefinitionMacros:
- define_method
- define_singleton_method
Exclude:
- "spec/**/*"
# Supports --auto-correct
Naming/RescuedExceptionsVariableName:
Description: Use consistent rescued exceptions variables naming.
Enabled: true
VersionAdded: '0.67'
VersionChanged: '0.68'
PreferredName: e
Naming/VariableName:
Description: Use the configured style when naming variables.
StyleGuide: "#snake-case-symbols-methods-vars"
Enabled: true
VersionAdded: '0.50'
EnforcedStyle: snake_case
SupportedStyles:
- snake_case
- camelCase
Naming/VariableNumber:
Description: Use the configured style when numbering variables.
Enabled: true
VersionAdded: '0.50'
EnforcedStyle: normalcase
SupportedStyles:
- snake_case
- normalcase
- non_integer
# Department 'Security' (5):
Security/Eval:
Description: The use of eval represents a serious security risk.
Enabled: true
VersionAdded: '0.47'
# Supports --auto-correct
Security/JSONLoad:
Description: Prefer usage of `JSON.parse` over `JSON.load` due to potential security
issues. See reference for more information.
Reference: https://ruby-doc.org/stdlib-2.7.0/libdoc/json/rdoc/JSON.html#method-i-load
Enabled: true
VersionAdded: '0.43'
VersionChanged: '0.44'
AutoCorrect: false
SafeAutoCorrect: false
Security/MarshalLoad:
Description: Avoid using of `Marshal.load` or `Marshal.restore` due to potential security
issues. See reference for more information.
Reference: https://ruby-doc.org/core-2.7.0/Marshal.html#module-Marshal-label-Security+considerations
Enabled: true
VersionAdded: '0.47'
Security/Open:
Description: The use of Kernel#open represents a serious security risk.
Enabled: true
VersionAdded: '0.53'
Safe: false
# Supports --auto-correct
Security/YAMLLoad:
Description: Prefer usage of `YAML.safe_load` over `YAML.load` due to potential security
issues. See reference for more information.
Reference: https://ruby-doc.org/stdlib-2.7.0/libdoc/yaml/rdoc/YAML.html#module-YAML-label-Security
Enabled: true
VersionAdded: '0.47'
SafeAutoCorrect: false
# Department 'Style' (197):
Style/AccessModifierDeclarations:
Description: Checks style of how access modifiers are used.
Enabled: true
VersionAdded: '0.57'
VersionChanged: '0.81'
EnforcedStyle: group
SupportedStyles:
- inline
- group
AllowModifiersOnSymbols: true
# Supports --auto-correct
Style/AccessorGrouping:
Description: Checks for grouping of accessors in `class` and `module` bodies.
Enabled: true
VersionAdded: '0.87'
EnforcedStyle: grouped
SupportedStyles:
- separated
- grouped
# Supports --auto-correct
Style/Alias:
Description: Use alias instead of alias_method.
StyleGuide: "#alias-method-lexically"
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.36'
EnforcedStyle: prefer_alias
SupportedStyles:
- prefer_alias
- prefer_alias_method
# Supports --auto-correct
Style/AndOr:
Description: Use &&/|| instead of and/or.
StyleGuide: "#no-and-or-or"
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.25'
EnforcedStyle: conditionals
SupportedStyles:
- always
- conditionals
# Supports --auto-correct
Style/ArrayJoin:
Description: Use Array#join instead of Array#*.
StyleGuide: "#array-join"
Enabled: true
VersionAdded: '0.20'
VersionChanged: '0.31'
Style/AsciiComments:
Description: Use only ascii symbols in comments.
StyleGuide: "#english-comments"
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.52'
AllowedChars: []
# Supports --auto-correct
Style/Attr:
Description: Checks for uses of Module#attr.
StyleGuide: "#attr"
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.12'
# Supports --auto-correct
Style/BarePercentLiterals:
Description: Checks if usage of %() or %Q() matches configuration.
StyleGuide: "#percent-q-shorthand"
Enabled: true
VersionAdded: '0.25'
EnforcedStyle: bare_percent
SupportedStyles:
- percent_q
- bare_percent
Style/BeginBlock:
Description: Avoid the use of BEGIN blocks.
StyleGuide: "#no-BEGIN-blocks"
Enabled: true
VersionAdded: '0.9'
# Supports --auto-correct
Style/BisectedAttrAccessor:
Description: Checks for places where `attr_reader` and `attr_writer` for the same
method can be combined into single `attr_accessor`.
Enabled: true
VersionAdded: '0.87'
# Supports --auto-correct
Style/BlockComments:
Description: Do not use block comments.
StyleGuide: "#no-block-comments"
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.23'
# Supports --auto-correct
Style/BlockDelimiters:
Description: Avoid using {...} for multi-line blocks (multiline chaining is always
ugly). Prefer {...} over do...end for single-line blocks.
StyleGuide: "#single-line-blocks"
Enabled: true
VersionAdded: '0.30'
VersionChanged: '0.35'
EnforcedStyle: line_count_based
SupportedStyles:
- line_count_based
- semantic
- braces_for_chaining
- always_braces
ProceduralMethods:
- benchmark
- bm
- bmbm
- create
- each_with_object
- measure
- new
- realtime
- tap
- with_object
FunctionalMethods:
- let
- let!
- subject
- watch
AllowedMethods:
- lambda
- proc
- it
AllowBracesOnProceduralOneLiners: false
BracesRequiredMethods: []
# Supports --auto-correct
Style/CaseEquality:
Description: Avoid explicit use of the case equality operator(===).
StyleGuide: "#no-case-equality"
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.89'
AllowOnConstant: false
# Supports --auto-correct
Style/CaseLikeIf:
Description: This cop identifies places where `if-elsif` constructions can be replaced
with `case-when`.
StyleGuide: "#case-vs-if-else"
Enabled: true
Safe: false
VersionAdded: '0.88'
# Supports --auto-correct
Style/CharacterLiteral:
Description: Checks for uses of character literals.
StyleGuide: "#no-character-literals"
Enabled: true
VersionAdded: '0.9'
# Supports --auto-correct
Style/ClassAndModuleChildren:
Description: Checks style of children classes and modules.
StyleGuide: "#namespace-definition"
SafeAutoCorrect: false
Enabled: true
VersionAdded: '0.19'
EnforcedStyle: nested
SupportedStyles:
- nested
- compact
# Supports --auto-correct
Style/ClassCheck:
Description: Enforces consistent use of `Object#is_a?` or `Object#kind_of?`.
StyleGuide: "#is-a-vs-kind-of"
Enabled: true
VersionAdded: '0.24'
EnforcedStyle: is_a?
SupportedStyles:
- is_a?
- kind_of?
# Supports --auto-correct
Style/ClassEqualityComparison:
Description: Enforces the use of `Object#instance_of?` instead of class comparison
for equality.
StyleGuide: "#instance-of-vs-class-comparison"
Enabled: true
VersionAdded: '0.93'
AllowedMethods:
- "=="
- equal?
- eql?
# Supports --auto-correct
Style/ClassMethods:
Description: Use self when defining module/class methods.
StyleGuide: "#def-self-class-methods"
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.20'
Style/ClassVars:
Description: Avoid the use of class variables.
StyleGuide: "#no-class-vars"
Enabled: true
VersionAdded: '0.13'
# Supports --auto-correct
Style/ColonMethodCall:
Description: 'Do not use :: for method call.'
StyleGuide: "#double-colons"
Enabled: true
VersionAdded: '0.9'
# Supports --auto-correct
Style/ColonMethodDefinition:
Description: 'Do not use :: for defining class methods.'
StyleGuide: "#colon-method-definition"
Enabled: true
VersionAdded: '0.52'
Style/CombinableLoops:
Description: Checks for places where multiple consecutive loops over the same data
can be combined into a single loop.
Enabled: true
Safe: false
VersionAdded: '0.90'
# Supports --auto-correct
Style/CommandLiteral:
Description: Use `` or %x around command literals.
StyleGuide: "#percent-x"
Enabled: true
VersionAdded: '0.30'
EnforcedStyle: backticks
SupportedStyles:
- backticks
- percent_x
- mixed
AllowInnerBackticks: false
# Supports --auto-correct
Style/CommentAnnotation:
Description: Checks formatting of special comments (TODO, FIXME, OPTIMIZE, HACK, REVIEW).
StyleGuide: "#annotate-keywords"
Enabled: true
VersionAdded: '0.10'
VersionChanged: '0.31'
Keywords:
- TODO
- FIXME
- OPTIMIZE
- HACK
- REVIEW
Style/CommentedKeyword:
Description: Do not place comments on the same line as certain keywords.
Enabled: true
VersionAdded: '0.51'
# Supports --auto-correct
Style/ConditionalAssignment:
Description: Use the return value of `if` and `case` statements for assignment to
a variable and variable comparison instead of assigning that variable inside of
each branch.
Enabled: true
VersionAdded: '0.36'
VersionChanged: '0.47'
EnforcedStyle: assign_to_condition
SupportedStyles:
- assign_to_condition
- assign_inside_condition
SingleLineConditionsOnly: true
IncludeTernaryExpressions: true
# Supports --auto-correct
Style/DefWithParentheses:
Description: Use def with parentheses when there are arguments.
StyleGuide: "#method-parens"
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.12'
# Supports --auto-correct
Style/Dir:
Description: Use the `__dir__` method to retrieve the canonicalized absolute path
to the current file.
Enabled: true
VersionAdded: '0.50'
Style/Documentation:
Description: Document classes and non-namespace modules.
Enabled: true
VersionAdded: '0.9'
Exclude:
- "spec/**/*"
- "test/**/*"
# Supports --auto-correct
Style/DoubleCopDisableDirective:
Description: Checks for double rubocop:disable comments on a single line.
Enabled: true
VersionAdded: '0.73'
Style/DoubleNegation:
Description: Checks for uses of double negation (!!).
StyleGuide: "#no-bang-bang"
Enabled: true
VersionAdded: '0.19'
VersionChanged: '0.84'
EnforcedStyle: allowed_in_returns
SafeAutoCorrect: false
SupportedStyles:
- allowed_in_returns
- forbidden
# Supports --auto-correct
Style/EachForSimpleLoop:
Description: Use `Integer#times` for a simple loop which iterates a fixed number of
times.
Enabled: true
VersionAdded: '0.41'
# Supports --auto-correct
Style/EachWithObject:
Description: Prefer `each_with_object` over `inject` or `reduce`.
Enabled: true
VersionAdded: '0.22'
VersionChanged: '0.42'
# Supports --auto-correct
Style/EmptyBlockParameter:
Description: Omit pipes for empty block parameters.
Enabled: true
VersionAdded: '0.52'
# Supports --auto-correct
Style/EmptyCaseCondition:
Description: Avoid empty condition in case statements.
Enabled: true
VersionAdded: '0.40'
# Supports --auto-correct
Style/EmptyElse:
Description: Avoid empty else-clauses.
Enabled: true
VersionAdded: '0.28'
VersionChanged: '0.32'
EnforcedStyle: both
SupportedStyles:
- empty
- nil
- both
# Supports --auto-correct
Style/EmptyLambdaParameter:
Description: Omit parens for empty lambda parameters.
Enabled: true
VersionAdded: '0.52'
# Supports --auto-correct
Style/EmptyLiteral:
Description: Prefer literals to Array.new/Hash.new/String.new.
StyleGuide: "#literal-array-hash"
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.12'
# Supports --auto-correct
Style/EmptyMethod:
Description: Checks the formatting of empty method definitions.
StyleGuide: "#no-single-line-methods"
Enabled: true
VersionAdded: '0.46'
EnforcedStyle: compact
SupportedStyles:
- compact
- expanded
# Supports --auto-correct
Style/Encoding:
Description: Use UTF-8 as the source file encoding.
StyleGuide: "#utf-8"
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.50'
# Supports --auto-correct
Style/EndBlock:
Description: Avoid the use of END blocks.
StyleGuide: "#no-END-blocks"
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.81'
Style/EvalWithLocation:
Description: Pass `__FILE__` and `__LINE__` to `eval` method, as they are used by
backtraces.
Enabled: true
VersionAdded: '0.52'
# Supports --auto-correct
Style/EvenOdd:
Description: Favor the use of `Integer#even?` && `Integer#odd?`.
StyleGuide: "#predicate-methods"
Enabled: true
VersionAdded: '0.12'
VersionChanged: '0.29'
# Supports --auto-correct
Style/ExpandPathArguments:
Description: Use `expand_path(__dir__)` instead of `expand_path('..', __FILE__)`.
Enabled: true
VersionAdded: '0.53'
Style/ExponentialNotation:
Description: When using exponential notation, favor a mantissa between 1 (inclusive)
and 10 (exclusive).
StyleGuide: "#exponential-notation"
Enabled: true
VersionAdded: '0.82'
EnforcedStyle: scientific
SupportedStyles:
- scientific
- engineering
- integral
Style/FloatDivision:
Description: For performing float division, coerce one side only.
StyleGuide: "#float-division"
Reference: https://github.com/rubocop-hq/ruby-style-guide/issues/628
Enabled: true
VersionAdded: '0.72'
EnforcedStyle: single_coerce
SupportedStyles:
- left_coerce
- right_coerce
- single_coerce
- fdiv
# Supports --auto-correct
Style/For:
Description: Checks use of for or each in multiline loops.
StyleGuide: "#no-for-loops"
Enabled: true
VersionAdded: '0.13'
VersionChanged: '0.59'
EnforcedStyle: each
SupportedStyles:
- each
- for
# Supports --auto-correct
Style/FormatString:
Description: Enforce the use of Kernel#sprintf, Kernel#format or String#%.
StyleGuide: "#sprintf"
Enabled: true
VersionAdded: '0.19'
VersionChanged: '0.49'
EnforcedStyle: format
SupportedStyles:
- format
- sprintf
- percent
Style/FormatStringToken:
Description: Use a consistent style for format string tokens.
Enabled: true
EnforcedStyle: unannotated
SupportedStyles:
- annotated
- template
- unannotated
VersionAdded: '0.49'
VersionChanged: '0.75'
# Supports --auto-correct
Style/FrozenStringLiteralComment:
Description: Add the frozen_string_literal comment to the top of files to help transition
to frozen string literals by default.
Enabled: true
VersionAdded: '0.36'
VersionChanged: '0.79'
EnforcedStyle: always
SupportedStyles:
- always
- always_true
- never
SafeAutoCorrect: false
# Supports --auto-correct
Style/GlobalStdStream:
Description: Enforces the use of `$stdout/$stderr/$stdin` instead of `STDOUT/STDERR/STDIN`.
StyleGuide: "#global-stdout"
Enabled: true
VersionAdded: '0.89'
SafeAutoCorrect: false
Style/GlobalVars:
Description: Do not introduce global variables.
StyleGuide: "#instance-vars"
Reference: https://www.zenspider.com/ruby/quickref.html
Enabled: true
VersionAdded: '0.13'
AllowedVariables: []
Style/GuardClause:
Description: Check for conditionals that can be replaced with guard clauses.
StyleGuide: "#no-nested-conditionals"
Enabled: true
VersionAdded: '0.20'
VersionChanged: '0.22'
MinBodyLength: 1
# Supports --auto-correct
Style/HashAsLastArrayItem:
Description: Checks for presence or absence of braces around hash literal as a last
array item de on configuration.
StyleGuide: "#hash-literal-as-last-array-item"
Enabled: true
VersionAdded: '0.88'
EnforcedStyle: braces
SupportedStyles:
- braces
- no_braces
# Supports --auto-correct
Style/HashEachMethods:
Description: Use Hash#each_key and Hash#each_value.
StyleGuide: "#hash-each"
Enabled: true
VersionAdded: '0.80'
Safe: false
Style/HashLikeCase:
Description: Checks for places where `case-when` represents a simple 1:1 mapping and
can be replaced with a hash lookup.
Enabled: true
VersionAdded: '0.88'
MinBranchesCount: 3
# Supports --auto-correct
Style/HashSyntax:
Description: 'Prefer Ruby 1.9 hash syntax { a: 1, b: 2 } over 1.8 syntax { :a => 1,
:b => 2 }.'
StyleGuide: "#hash-literals"
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.43'
EnforcedStyle: ruby19
SupportedStyles:
- ruby19
- hash_rockets
- no_mixed_keys
- ruby19_no_mixed_keys
UseHashRocketsWithSymbolValues: false
PreferHashRocketsForNonAlnumEndingSymbols: false
# Supports --auto-correct
Style/HashTransformKeys:
Description: Prefer `transform_keys` over `each_with_object`, `map`, or `to_h`.
Enabled: true
VersionAdded: '0.80'
VersionChanged: '0.90'
Safe: false
# Supports --auto-correct
Style/HashTransformValues:
Description: Prefer `transform_values` over `each_with_object`, `map`, or `to_h`.
Enabled: true
VersionAdded: '0.80'
VersionChanged: '0.90'
Safe: false
Style/IdenticalConditionalBranches:
Description: Checks that conditional statements do not have an identical line at the
end of each branch, which can validly be moved out of the conditional.
Enabled: true
VersionAdded: '0.36'
Style/IfInsideElse:
Description: Finds if nodes inside else, which can be converted to elsif.
Enabled: true
AllowIfModifier: false
VersionAdded: '0.36'
# Supports --auto-correct
Style/IfUnlessModifier:
Description: Favor modifier if/unless usage when you have a single-line body.
StyleGuide: "#if-as-a-modifier"
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.30'
# Supports --auto-correct
Style/IfUnlessModifierOfIfUnless:
Description: Avoid modifier if/unless usage on conditionals.
Enabled: true
VersionAdded: '0.39'
VersionChanged: '0.87'
# Supports --auto-correct
Style/IfWithSemicolon:
Description: Do not use if x; .... Use the ternary operator instead.
StyleGuide: "#no-semicolon-ifs"
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.83'
# Supports --auto-correct
Style/InfiniteLoop:
Description: Use Kernel#loop for infinite loops.
StyleGuide: "#infinite-loop"
Enabled: true
VersionAdded: '0.26'
VersionChanged: '0.61'
# Supports --auto-correct
Style/InverseMethods:
Description: Use the inverse method instead of `!.method` if an inverse method is
defined.
Enabled: true
Safe: false
VersionAdded: '0.48'
InverseMethods:
:any?: :none?
:even?: :odd?
:==: :!=
:=~: :!~
:<: :>=
:>: :<=
InverseBlocks:
:select: :reject
:select!: :reject!
# Supports --auto-correct
Style/KeywordParametersOrder:
Description: Enforces that optional keyword parameters are placed at the end of the
parameters list.
StyleGuide: "#keyword-parameters-order"
Enabled: true
VersionAdded: '0.90'
# Supports --auto-correct
Style/Lambda:
Description: Use the new lambda literal syntax for single-line blocks.
StyleGuide: "#lambda-multi-line"
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.40'
EnforcedStyle: line_count_dependent
SupportedStyles:
- line_count_dependent
- lambda
- literal
# Supports --auto-correct
Style/LambdaCall:
Description: Use lambda.call(...) instead of lambda.(...).
StyleGuide: "#proc-call"
Enabled: true
VersionAdded: '0.13'
VersionChanged: '0.14'
EnforcedStyle: call
SupportedStyles:
- call
- braces
# Supports --auto-correct
Style/LineEndConcatenation:
Description: Use \ instead of + or << to concatenate two string literals at line end.
Enabled: true
SafeAutoCorrect: false
VersionAdded: '0.18'
VersionChanged: '0.64'
# Supports --auto-correct
Style/MethodCallWithoutArgsParentheses:
Description: Do not use parentheses for method calls with no arguments.
StyleGuide: "#method-invocation-parens"
Enabled: true
AllowedMethods: []
VersionAdded: '0.47'
VersionChanged: '0.55'
# Supports --auto-correct
Style/MethodDefParentheses:
Description: Checks if the method definitions have or don't have parentheses.
StyleGuide: "#method-parens"
Enabled: true
VersionAdded: '0.16'
VersionChanged: '0.35'
EnforcedStyle: require_parentheses
SupportedStyles:
- require_parentheses
- require_no_parentheses
- require_no_parentheses_except_multiline
# Supports --auto-correct
Style/MinMax:
Description: Use `Enumerable#minmax` instead of `Enumerable#min` and `Enumerable#max`
in conjunction.
Enabled: true
VersionAdded: '0.50'
Style/MissingRespondToMissing:
Description: Checks if `method_missing` is implemented without implementing `respond_to_missing`.
StyleGuide: "#no-method-missing"
Enabled: true
VersionAdded: '0.56'
# Supports --auto-correct
Style/MixinGrouping:
Description: Checks for grouping of mixins in `class` and `module` bodies.
StyleGuide: "#mixin-grouping"
Enabled: true
VersionAdded: '0.48'
VersionChanged: '0.49'
EnforcedStyle: separated
SupportedStyles:
- separated
- grouped
Style/MixinUsage:
Description: Checks that `include`, `extend` and `prepend` exists at the top level.
Enabled: true
VersionAdded: '0.51'
Style/MultilineBlockChain:
Description: Avoid multi-line chains of blocks.
StyleGuide: "#single-line-blocks"
Enabled: true
VersionAdded: '0.13'
# Supports --auto-correct
Style/MultilineIfModifier:
Description: Only use if/unless modifiers on single line statements.
StyleGuide: "#no-multiline-if-modifiers"
Enabled: true
VersionAdded: '0.45'
# Supports --auto-correct
Style/MultilineIfThen:
Description: Do not use then for multi-line if/unless.
StyleGuide: "#no-then"
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.26'
# Supports --auto-correct
Style/MultilineMemoization:
Description: Wrap multiline memoizations in a `begin` and `end` block.
Enabled: true
VersionAdded: '0.44'
VersionChanged: '0.48'
EnforcedStyle: keyword
SupportedStyles:
- keyword
- braces
# Supports --auto-correct
Style/MultilineTernaryOperator:
Description: 'Avoid multi-line ?: (the ternary operator); use if/unless instead.'
StyleGuide: "#no-multiline-ternary"
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.86'
# Supports --auto-correct
Style/MultilineWhenThen:
Description: Do not use then for multi-line when statement.
StyleGuide: "#no-then"
Enabled: true
VersionAdded: '0.73'
Style/MultipleComparison:
Description: Avoid comparing a variable with multiple items in a conditional, use
Array#include? instead.
Enabled: true
VersionAdded: '0.49'
# Supports --auto-correct
Style/MutableConstant:
Description: Do not assign mutable objects to constants.
Enabled: true
VersionAdded: '0.34'
VersionChanged: '0.65'
EnforcedStyle: literals
SupportedStyles:
- literals
- strict
# Supports --auto-correct
Style/NegatedIf:
Description: Favor unless over if for negative conditions (or control flow or).
StyleGuide: "#unless-for-negatives"
Enabled: true
VersionAdded: '0.20'
VersionChanged: '0.48'
EnforcedStyle: both
SupportedStyles:
- both
- prefix
- postfix
# Supports --auto-correct
Style/NegatedUnless:
Description: Favor if over unless for negative conditions.
StyleGuide: "#if-for-negatives"
Enabled: true
VersionAdded: '0.69'
EnforcedStyle: both
SupportedStyles:
- both
- prefix
- postfix
# Supports --auto-correct
Style/NegatedWhile:
Description: Favor until over while for negative conditions.
StyleGuide: "#until-for-negatives"
Enabled: true
VersionAdded: '0.20'
# Supports --auto-correct
Style/NestedModifier:
Description: Avoid using nested modifiers.
StyleGuide: "#no-nested-modifiers"
Enabled: true
VersionAdded: '0.35'
# Supports --auto-correct
Style/NestedParenthesizedCalls:
Description: Parenthesize method calls which are nested inside the argument list of
another parenthesized method call.
Enabled: true
VersionAdded: '0.36'
VersionChanged: '0.77'
AllowedMethods:
- be
- be_a
- be_an
- be_between
- be_falsey
- be_kind_of
- be_instance_of
- be_truthy
- be_within
- eq
- eql
- end_with
- include
- match
- raise_error
- respond_to
- start_with
# Supports --auto-correct
Style/NestedTernaryOperator:
Description: Use one expression per branch in a ternary operator.
StyleGuide: "#no-nested-ternary"
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.86'
# Supports --auto-correct
Style/Next:
Description: Use `next` to skip iteration instead of a condition at the end.
StyleGuide: "#no-nested-conditionals"
Enabled: true
VersionAdded: '0.22'
VersionChanged: '0.35'
EnforcedStyle: skip_modifier_ifs
MinBodyLength: 3
SupportedStyles:
- skip_modifier_ifs
- always
# Supports --auto-correct
Style/NilComparison:
Description: Prefer x.nil? to x == nil.
StyleGuide: "#predicate-methods"
Enabled: true
VersionAdded: '0.12'
VersionChanged: '0.59'
EnforcedStyle: predicate
SupportedStyles:
- predicate
- comparison
# Supports --auto-correct
Style/NonNilCheck:
Description: Checks for redundant nil checks.
StyleGuide: "#no-non-nil-checks"
Enabled: true
VersionAdded: '0.20'
VersionChanged: '0.22'
IncludeSemanticChanges: false
# Supports --auto-correct
Style/Not:
Description: Use ! instead of not.
StyleGuide: "#bang-not-not"
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.20'
# Supports --auto-correct
Style/NumericLiteralPrefix:
Description: Use smallcase prefixes for numeric literals.
StyleGuide: "#numeric-literal-prefixes"
Enabled: true
VersionAdded: '0.41'
EnforcedOctalStyle: zero_with_o
SupportedOctalStyles:
- zero_with_o
- zero_only
# Supports --auto-correct
Style/NumericLiterals:
Description: Add underscores to large numeric literals to improve their readability.
StyleGuide: "#underscores-in-numerics"
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.48'
MinDigits: 5
Strict: false
# Supports --auto-correct
Style/NumericPredicate:
Description: Checks for the use of predicate- or comparison methods for numeric comparisons.
StyleGuide: "#predicate-methods"
Safe: false
SafeAutoCorrect: false
Enabled: true
VersionAdded: '0.42'
VersionChanged: '0.59'
EnforcedStyle: predicate
SupportedStyles:
- predicate
- comparison
AllowedMethods: []
Exclude:
- "spec/**/*"
# Supports --auto-correct
Style/OneLineConditional:
Description: Favor the ternary operator (?:) or multi-line constructs over single-line
if/then/else/end constructs.
StyleGuide: "#ternary-operator"
Enabled: true
AlwaysCorrectToMultiline: false
VersionAdded: '0.9'
VersionChanged: '0.90'
Style/OptionalArguments:
Description: Checks for optional arguments that do not appear at the end of the argument
list.
StyleGuide: "#optional-arguments"
Enabled: true
Safe: false
VersionAdded: '0.33'
VersionChanged: '0.83'
# Supports --auto-correct
Style/OrAssignment:
Description: Recommend usage of double pipe equals (||=) where applicable.
StyleGuide: "#double-pipe-for-uninit"
Enabled: true
VersionAdded: '0.50'
# Supports --auto-correct
Style/ParallelAssignment:
Description: Check for simple usages of parallel assignment. It will only warn when
the number of variables matches on both sides of the assignment.
StyleGuide: "#parallel-assignment"
Enabled: true
VersionAdded: '0.32'
# Supports --auto-correct
Style/ParenthesesAroundCondition:
Description: Don't use parentheses around the condition of an if/unless/while.
StyleGuide: "#no-parens-around-condition"
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.56'
AllowSafeAssignment: true
AllowInMultilineConditions: false
# Supports --auto-correct
Style/PercentLiteralDelimiters:
Description: Use `%`-literal delimiters consistently.
StyleGuide: "#percent-literal-braces"
Enabled: true
VersionAdded: '0.19'
PreferredDelimiters:
default: "()"
"%i": "[]"
"%I": "[]"
"%r": "{}"
"%w": "[]"
"%W": "[]"
VersionChanged: 0.48.1
# Supports --auto-correct
Style/PercentQLiterals:
Description: Checks if uses of %Q/%q match the configured preference.
Enabled: true
VersionAdded: '0.25'
EnforcedStyle: lower_case_q
SupportedStyles:
- lower_case_q
- upper_case_q
# Supports --auto-correct
Style/PerlBackrefs:
Description: Avoid Perl-style regex back references.
StyleGuide: "#no-perl-regexp-last-matchers"
Enabled: true
VersionAdded: '0.13'
# Supports --auto-correct
Style/PreferredHashMethods:
Description: Checks use of `has_key?` and `has_value?` Hash methods.
StyleGuide: "#hash-key"
Enabled: true
Safe: false
VersionAdded: '0.41'
VersionChanged: '0.70'
EnforcedStyle: short
SupportedStyles:
- short
- verbose
# Supports --auto-correct
Style/Proc:
Description: Use proc instead of Proc.new.
StyleGuide: "#proc"
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.18'
# Supports --auto-correct
Style/RaiseArgs:
Description: Checks the arguments passed to raise/fail.
StyleGuide: "#exception-class-messages"
Enabled: true
VersionAdded: '0.14'
VersionChanged: '0.40'
EnforcedStyle: exploded
SupportedStyles:
- compact
- exploded
# Supports --auto-correct
Style/RandomWithOffset:
Description: Prefer to use ranges when generating random numbers instead of integers
with offsets.
StyleGuide: "#random-numbers"
Enabled: true
VersionAdded: '0.52'
# Supports --auto-correct
Style/RedundantBegin:
Description: Don't use begin blocks when they are not needed.
StyleGuide: "#begin-implicit"
Enabled: true
VersionAdded: '0.10'
VersionChanged: '0.21'
# Supports --auto-correct
Style/RedundantCapitalW:
Description: Checks for %W when interpolation is not needed.
Enabled: true
VersionAdded: '0.76'
# Supports --auto-correct
Style/RedundantCondition:
Description: Checks for unnecessary conditional expressions.
Enabled: true
VersionAdded: '0.76'
# Supports --auto-correct
Style/RedundantConditional:
Description: Don't return true/false from a conditional.
Enabled: true
VersionAdded: '0.50'
# Supports --auto-correct
Style/RedundantException:
Description: Checks for an obsolete RuntimeException argument in raise/fail.
StyleGuide: "#no-explicit-runtimeerror"
Enabled: true
VersionAdded: '0.14'
VersionChanged: '0.29'
# Supports --auto-correct
Style/RedundantFetchBlock:
Description: Use `fetch(key, value)` instead of `fetch(key) { value }` when value
has Numeric, Rational, Complex, Symbol or String type, `false`, `true`, `nil` or
is a constant.
Reference: https://github.com/JuanitoFatas/fast-ruby#hashfetch-with-argument-vs-hashfetch--block-code
Enabled: true
Safe: false
SafeForConstants: false
VersionAdded: '0.86'
# Supports --auto-correct
Style/RedundantFileExtensionInRequire:
Description: Checks for the presence of superfluous `.rb` extension in the filename
provided to `require` and `require_relative`.
StyleGuide: "#no-explicit-rb-to-require"
Enabled: true
VersionAdded: '0.88'
# Supports --auto-correct
Style/RedundantFreeze:
Description: Checks usages of Object#freeze on immutable objects.
Enabled: true
VersionAdded: '0.34'
VersionChanged: '0.66'
# Supports --auto-correct
Style/RedundantInterpolation:
Description: Checks for strings that are just an interpolated expression.
Enabled: true
VersionAdded: '0.76'
# Supports --auto-correct
Style/RedundantParentheses:
Description: Checks for parentheses that seem not to serve any purpose.
Enabled: true
VersionAdded: '0.36'
# Supports --auto-correct
Style/RedundantPercentQ:
Description: Checks for %q/%Q when single quotes or double quotes would do.
StyleGuide: "#percent-q"
Enabled: true
VersionAdded: '0.76'
# Supports --auto-correct
Style/RedundantRegexpCharacterClass:
Description: Checks for unnecessary single-element Regexp character classes.
Enabled: true
VersionAdded: '0.85'
# Supports --auto-correct
Style/RedundantReturn:
Description: Don't use return where it's not required.
StyleGuide: "#no-explicit-return"
Enabled: true
VersionAdded: '0.10'
VersionChanged: '0.14'
AllowMultipleReturnValues: false
# Supports --auto-correct
Style/RedundantSelf:
Description: Don't use self where it's not needed.
StyleGuide: "#no-self-unless-required"
Enabled: true
VersionAdded: '0.10'
VersionChanged: '0.13'
# Supports --auto-correct
Style/RedundantSelfAssignment:
Description: Checks for places where redundant assignments are made for in place modification
methods.
Enabled: true
Safe: false
VersionAdded: '0.90'
# Supports --auto-correct
Style/RedundantSort:
Description: Use `min` instead of `sort.first`, `max_by` instead of `sort_by...last`,
etc.
Enabled: true
VersionAdded: '0.76'
# Supports --auto-correct
Style/RedundantSortBy:
Description: Use `sort` instead of `sort_by { |x| x }`.
Enabled: true
VersionAdded: '0.36'
# Supports --auto-correct
Style/RegexpLiteral:
Description: Use / or %r around regular expressions.
StyleGuide: "#percent-r"
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.30'
EnforcedStyle: slashes
SupportedStyles:
- slashes
- percent_r
- mixed
AllowInnerSlashes: false
# Supports --auto-correct
Style/RescueModifier:
Description: Avoid using rescue in its modifier form.
StyleGuide: "#no-rescue-modifiers"
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.34'
# Supports --auto-correct
Style/RescueStandardError:
Description: Avoid rescuing without specifying an error class.
Enabled: true
VersionAdded: '0.52'
EnforcedStyle: explicit
SupportedStyles:
- implicit
- explicit
# Supports --auto-correct
Style/SafeNavigation:
Description: This cop transforms usages of a method call safeguarded by a check for
the existence of the object to safe navigation (`&.`). Auto-correction is unsafe
as it assumes the object will be `nil` or truthy, but never `false`.
Enabled: true
VersionAdded: '0.43'
VersionChanged: '0.77'
ConvertCodeThatCanStartToReturnNil: false
AllowedMethods:
- present?
- blank?
- presence
- try
- try!
SafeAutoCorrect: false
# Supports --auto-correct
Style/Sample:
Description: Use `sample` instead of `shuffle.first`, `shuffle.last`, and `shuffle[Integer]`.
Reference: https://github.com/JuanitoFatas/fast-ruby#arrayshufflefirst-vs-arraysample-code
Enabled: true
VersionAdded: '0.30'
# Supports --auto-correct
Style/SelfAssignment:
Description: Checks for places where self-assignment shorthand should have been used.
StyleGuide: "#self-assignment"
Enabled: true
VersionAdded: '0.19'
VersionChanged: '0.29'
# Supports --auto-correct
Style/Semicolon:
Description: Don't use semicolons to terminate expressions.
StyleGuide: "#no-semicolon"
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.19'
AllowAsExpressionSeparator: false
# Supports --auto-correct
Style/SignalException:
Description: Checks for proper usage of fail and raise.
StyleGuide: "#prefer-raise-over-fail"
Enabled: true
VersionAdded: '0.11'
VersionChanged: '0.37'
EnforcedStyle: only_raise
SupportedStyles:
- only_raise
- only_fail
- semantic
# Supports --auto-correct
Style/SingleArgumentDig:
Description: Avoid using single argument dig method.
Enabled: true
VersionAdded: '0.89'
Safe: false
# Supports --auto-correct
Style/SingleLineMethods:
Description: Avoid single-line methods.
StyleGuide: "#no-single-line-methods"
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.19'
AllowIfMethodIsEmpty: true
# Supports --auto-correct
Style/SlicingWithRange:
Description: Checks array slicing is done with endless ranges when suitable.
Enabled: true
VersionAdded: '0.83'
Safe: false
Style/SoleNestedConditional:
Description: Finds sole nested conditional nodes which can be merged into outer conditional
node.
Enabled: true
VersionAdded: '0.89'
AllowModifier: false
# Supports --auto-correct
Style/SpecialGlobalVars:
Description: Avoid Perl-style global variables.
StyleGuide: "#no-cryptic-perlisms"
Enabled: true
VersionAdded: '0.13'
VersionChanged: '0.36'
SafeAutoCorrect: false
EnforcedStyle: use_english_names
SupportedStyles:
- use_perl_names
- use_english_names
# Supports --auto-correct
Style/StabbyLambdaParentheses:
Description: Check for the usage of parentheses around stabby lambda arguments.
StyleGuide: "#stabby-lambda-with-args"
Enabled: true
VersionAdded: '0.35'
EnforcedStyle: require_parentheses
SupportedStyles:
- require_parentheses
- require_no_parentheses
# Supports --auto-correct
Style/StderrPuts:
Description: Use `warn` instead of `$stderr.puts`.
StyleGuide: "#warn"
Enabled: true
VersionAdded: '0.51'
# Supports --auto-correct
Style/StringLiterals:
Description: Checks if uses of quotes match the configured preference.
StyleGuide: "#consistent-string-literals"
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.36'
EnforcedStyle: double_quotes
SupportedStyles:
- single_quotes
- double_quotes
ConsistentQuotesInMultiline: false
# Supports --auto-correct
Style/StringLiteralsInInterpolation:
Description: Checks if uses of quotes inside expressions in interpolated strings match
the configured preference.
Enabled: true
VersionAdded: '0.27'
EnforcedStyle: single_quotes
SupportedStyles:
- single_quotes
- double_quotes
# Supports --auto-correct
Style/Strip:
Description: Use `strip` instead of `lstrip.rstrip`.
Enabled: true
VersionAdded: '0.36'
# Supports --auto-correct
Style/StructInheritance:
Description: Checks for inheritance from Struct.new.
StyleGuide: "#no-extend-struct-new"
Enabled: true
VersionAdded: '0.29'
VersionChanged: '0.86'
# Supports --auto-correct
Style/SymbolArray:
Description: Use %i or %I for arrays of symbols.
StyleGuide: "#percent-i"
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.49'
EnforcedStyle: percent
MinSize: 2
SupportedStyles:
- percent
- brackets
# Supports --auto-correct
Style/SymbolLiteral:
Description: Use plain symbols instead of string symbols when possible.
Enabled: true
VersionAdded: '0.30'
# Supports --auto-correct
Style/SymbolProc:
Description: Use symbols as procs instead of blocks when possible.
Enabled: true
Safe: false
VersionAdded: '0.26'
VersionChanged: '0.64'
AllowedMethods:
- respond_to
- define_method
# Supports --auto-correct
Style/TernaryParentheses:
Description: Checks for use of parentheses around ternary conditions.
Enabled: true
VersionAdded: '0.42'
VersionChanged: '0.46'
EnforcedStyle: require_no_parentheses
SupportedStyles:
- require_parentheses
- require_no_parentheses
- require_parentheses_when_complex
AllowSafeAssignment: true
# Supports --auto-correct
Style/TrailingBodyOnClass:
Description: Class body goes below class statement.
Enabled: true
VersionAdded: '0.53'
# Supports --auto-correct
Style/TrailingBodyOnMethodDefinition:
Description: Method body goes below definition.
Enabled: true
VersionAdded: '0.52'
# Supports --auto-correct
Style/TrailingBodyOnModule:
Description: Module body goes below module statement.
Enabled: true
VersionAdded: '0.53'
# Supports --auto-correct
Style/TrailingCommaInArguments:
Description: Checks for trailing comma in argument lists.
StyleGuide: "#no-trailing-params-comma"
Enabled: true
VersionAdded: '0.36'
EnforcedStyleForMultiline: no_comma
SupportedStylesForMultiline:
- comma
- consistent_comma
- no_comma
# Supports --auto-correct
Style/TrailingCommaInArrayLiteral:
Description: Checks for trailing comma in array literals.
StyleGuide: "#no-trailing-array-commas"
Enabled: true
VersionAdded: '0.53'
EnforcedStyleForMultiline: no_comma
SupportedStylesForMultiline:
- comma
- consistent_comma
- no_comma
# Supports --auto-correct
Style/TrailingCommaInHashLiteral:
Description: Checks for trailing comma in hash literals.
Enabled: true
EnforcedStyleForMultiline: no_comma
SupportedStylesForMultiline:
- comma
- consistent_comma
- no_comma
VersionAdded: '0.53'
# Supports --auto-correct
Style/TrailingMethodEndStatement:
Description: Checks for trailing end statement on line of method body.
Enabled: true
VersionAdded: '0.52'
# Supports --auto-correct
Style/TrailingUnderscoreVariable:
Description: Checks for the usage of unneeded trailing underscores at the end of parallel
variable assignment.
AllowNamedUnderscoreVariables: true
Enabled: true
VersionAdded: '0.31'
VersionChanged: '0.35'
# Supports --auto-correct
Style/TrivialAccessors:
Description: Prefer attr_* methods to trivial readers/writers.
StyleGuide: "#attr_family"
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.77'
ExactNameMatch: true
AllowPredicates: true
AllowDSLWriters: false
IgnoreClassMethods: false
AllowedMethods:
- to_ary
- to_a
- to_c
- to_enum
- to_h
- to_hash
- to_i
- to_int
- to_io
- to_open
- to_path
- to_proc
- to_r
- to_regexp
- to_str
- to_s
- to_sym
# Supports --auto-correct
Style/UnlessElse:
Description: Do not use unless with else. Rewrite these with the positive case first.
StyleGuide: "#no-else-with-unless"
Enabled: true
VersionAdded: '0.9'
# Supports --auto-correct
Style/UnpackFirst:
Description: Checks for accessing the first element of `String#unpack` instead of
using `unpack1`.
Enabled: true
VersionAdded: '0.54'
# Supports --auto-correct
Style/VariableInterpolation:
Description: Don't interpolate global, instance and class variables directly in strings.
StyleGuide: "#curlies-interpolate"
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.20'
# Supports --auto-correct
Style/WhenThen:
Description: Use when x then ... for one-line cases.
StyleGuide: "#one-line-cases"
Enabled: true
VersionAdded: '0.9'
# Supports --auto-correct
Style/WhileUntilDo:
Description: Checks for redundant do after while or until.
StyleGuide: "#no-multiline-while-do"
Enabled: true
VersionAdded: '0.9'
# Supports --auto-correct
Style/WhileUntilModifier:
Description: Favor modifier while/until usage when you have a single-line body.
StyleGuide: "#while-as-a-modifier"
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.30'
# Supports --auto-correct
Style/WordArray:
Description: Use %w or %W for arrays of words.
StyleGuide: "#percent-w"
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.36'
EnforcedStyle: percent
SupportedStyles:
- percent
- brackets
MinSize: 2
WordRegex: !ruby/regexp /\A(?:\p{Word}|\p{Word}-\p{Word}|\n|\t)+\z/
# Supports --auto-correct
Style/YodaCondition:
Description: Forbid or enforce yoda conditions.
Reference: https://en.wikipedia.org/wiki/Yoda_conditions
Enabled: true
EnforcedStyle: forbid_for_all_comparison_operators
SupportedStyles:
- forbid_for_all_comparison_operators
- forbid_for_equality_operators_only
- require_for_all_comparison_operators
- require_for_equality_operators_only
Safe: false
VersionAdded: '0.49'
VersionChanged: '0.75'
# Supports --auto-correct
Style/ZeroLengthPredicate:
Description: 'Use #empty? when testing for objects of length 0.'
Enabled: true
Safe: false
VersionAdded: '0.37'
VersionChanged: '0.39'