AllCops:
RubyInterpreters:
- ruby
- macruby
- rake
- jruby
- rbx
Include:
- '**/*.rb'
- '**/*.arb'
- '**/*.axlsx'
- '**/*.builder'
- '**/*.fcgi'
- '**/*.gemfile'
- '**/*.gemspec'
- '**/*.god'
- '**/*.jb'
- '**/*.jbuilder'
- '**/*.mspec'
- '**/*.opal'
- '**/*.pluginspec'
- '**/*.podspec'
- '**/*.rabl'
- '**/*.rake'
- '**/*.rbuild'
- '**/*.rbw'
- '**/*.rbx'
- '**/*.ru'
- '**/*.ruby'
- '**/*.spec'
- '**/*.thor'
- '**/*.watchr'
- '**/.irbrc'
- '**/.pryrc'
- '**/.simplecov'
- '**/buildfile'
- '**/Appraisals'
- '**/Berksfile'
- '**/Brewfile'
- '**/Buildfile'
- '**/Capfile'
- '**/Cheffile'
- '**/Dangerfile'
- '**/Deliverfile'
- '**/Fastfile'
- '**/*Fastfile'
- '**/Gemfile'
- '**/Guardfile'
- '**/Jarfile'
- '**/Mavenfile'
- '**/Podfile'
- '**/Puppetfile'
- '**/Rakefile'
- '**/rakefile'
- '**/Snapfile'
- '**/Steepfile'
- '**/Thorfile'
- '**/Vagabondfile'
- '**/Vagrantfile'
Exclude:
- 'node_modules/**/*'
- 'tmp/**/*'
- 'vendor/**/*'
- '.git/**/*'
DefaultFormatter: progress
DisplayCopNames: true
DisplayStyleGuide: false
StyleGuideBaseURL: https://rubystyle.guide
DocumentationBaseURL: https://docs.rubocop.org/rubocop
ExtraDetails: false
StyleGuideCopsOnly: false
EnabledByDefault: false
DisabledByDefault: false
NewCops: pending
UseCache: true
MaxFilesInCache: 20000
CacheRootDirectory: ~
AllowSymlinksInCacheRootDirectory: false
TargetRubyVersion: ~
SuggestExtensions:
rubocop-rails: [rails]
rubocop-rspec: [rspec, rspec-rails]
rubocop-minitest: [minitest]
rubocop-sequel: [sequel]
rubocop-rake: [rake]
rubocop-graphql: [graphql]
ActiveSupportExtensionsEnabled: false
Bundler/DuplicatedGem:
Description: 'Checks for duplicate gem entries in Gemfile.'
Enabled: true
Severity: warning
VersionAdded: '0.46'
VersionChanged: '1.40'
Include:
- '**/*.gemfile'
- '**/Gemfile'
- '**/gems.rb'
Bundler/GemComment:
Description: 'Add a comment describing each gem.'
Enabled: false
VersionAdded: '0.59'
VersionChanged: '0.85'
Include:
- '**/*.gemfile'
- '**/Gemfile'
- '**/gems.rb'
IgnoredGems: []
OnlyFor: []
Bundler/GemFilename:
Description: 'Enforces the filename for managing gems.'
Enabled: true
VersionAdded: '1.20'
EnforcedStyle: 'Gemfile'
SupportedStyles:
- 'Gemfile'
- 'gems.rb'
Include:
- '**/Gemfile'
- '**/gems.rb'
- '**/Gemfile.lock'
- '**/gems.locked'
Bundler/GemVersion:
Description: 'Requires or forbids specifying gem versions.'
Enabled: false
VersionAdded: '1.14'
EnforcedStyle: 'required'
SupportedStyles:
- 'required'
- 'forbidden'
Include:
- '**/*.gemfile'
- '**/Gemfile'
- '**/gems.rb'
AllowedGems: []
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
Severity: warning
VersionAdded: '0.50'
VersionChanged: '1.40'
AllowHttpProtocol: true
Include:
- '**/*.gemfile'
- '**/Gemfile'
- '**/gems.rb'
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'
Gemspec/DependencyVersion:
Description: 'Requires or forbids specifying gem dependency versions.'
Enabled: false
VersionAdded: '1.29'
EnforcedStyle: 'required'
SupportedStyles:
- 'required'
- 'forbidden'
Include:
- '**/*.gemspec'
AllowedGems: []
Gemspec/DeprecatedAttributeAssignment:
Description: Checks that deprecated attribute assignments are not set in a gemspec file.
Enabled: pending
Severity: warning
VersionAdded: '1.30'
VersionChanged: '1.40'
Include:
- '**/*.gemspec'
Gemspec/DuplicatedAssignment:
Description: 'An attribute assignment method calls should be listed only once in a gemspec.'
Enabled: true
Severity: warning
VersionAdded: '0.52'
VersionChanged: '1.40'
Include:
- '**/*.gemspec'
Gemspec/OrderedDependencies:
Description: >-
Dependencies in the gemspec should be alphabetically sorted.
Enabled: true
VersionAdded: '0.51'
TreatCommentsAsGroupSeparators: true
ConsiderPunctuation: false
Include:
- '**/*.gemspec'
Gemspec/RequireMFA:
Description: 'Checks that the gemspec has metadata to require Multi-Factor Authentication from RubyGems.'
Enabled: pending
Severity: warning
VersionAdded: '1.23'
VersionChanged: '1.40'
Reference:
- https://guides.rubygems.org/mfa-requirement-opt-in/
Include:
- '**/*.gemspec'
Gemspec/RequiredRubyVersion:
Description: 'Checks that `required_ruby_version` of gemspec is specified and equal to `TargetRubyVersion` of .rubocop.yml.'
Enabled: true
Severity: warning
VersionAdded: '0.52'
VersionChanged: '1.40'
Include:
- '**/*.gemspec'
Gemspec/RubyVersionGlobalsUsage:
Description: Checks usage of RUBY_VERSION in gemspec.
StyleGuide: '#no-ruby-version-in-the-gemspec'
Enabled: true
Severity: warning
VersionAdded: '0.72'
VersionChanged: '1.40'
Include:
- '**/*.gemspec'
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: ~
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: ~
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: ~
Layout/AssignmentIndentation:
Description: >-
Checks the indentation of the first line of the
right-hand-side of a multi-line assignment.
Enabled: true
SafeAutoCorrect: false
VersionAdded: '0.49'
VersionChanged: '1.40'
IndentationWidth: ~
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
Layout/BlockAlignment:
Description: 'Align block ends correctly.'
Enabled: true
VersionAdded: '0.53'
EnforcedStyleAlignWith: either
SupportedStylesAlignWith:
- either
- start_of_block
- start_of_line
Layout/BlockEndNewline:
Description: 'Put end statement of multiline block on its own line.'
Enabled: true
VersionAdded: '0.49'
Layout/CaseIndentation:
Description: 'Indentation of when in a case/(when|in)/[else/]end.'
StyleGuide: '#indent-when-to-case'
Enabled: true
VersionAdded: '0.49'
VersionChanged: '1.16'
EnforcedStyle: case
SupportedStyles:
- case
- end
IndentOneStep: false
IndentationWidth: ~
Layout/ClassStructure:
Description: 'Enforces a configured order of definitions within a class body.'
StyleGuide: '#consistent-classes'
Enabled: false
VersionAdded: '0.52'
Categories:
module_inclusion:
- include
- prepend
- extend
ExpectedOrder:
- module_inclusion
- constants
- public_class_methods
- initializer
- public_methods
- protected_methods
- private_methods
Layout/ClosingHeredocIndentation:
Description: 'Checks the indentation of here document closings.'
Enabled: true
VersionAdded: '0.57'
Layout/ClosingParenthesisIndentation:
Description: 'Checks the indentation of hanging closing parentheses.'
Enabled: true
VersionAdded: '0.49'
Layout/CommentIndentation:
Description: 'Indentation of comments.'
Enabled: true
AllowForAlignment: false
VersionAdded: '0.49'
VersionChanged: '1.24'
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'
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
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
Layout/ElseAlignment:
Description: 'Align elses and elsifs correctly.'
Enabled: true
VersionAdded: '0.49'
Layout/EmptyComment:
Description: 'Checks empty comment.'
Enabled: true
VersionAdded: '0.53'
AllowBorderComment: true
AllowMarginComment: true
Layout/EmptyLineAfterGuardClause:
Description: 'Add empty line after guard clause.'
Enabled: true
VersionAdded: '0.56'
VersionChanged: '0.59'
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'
Layout/EmptyLineAfterMultilineCondition:
Description: 'Enforces empty line after multiline condition.'
Enabled: false
VersionAdded: '0.90'
Reference:
- https://github.com/airbnb/ruby#multiline-if-newline
Layout/EmptyLineBetweenDefs:
Description: 'Use empty lines between class/module/method defs.'
StyleGuide: '#empty-lines-between-methods'
Enabled: true
VersionAdded: '0.49'
VersionChanged: '1.23'
EmptyLineBetweenMethodDefs: true
EmptyLineBetweenClassDefs: true
EmptyLineBetweenModuleDefs: true
AllowAdjacentOneLineDefs: true
NumberOfEmptyLines: 1
Layout/EmptyLines:
Description: "Don't use several empty lines in a row."
StyleGuide: '#two-or-more-empty-lines'
Enabled: true
VersionAdded: '0.49'
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
Layout/EmptyLinesAroundArguments:
Description: "Keeps track of empty lines around method arguments."
Enabled: true
VersionAdded: '0.52'
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
Layout/EmptyLinesAroundBeginBody:
Description: "Keeps track of empty lines around begin-end bodies."
StyleGuide: '#empty-lines-around-bodies'
Enabled: true
VersionAdded: '0.49'
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
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
Layout/EmptyLinesAroundExceptionHandlingKeywords:
Description: "Keeps track of empty lines around exception handling keywords."
StyleGuide: '#empty-lines-around-bodies'
Enabled: true
VersionAdded: '0.49'
Layout/EmptyLinesAroundMethodBody:
Description: "Keeps track of empty lines around method bodies."
StyleGuide: '#empty-lines-around-bodies'
Enabled: true
VersionAdded: '0.49'
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
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
Layout/ExtraSpacing:
Description: 'Do not use unnecessary spacing.'
Enabled: true
VersionAdded: '0.49'
AllowForAlignment: true
AllowBeforeTrailingComments: false
ForceEqualSignAlignment: false
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: ~
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: ~
Layout/FirstArrayElementLineBreak:
Description: >-
Checks for a line break before the first element in a
multi-line array.
Enabled: false
VersionAdded: '0.49'
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: ~
Layout/FirstHashElementLineBreak:
Description: >-
Checks for a line break before the first element in a
multi-line hash.
Enabled: false
VersionAdded: '0.49'
Layout/FirstMethodArgumentLineBreak:
Description: >-
Checks for a line break before the first argument in a
multi-line method call.
Enabled: false
VersionAdded: '0.49'
Layout/FirstMethodParameterLineBreak:
Description: >-
Checks for a line break before the first parameter in a
multi-line method parameter definition.
Enabled: false
VersionAdded: '0.49'
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: ~
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: '1.16'
EnforcedHashRocketStyle: key
SupportedHashRocketStyles:
- key
- separator
- table
EnforcedColonStyle: key
SupportedColonStyles:
- key
- separator
- table
EnforcedLastArgumentHashStyle: always_inspect
SupportedLastArgumentHashStyles:
- always_inspect
- always_ignore
- ignore_implicit
- ignore_explicit
Layout/HeredocArgumentClosingParenthesis:
Description: >-
Checks for the placement of the closing parenthesis in a
method call that passes a HEREDOC string as an argument.
Enabled: false
StyleGuide: '#heredoc-argument-closing-parentheses'
VersionAdded: '0.68'
Layout/HeredocIndentation:
Description: 'Checks the indentation of the here document bodies.'
StyleGuide: '#squiggly-heredocs'
Enabled: true
VersionAdded: '0.49'
VersionChanged: '0.85'
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
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
Layout/IndentationWidth:
Description: 'Use 2 spaces for indentation.'
StyleGuide: '#spaces-indentation'
Enabled: true
VersionAdded: '0.49'
Width: 2
AllowedPatterns: []
IgnoredPatterns: []
Layout/InitialIndentation:
Description: >-
Checks the indentation of the first non-blank non-comment line in a file.
Enabled: true
VersionAdded: '0.49'
Layout/LeadingCommentSpace:
Description: 'Comments should start with a space.'
StyleGuide: '#hash-space'
Enabled: true
VersionAdded: '0.49'
VersionChanged: '0.73'
AllowDoxygenCommentStyle: false
AllowGemfileRubyComment: false
Layout/LeadingEmptyLines:
Description: Check for unnecessary blank lines at the beginning of a file.
Enabled: true
VersionAdded: '0.57'
VersionChanged: '0.77'
Layout/LineContinuationLeadingSpace:
Description: >-
Use trailing spaces instead of leading spaces in strings
broken over multiple lines (by a backslash).
Enabled: pending
AutoCorrect: false
SafeAutoCorrect: false
VersionAdded: '1.31'
VersionChanged: '1.32'
EnforcedStyle: trailing
SupportedStyles:
- leading
- trailing
Layout/LineContinuationSpacing:
Description: 'Checks the spacing in front of backslash in line continuations.'
Enabled: pending
AutoCorrect: true
SafeAutoCorrect: true
VersionAdded: '1.31'
EnforcedStyle: space
SupportedStyles:
- space
- no_space
Layout/LineEndStringConcatenationIndentation:
Description: >-
Checks the indentation of the next line after a line that
ends with a string literal and a backslash.
Enabled: pending
VersionAdded: '1.18'
EnforcedStyle: aligned
SupportedStyles:
- aligned
- indented
IndentationWidth: ~
Layout/LineLength:
Description: 'Checks that line length does not exceed the configured limit.'
StyleGuide: '#max-line-length'
Enabled: true
VersionAdded: '0.25'
VersionChanged: '1.4'
Max: 120
AllowHeredoc: true
AllowURI: true
URISchemes:
- http
- https
IgnoreCopDirectives: true
AllowedPatterns: []
IgnoredPatterns: []
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
Layout/MultilineArrayLineBreaks:
Description: >-
Checks that each item in a multi-line array literal
starts on a separate line.
Enabled: false
VersionAdded: '0.67'
Layout/MultilineAssignmentLayout:
Description: 'Check for a newline after the assignment operator in multi-line assignments.'
StyleGuide: '#indent-conditional-assignment'
Enabled: false
VersionAdded: '0.49'
SupportedTypes:
- block
- case
- class
- if
- kwbegin
- module
EnforcedStyle: new_line
SupportedStyles:
- same_line
- new_line
Layout/MultilineBlockLayout:
Description: 'Ensures newlines after multiline block do statements.'
Enabled: true
VersionAdded: '0.49'
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
Layout/MultilineHashKeyLineBreaks:
Description: >-
Checks that each item in a multi-line hash literal
starts on a separate line.
Enabled: false
VersionAdded: '0.67'
Layout/MultilineMethodArgumentLineBreaks:
Description: >-
Checks that each argument in a multi-line method call
starts on a separate line.
Enabled: false
VersionAdded: '0.67'
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
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: ~
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
Layout/MultilineMethodParameterLineBreaks:
Description: >-
Checks that each parameter in a multi-line method definition
starts on a separate line.
Enabled: false
VersionAdded: '1.32'
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: ~
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: ~
Layout/RedundantLineBreak:
Description: >-
Do not break up an expression into multiple lines when it fits
on a single line.
Enabled: false
InspectBlocks: false
VersionAdded: '1.13'
Layout/RescueEnsureAlignment:
Description: 'Align rescues and ensures correctly.'
Enabled: true
VersionAdded: '0.49'
Layout/SingleLineBlockChain:
Description: 'Put method call on a separate line if chained to a single line block.'
Enabled: false
VersionAdded: '1.14'
Layout/SpaceAfterColon:
Description: 'Use spaces after colons.'
StyleGuide: '#spaces-operators'
Enabled: true
VersionAdded: '0.49'
Layout/SpaceAfterComma:
Description: 'Use spaces after commas.'
StyleGuide: '#spaces-operators'
Enabled: true
VersionAdded: '0.49'
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'
Layout/SpaceAfterNot:
Description: Tracks redundant space after the ! operator.
StyleGuide: '#no-space-bang'
Enabled: true
VersionAdded: '0.49'
Layout/SpaceAfterSemicolon:
Description: 'Use spaces after semicolons.'
StyleGuide: '#spaces-operators'
Enabled: true
VersionAdded: '0.49'
Layout/SpaceAroundBlockParameters:
Description: 'Checks the spacing inside and after block parameters pipes.'
Enabled: true
VersionAdded: '0.49'
EnforcedStyleInsidePipes: no_space
SupportedStylesInsidePipes:
- space
- no_space
Layout/SpaceAroundEqualsInParameterDefault:
Description: >-
Checks that the equals signs in parameter default assignments
have or don't have surrounding space depending on
configuration.
StyleGuide: '#spaces-around-equals'
Enabled: true
VersionAdded: '0.49'
EnforcedStyle: space
SupportedStyles:
- space
- no_space
Layout/SpaceAroundKeyword:
Description: 'Use a space around keywords if appropriate.'
Enabled: true
VersionAdded: '0.49'
Layout/SpaceAroundMethodCallOperator:
Description: 'Checks method call operators to not have spaces around them.'
Enabled: true
VersionAdded: '0.82'
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
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'
Layout/SpaceBeforeBrackets:
Description: 'Checks for receiver with a space before the opening brackets.'
StyleGuide: '#space-in-brackets-access'
Enabled: pending
VersionAdded: '1.7'
Layout/SpaceBeforeComma:
Description: 'No spaces before commas.'
Enabled: true
VersionAdded: '0.49'
Layout/SpaceBeforeComment:
Description: >-
Checks for missing space between code and a comment on the
same line.
Enabled: true
VersionAdded: '0.49'
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
Layout/SpaceBeforeSemicolon:
Description: 'No spaces before semicolons.'
Enabled: true
VersionAdded: '0.49'
Layout/SpaceInLambdaLiteral:
Description: 'Checks for spaces in lambda literals.'
Enabled: true
VersionAdded: '0.49'
EnforcedStyle: require_no_space
SupportedStyles:
- require_no_space
- require_space
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
Layout/SpaceInsideArrayPercentLiteral:
Description: 'No unnecessary additional spaces between elements in %i/%w literals.'
Enabled: true
VersionAdded: '0.49'
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
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
Layout/SpaceInsideParens:
Description: 'No spaces after ( or before ).'
StyleGuide: '#spaces-braces'
Enabled: true
VersionAdded: '0.49'
VersionChanged: '1.22'
EnforcedStyle: no_space
SupportedStyles:
- space
- compact
- no_space
Layout/SpaceInsidePercentLiteralDelimiters:
Description: 'No unnecessary spaces inside delimiters of %i/%w/%x literals.'
Enabled: true
VersionAdded: '0.49'
Layout/SpaceInsideRangeLiteral:
Description: 'No spaces inside range literals.'
StyleGuide: '#no-space-inside-range-literals'
Enabled: true
VersionAdded: '0.49'
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
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
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
Layout/TrailingWhitespace:
Description: 'Avoid trailing whitespace.'
StyleGuide: '#no-trailing-whitespace'
Enabled: true
VersionAdded: '0.49'
VersionChanged: '1.0'
AllowInHeredoc: false
Lint/AmbiguousAssignment:
Description: 'Checks for mistyped shorthand assignments.'
Enabled: pending
VersionAdded: '1.7'
Lint/AmbiguousBlockAssociation:
Description: >-
Checks for ambiguous block association with method when param passed without
parentheses.
StyleGuide: '#syntax'
Enabled: true
VersionAdded: '0.48'
VersionChanged: '1.13'
AllowedMethods: []
AllowedPatterns: []
IgnoredMethods: []
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'
Lint/AmbiguousOperatorPrecedence:
Description: >-
Checks for expressions containing multiple binary operations with
ambiguous precedence.
Enabled: pending
VersionAdded: '1.21'
Lint/AmbiguousRange:
Description: Checks for ranges with ambiguous boundaries.
Enabled: pending
VersionAdded: '1.19'
SafeAutoCorrect: false
RequireParenthesesForMethodChains: false
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
Lint/BigDecimalNew:
Description: '`BigDecimal.new()` is deprecated. Use `BigDecimal()` instead.'
Enabled: true
VersionAdded: '0.53'
Lint/BinaryOperatorWithIdenticalOperands:
Description: 'Checks for places where binary operator has identical operands.'
Enabled: true
Safe: false
VersionAdded: '0.89'
VersionChanged: '1.7'
Lint/BooleanSymbol:
Description: 'Check for `:true` and `:false` symbols.'
Enabled: true
SafeAutoCorrect: false
VersionAdded: '0.50'
VersionChanged: '1.22'
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'
VersionChanged: '1.3'
AllowedMethods:
- enums
Lint/ConstantOverwrittenInRescue:
Description: 'Checks for overwriting an exception with an exception result by use `rescue =>`.'
Enabled: pending
VersionAdded: '1.31'
Lint/ConstantResolution:
Description: 'Check that constants are fully qualified with `::`.'
Enabled: false
VersionAdded: '0.86'
Only: []
Ignore: []
Lint/Debugger:
Description: 'Check for debugger calls.'
Enabled: true
VersionAdded: '0.14'
VersionChanged: '1.10'
DebuggerReceivers: [] DebuggerMethods:
Kernel:
- binding.irb
- Kernel.binding.irb
Byebug:
- byebug
- remote_byebug
- Kernel.byebug
- Kernel.remote_byebug
Capybara:
- save_and_open_page
- save_and_open_screenshot
debug.rb:
- binding.b
- binding.break
- Kernel.binding.b
- Kernel.binding.break
Pry:
- binding.pry
- binding.remote_pry
- binding.pry_remote
- Kernel.binding.pry
- Kernel.binding.remote_pry
- Kernel.binding.pry_remote
- Pry.rescue
Rails:
- debugger
- Kernel.debugger
RubyJard:
- jard
WebConsole:
- binding.console
Lint/DeprecatedClassMethods:
Description: 'Check for deprecated class method calls.'
Enabled: true
VersionAdded: '0.19'
Lint/DeprecatedConstants:
Description: 'Checks for deprecated constants.'
Enabled: pending
VersionAdded: '1.8'
VersionChanged: '1.40'
DeprecatedConstants:
'NIL':
Alternative: 'nil'
DeprecatedVersion: '2.4'
'TRUE':
Alternative: 'true'
DeprecatedVersion: '2.4'
'FALSE':
Alternative: 'false'
DeprecatedVersion: '2.4'
'Net::HTTPServerException':
Alternative: 'Net::HTTPClientException'
DeprecatedVersion: '2.6'
'Random::DEFAULT':
Alternative: 'Random.new'
DeprecatedVersion: '3.0'
'Struct::Group':
Alternative: 'Etc::Group'
DeprecatedVersion: '3.0'
'Struct::Passwd':
Alternative: 'Etc::Passwd'
DeprecatedVersion: '3.0'
Lint/DeprecatedOpenSSLConstant:
Description: "Don't use algorithm constants for `OpenSSL::Cipher` and `OpenSSL::Digest`."
Enabled: true
VersionAdded: '0.84'
Lint/DisjunctiveAssignmentInConstructor:
Description: 'In constructor, plain assignment is preferred over disjunctive.'
Enabled: true
Safe: false
VersionAdded: '0.62'
VersionChanged: '0.88'
Lint/DuplicateBranch:
Description: Checks that there are no repeated bodies within `if/unless`, `case-when` and `rescue` constructs.
Enabled: pending
VersionAdded: '1.3'
VersionChanged: '1.7'
IgnoreLiteralBranches: false
IgnoreConstantBranches: false
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/DuplicateMagicComment:
Description: 'Check for duplicated magic comments.'
Enabled: pending
VersionAdded: '1.37'
Lint/DuplicateMethods:
Description: 'Check for duplicate method definitions.'
Enabled: true
VersionAdded: '0.29'
Lint/DuplicateRegexpCharacterClassElement:
Description: 'Checks for duplicate elements in Regexp character classes.'
Enabled: pending
VersionAdded: '1.1'
Lint/DuplicateRequire:
Description: 'Check for duplicate `require`s and `require_relative`s.'
Enabled: true
SafeAutoCorrect: false
VersionAdded: '0.90'
VersionChanged: '1.28'
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'
VersionChanged: '1.2'
Lint/EmptyBlock:
Description: 'Checks for blocks without a body.'
Enabled: pending
VersionAdded: '1.1'
VersionChanged: '1.15'
AllowComments: true
AllowEmptyLambdas: true
Lint/EmptyClass:
Description: 'Checks for classes and metaclasses without a body.'
Enabled: pending
VersionAdded: '1.3'
AllowComments: false
Lint/EmptyConditionalBody:
Description: 'Checks for the presence of `if`, `elsif` and `unless` branches without a body.'
Enabled: true
SafeAutoCorrect: false
AllowComments: true
VersionAdded: '0.89'
VersionChanged: '1.34'
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'
Lint/EmptyInPattern:
Description: 'Checks for the presence of `in` pattern branches without a body.'
Enabled: pending
AllowComments: true
VersionAdded: '1.16'
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'
Lint/EnsureReturn:
Description: 'Do not use return in an ensure block.'
StyleGuide: '#no-return-ensure'
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.83'
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'
Lint/HeredocMethodCallPosition:
Description: >-
Checks for the ordering of a method call where
the receiver of the call is a HEREDOC.
Enabled: false
StyleGuide: '#heredoc-method-calls'
VersionAdded: '0.68'
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/IncompatibleIoSelectWithFiberScheduler:
Description: 'Checks for `IO.select` that is incompatible with Fiber Scheduler.'
Enabled: pending
SafeAutoCorrect: false
VersionAdded: '1.21'
VersionChanged: '1.24'
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'
Lint/InheritException:
Description: 'Avoid inheriting from the `Exception` class.'
Enabled: true
SafeAutoCorrect: false
VersionAdded: '0.41'
VersionChanged: '1.26'
EnforcedStyle: standard_error
SupportedStyles:
- standard_error
- runtime_error
Lint/InterpolationCheck:
Description: 'Checks for interpolation in a single quoted string.'
Enabled: true
SafeAutoCorrect: false
VersionAdded: '0.50'
VersionChanged: '1.40'
Lint/LambdaWithoutLiteralBlock:
Description: 'Checks uses of lambda without a literal block.'
Enabled: pending
VersionAdded: '1.8'
Lint/LiteralAsCondition:
Description: 'Checks of literals used in conditions.'
Enabled: true
VersionAdded: '0.51'
Lint/LiteralInInterpolation:
Description: 'Checks for literals used in interpolation.'
Enabled: true
VersionAdded: '0.19'
VersionChanged: '0.32'
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: '1.3'
Safe: false
Lint/MissingCopEnableDirective:
Description: 'Checks for a `# rubocop:enable` after `# rubocop:disable`.'
Enabled: true
VersionAdded: '0.52'
MaximumRangeSize: .inf
Lint/MissingSuper:
Description: >-
Checks for the presence of constructors and lifecycle callbacks
without calls to `super`.
Enabled: true
VersionAdded: '0.89'
VersionChanged: '1.4'
Lint/MixedRegexpCaptureTypes:
Description: 'Do not mix named captures and numbered captures in a Regexp literal.'
Enabled: true
VersionAdded: '0.85'
Lint/MultipleComparison:
Description: "Use `&&` operator to compare multiple values."
Enabled: true
VersionAdded: '0.47'
VersionChanged: '1.1'
Lint/NestedMethodDefinition:
Description: 'Do not use nested method definitions.'
StyleGuide: '#no-nested-methods'
Enabled: true
AllowedMethods: []
AllowedPatterns: []
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'
Lint/NoReturnInBeginEndBlocks:
Description: 'Do not `return` inside `begin..end` blocks in assignment contexts.'
Enabled: pending
VersionAdded: '1.2'
Lint/NonAtomicFileOperation:
Description: Checks for non-atomic file operations.
StyleGuide: '#atomic-file-operations'
Enabled: pending
VersionAdded: '1.31'
SafeAutoCorrect: false
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'
Lint/NumberConversion:
Description: 'Checks unsafe usage of number conversion methods.'
Enabled: false
VersionAdded: '0.53'
VersionChanged: '1.1'
SafeAutoCorrect: false
AllowedMethods: []
AllowedPatterns: []
IgnoredMethods: [] IgnoredClasses:
- Time
- DateTime
Lint/NumberedParameterAssignment:
Description: 'Checks for uses of numbered parameter assignment.'
Enabled: pending
VersionAdded: '1.9'
Lint/OrAssignmentToConstant:
Description: 'Checks unintended or-assignment to constant.'
Enabled: pending
Safe: false
VersionAdded: '1.9'
Lint/OrderedMagicComments:
Description: 'Checks the proper ordering of magic comments and whether a magic comment is not placed before a shebang.'
Enabled: true
SafeAutoCorrect: false
VersionAdded: '0.53'
VersionChanged: '1.37'
Lint/OutOfRangeRegexpRef:
Description: 'Checks for out of range reference for Regexp because it always returns nil.'
Enabled: true
Safe: false
VersionAdded: '0.89'
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'
Lint/PercentStringArray:
Description: >-
Checks for unwanted commas and quotes in %w/%W literals.
Enabled: true
Safe: false
VersionAdded: '0.41'
Lint/PercentSymbolArray:
Description: >-
Checks for unwanted commas and colons in %i/%I literals.
Enabled: true
VersionAdded: '0.41'
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'
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'
Lint/RedundantCopEnableDirective:
Description: Checks for rubocop:enable comments that can be removed.
Enabled: true
VersionAdded: '0.76'
Lint/RedundantDirGlobSort:
Description: 'Checks for redundant `sort` method to `Dir.glob` and `Dir[]`.'
Enabled: pending
VersionAdded: '1.8'
VersionChanged: '1.26'
SafeAutoCorrect: false
Lint/RedundantRequireStatement:
Description: 'Checks for unnecessary `require` statement.'
Enabled: true
VersionAdded: '0.76'
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
Lint/RedundantSplatExpansion:
Description: 'Checks for splat unnecessarily being called on literals.'
Enabled: true
VersionAdded: '0.76'
VersionChanged: '1.7'
AllowPercentLiteralArrayArgument: true
Lint/RedundantStringCoercion:
Description: 'Checks for Object#to_s usage in string interpolation.'
StyleGuide: '#no-to-s'
Enabled: true
VersionAdded: '0.19'
VersionChanged: '0.77'
Lint/RedundantWithIndex:
Description: 'Checks for redundant `with_index`.'
Enabled: true
VersionAdded: '0.50'
Lint/RedundantWithObject:
Description: 'Checks for redundant `with_object`.'
Enabled: true
VersionAdded: '0.51'
Lint/RefinementImportMethods:
Description: 'Use `Refinement#import_methods` when using `include` or `prepend` in `refine` block.'
Enabled: pending
SafeAutoCorrect: false
VersionAdded: '1.27'
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/RequireRangeParentheses:
Description: 'Checks that a range literal is enclosed in parentheses when the end of the range is at a line break.'
Enabled: pending
VersionAdded: '1.32'
Lint/RequireRelativeSelfPath:
Description: 'Checks for uses a file requiring itself with `require_relative`.'
Enabled: pending
VersionAdded: '1.22'
Lint/RescueException:
Description: 'Avoid rescuing the Exception class.'
StyleGuide: '#no-blind-rescues'
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.27'
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?
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!
Lint/SafeNavigationWithEmpty:
Description: 'Avoid `foo&.empty?` in conditionals.'
Enabled: true
VersionAdded: '0.62'
VersionChanged: '0.87'
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'
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
AllowNil: true
VersionAdded: '0.9'
VersionChanged: '1.12'
Lint/SymbolConversion:
Description: 'Checks for unnecessary symbol conversions.'
Enabled: pending
VersionAdded: '1.9'
VersionChanged: '1.16'
EnforcedStyle: strict
SupportedStyles:
- strict
- consistent
Lint/Syntax:
Description: 'Checks for syntax errors.'
Enabled: true
VersionAdded: '0.9'
Lint/ToEnumArguments:
Description: 'Ensures that `to_enum`/`enum_for`, called for the current method, has correct arguments.'
Enabled: pending
VersionAdded: '1.1'
Lint/ToJSON:
Description: 'Ensure #to_json includes an optional argument.'
Enabled: true
VersionAdded: '0.66'
Lint/TopLevelReturnWithArgument:
Description: 'Detects top level return statements with argument.'
Enabled: true
VersionAdded: '0.89'
Lint/TrailingCommaInAttributeDeclaration:
Description: 'Checks for trailing commas in attribute declarations.'
Enabled: true
VersionAdded: '0.90'
Lint/TripleQuotes:
Description: 'Checks for useless triple quote constructs.'
Enabled: pending
VersionAdded: '1.9'
Lint/UnderscorePrefixedVariableName:
Description: 'Do not use prefix `_` for a variable that is used.'
Enabled: true
VersionAdded: '0.21'
AllowKeywordBlockArguments: false
Lint/UnexpectedBlockArity:
Description: 'Looks for blocks that have fewer arguments that the calling method expects.'
Enabled: pending
Safe: false
VersionAdded: '1.5'
Methods:
chunk_while: 2
each_with_index: 2
each_with_object: 2
inject: 2
max: 2
min: 2
minmax: 2
reduce: 2
slice_when: 2
sort: 2
Lint/UnifiedInteger:
Description: 'Use Integer instead of Fixnum or Bignum.'
Enabled: true
VersionAdded: '0.43'
Lint/UnmodifiedReduceAccumulator:
Description: Checks for `reduce` or `inject` blocks that do not update the accumulator each iteration.
Enabled: pending
VersionAdded: '1.1'
VersionChanged: '1.5'
Lint/UnreachableCode:
Description: 'Unreachable code.'
Enabled: true
VersionAdded: '0.9'
Lint/UnreachableLoop:
Description: 'Checks for loops that will have at most one iteration.'
Enabled: true
VersionAdded: '0.89'
VersionChanged: '1.7'
AllowedPatterns:
- !ruby/regexp /(exactly|at_least|at_most)\(\d+\)\.times/
IgnoredPatterns: []
Lint/UnusedBlockArgument:
Description: 'Checks for unused block arguments.'
StyleGuide: '#underscore-unused-vars'
Enabled: true
VersionAdded: '0.21'
VersionChanged: '0.22'
IgnoreEmptyBlocks: true
AllowUnusedKeywordArguments: false
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`
depending 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`
depending on your specific use case.
Enabled: true
VersionAdded: '0.50'
Lint/UriRegexp:
Description: 'Use `URI::DEFAULT_PARSER.make_regexp` instead of `URI.regexp`.'
Enabled: true
VersionAdded: '0.50'
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'
VersionChanged: '1.31'
Lint/UselessMethodDefinition:
Description: 'Checks for useless method definitions.'
Enabled: true
VersionAdded: '0.90'
VersionChanged: '0.91'
Safe: false
Lint/UselessRuby2Keywords:
Description: 'Finds unnecessary uses of `ruby2_keywords`.'
Enabled: pending
VersionAdded: '1.23'
Lint/UselessSetterCall:
Description: 'Checks for useless setter call to a local variable.'
Enabled: true
SafeAutoCorrect: false
VersionAdded: '0.13'
VersionChanged: '1.2'
Safe: false
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
Metrics/AbcSize:
Description: >-
A calculated magnitude based on number of assignments,
branches, and conditions.
Reference:
- http://c2.com/cgi/wiki?AbcMetric
- https://en.wikipedia.org/wiki/ABC_Software_Metric
Enabled: true
VersionAdded: '0.27'
VersionChanged: '1.5'
AllowedMethods: []
AllowedPatterns: []
IgnoredMethods: [] CountRepeatedAttributes: true
Max: 17
Metrics/BlockLength:
Description: 'Avoid long blocks with many lines.'
Enabled: true
VersionAdded: '0.44'
VersionChanged: '1.5'
CountComments: false Max: 25
CountAsOne: []
ExcludedMethods: [] AllowedMethods:
- refine
AllowedPatterns: []
IgnoredMethods: [] Exclude:
- '**/*.gemspec'
Metrics/BlockNesting:
Description: 'Avoid excessive block nesting.'
StyleGuide: '#three-is-the-number-thou-shalt-count'
Enabled: true
VersionAdded: '0.25'
VersionChanged: '0.47'
CountBlocks: false
Max: 3
Metrics/ClassLength:
Description: 'Avoid classes longer than 100 lines of code.'
Enabled: true
VersionAdded: '0.25'
VersionChanged: '0.87'
CountComments: false Max: 100
CountAsOne: []
Metrics/CyclomaticComplexity:
Description: >-
A complexity metric that is strongly correlated to the number
of test cases needed to validate a method.
Enabled: true
VersionAdded: '0.25'
VersionChanged: '0.81'
AllowedMethods: []
AllowedPatterns: []
IgnoredMethods: [] Max: 7
Metrics/MethodLength:
Description: 'Avoid methods longer than 10 lines of code.'
StyleGuide: '#short-methods'
Enabled: true
VersionAdded: '0.25'
VersionChanged: '1.5'
CountComments: false Max: 10
CountAsOne: []
ExcludedMethods: [] AllowedMethods: []
AllowedPatterns: []
IgnoredMethods: []
Metrics/ModuleLength:
Description: 'Avoid modules longer than 100 lines of code.'
Enabled: true
VersionAdded: '0.31'
VersionChanged: '0.87'
CountComments: false Max: 100
CountAsOne: []
Metrics/ParameterLists:
Description: 'Avoid parameter lists longer than three or four parameters.'
StyleGuide: '#too-many-params'
Enabled: true
VersionAdded: '0.25'
VersionChanged: '1.5'
Max: 5
CountKeywordArgs: true
MaxOptionalParameters: 3
Metrics/PerceivedComplexity:
Description: >-
A complexity metric geared towards measuring complexity for a
human reader.
Enabled: true
VersionAdded: '0.25'
VersionChanged: '0.81'
AllowedMethods: []
AllowedPatterns: []
IgnoredMethods: [] Max: 8
Migration/DepartmentName:
Description: >-
Check that cop names in rubocop:disable (etc) comments are
given with department name.
Enabled: true
VersionAdded: '0.75'
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'
VersionChanged: '1.2'
Naming/BlockForwarding:
Description: 'Use anonymous block forwarding.'
StyleGuide: '#block-forwarding'
Enabled: pending
VersionAdded: '1.24'
EnforcedStyle: anonymous
SupportedStyles:
- anonymous
- explicit
BlockForwardingName: block
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'
VersionChanged: '1.23'
Exclude: []
ExpectMatchingDefinition: false
CheckDefinitionPathHierarchy: true
CheckDefinitionPathHierarchyRoots:
- lib
- spec
- test
- src
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'
VersionChanged: '1.2'
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/InclusiveLanguage:
Description: 'Recommend the use of inclusive language instead of problematic terms.'
Enabled: false
VersionAdded: '1.18'
VersionChanged: '1.21'
CheckIdentifiers: true
CheckConstants: true
CheckVariables: true
CheckStrings: false
CheckSymbols: true
CheckComments: true
CheckFilepaths: true
FlaggedTerms:
whitelist:
Regex: !ruby/regexp '/white[-_\s]?list/'
Suggestions:
- allowlist
- permit
blacklist:
Regex: !ruby/regexp '/black[-_\s]?list/'
Suggestions:
- denylist
- block
slave:
WholeWord: true
Suggestions: ['replica', 'secondary', 'follower']
Naming/MemoizedInstanceVariableName:
Description: >-
Memoized method name should match memo instance variable name.
Enabled: true
VersionAdded: '0.53'
VersionChanged: '1.2'
EnforcedStyleForLeadingUnderscores: disallowed
SupportedStylesForLeadingUnderscores:
- disallowed
- required
- optional
Safe: false
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: []
IgnoredPatterns: []
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:
- as
- at
- by
- cc
- db
- id
- if
- 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/**/*'
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'
VersionChanged: '1.8'
EnforcedStyle: snake_case
SupportedStyles:
- snake_case
- camelCase
AllowedIdentifiers: []
AllowedPatterns: []
Naming/VariableNumber:
Description: 'Use the configured style when numbering symbols, methods and variables.'
StyleGuide: '#snake-case-symbols-methods-vars-with-numbers'
Enabled: true
VersionAdded: '0.50'
VersionChanged: '1.4'
EnforcedStyle: normalcase
SupportedStyles:
- snake_case
- normalcase
- non_integer
CheckMethodNames: true
CheckSymbols: true
AllowedIdentifiers:
- capture3 - iso8601 - rfc1123_date - rfc822 - rfc2822 - rfc3339 AllowedPatterns: []
Security/CompoundHash:
Description: 'When overwriting Object#hash to combine values, prefer delegating to Array#hash over writing a custom implementation.'
Enabled: pending
VersionAdded: '1.28'
Security/Eval:
Description: 'The use of eval represents a serious security risk.'
Enabled: true
VersionAdded: '0.47'
Security/IoMethods:
Description: >-
Checks for the first argument to `IO.read`, `IO.binread`, `IO.write`, `IO.binwrite`,
`IO.foreach`, and `IO.readlines`.
Enabled: pending
Safe: false
VersionAdded: '1.22'
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: '1.22'
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` and `URI.open` represent a serious security risk.'
Enabled: true
VersionAdded: '0.53'
VersionChanged: '1.0'
Safe: false
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
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
SafeAutoCorrect: false
Style/AccessorGrouping:
Description: 'Checks for grouping of accessors in `class` and `module` bodies.'
Enabled: true
VersionAdded: '0.87'
EnforcedStyle: grouped
SupportedStyles:
- separated
- grouped
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
Style/AndOr:
Description: 'Use &&/|| instead of and/or.'
StyleGuide: '#no-and-or-or'
Enabled: true
SafeAutoCorrect: false
VersionAdded: '0.9'
VersionChanged: '1.21'
EnforcedStyle: conditionals
SupportedStyles:
- always
- conditionals
Style/ArgumentsForwarding:
Description: 'Use arguments forwarding.'
StyleGuide: '#arguments-forwarding'
Enabled: pending
AllowOnlyRestArgument: true
VersionAdded: '1.1'
Style/ArrayCoercion:
Description: >-
Use Array() instead of explicit Array check or [*var], when dealing
with a variable you want to treat as an Array, but you're not certain it's an array.
StyleGuide: '#array-coercion'
Safe: false
Enabled: false
VersionAdded: '0.88'
Style/ArrayIntersect:
Description: 'Use `array1.intersect?(array2)` instead of `(array1 & array2).any?`.'
Enabled: 'pending'
VersionAdded: '1.40'
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: false
VersionAdded: '0.9'
VersionChanged: '1.21'
AllowedChars:
- ©
Style/Attr:
Description: 'Checks for uses of Module#attr.'
StyleGuide: '#attr'
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.12'
Style/AutoResourceCleanup:
Description: 'Suggests the usage of an auto resource cleanup version of a method (if available).'
Enabled: false
VersionAdded: '0.30'
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'
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'
Style/BlockComments:
Description: 'Do not use block comments.'
StyleGuide: '#no-block-comments'
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.23'
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
AllowedPatterns: []
IgnoredMethods: [] AllowBracesOnProceduralOneLiners: false
BracesRequiredMethods: []
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
AllowOnSelfClass: false
Style/CaseLikeIf:
Description: 'Identifies places where `if-elsif` constructions can be replaced with `case-when`.'
StyleGuide: '#case-vs-if-else'
Enabled: true
Safe: false
VersionAdded: '0.88'
Style/CharacterLiteral:
Description: 'Checks for uses of character literals.'
StyleGuide: '#no-character-literals'
Enabled: true
VersionAdded: '0.9'
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
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?
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?
AllowedPatterns: []
IgnoredMethods: []
Style/ClassMethods:
Description: 'Use self when defining module/class methods.'
StyleGuide: '#def-self-class-methods'
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.20'
Style/ClassMethodsDefinitions:
Description: 'Enforces using `def self.method_name` or `class << self` to define class methods.'
StyleGuide: '#def-self-class-methods'
Enabled: false
VersionAdded: '0.89'
EnforcedStyle: def_self
SupportedStyles:
- def_self
- self_class
Style/ClassVars:
Description: 'Avoid the use of class variables.'
StyleGuide: '#no-class-vars'
Enabled: true
VersionAdded: '0.13'
Style/CollectionCompact:
Description: 'Use `{Array,Hash}#{compact,compact!}` instead of custom logic to reject nils.'
Enabled: pending
Safe: false
VersionAdded: '1.2'
VersionChanged: '1.3'
Style/CollectionMethods:
Description: 'Preferred collection methods.'
StyleGuide: '#map-find-select-reduce-include-size'
Enabled: false
VersionAdded: '0.9'
VersionChanged: '1.7'
Safe: false
PreferredMethods:
collect: 'map'
collect!: 'map!'
inject: 'reduce'
detect: 'find'
find_all: 'select'
member?: 'include?'
MethodsAcceptingSymbol:
- inject
- reduce
Style/ColonMethodCall:
Description: 'Do not use :: for method call.'
StyleGuide: '#double-colons'
Enabled: true
VersionAdded: '0.9'
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'
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
Style/CommentAnnotation:
Description: >-
Checks formatting of special comments
(TODO, FIXME, OPTIMIZE, HACK, REVIEW, NOTE).
StyleGuide: '#annotate-keywords'
Enabled: true
VersionAdded: '0.10'
VersionChanged: '1.20'
Keywords:
- TODO
- FIXME
- OPTIMIZE
- HACK
- REVIEW
- NOTE
RequireColon: true
Style/CommentedKeyword:
Description: 'Do not place comments on the same line as certain keywords.'
Enabled: true
SafeAutoCorrect: false
VersionAdded: '0.51'
VersionChanged: '1.19'
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
Style/ConstantVisibility:
Description: >-
Check that class- and module constants have
visibility declarations.
Enabled: false
VersionAdded: '0.66'
VersionChanged: '1.10'
IgnoreModules: false
Style/Copyright:
Description: 'Include a copyright notice in each file before any code.'
Enabled: false
VersionAdded: '0.30'
Notice: '^Copyright (\(c\) )?2[0-9]{3} .+'
AutocorrectNotice: ''
Style/DateTime:
Description: 'Use Time over DateTime.'
StyleGuide: '#date-time'
Enabled: false
VersionAdded: '0.51'
VersionChanged: '0.92'
SafeAutoCorrect: false
AllowCoercion: false
Style/DefWithParentheses:
Description: 'Use def with parentheses when there are arguments.'
StyleGuide: '#method-parens'
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.12'
Style/Dir:
Description: >-
Use the `__dir__` method to retrieve the canonicalized
absolute path to the current file.
Enabled: true
VersionAdded: '0.50'
Style/DisableCopsWithinSourceCodeDirective:
Description: >-
Forbids disabling/enabling cops within source code.
Enabled: false
VersionAdded: '0.82'
VersionChanged: '1.9'
AllowedCops: []
Style/DocumentDynamicEvalDefinition:
Description: >-
When using `class_eval` (or other `eval`) with string interpolation,
add a comment block showing its appearance if interpolated.
StyleGuide: '#eval-comment-docs'
Enabled: pending
VersionAdded: '1.1'
VersionChanged: '1.3'
Style/Documentation:
Description: 'Document classes and non-namespace modules.'
Enabled: true
VersionAdded: '0.9'
AllowedConstants: []
Exclude:
- 'spec/**/*'
- 'test/**/*'
Style/DocumentationMethod:
Description: 'Checks for missing documentation comment for public methods.'
Enabled: false
VersionAdded: '0.43'
Exclude:
- 'spec/**/*'
- 'test/**/*'
RequireForNonPublicMethods: false
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: '1.2'
EnforcedStyle: allowed_in_returns
SafeAutoCorrect: false
SupportedStyles:
- allowed_in_returns
- forbidden
Style/EachForSimpleLoop:
Description: >-
Use `Integer#times` for a simple loop which iterates a fixed
number of times.
Enabled: true
VersionAdded: '0.41'
Style/EachWithObject:
Description: 'Prefer `each_with_object` over `inject` or `reduce`.'
Enabled: true
VersionAdded: '0.22'
VersionChanged: '0.42'
Style/EmptyBlockParameter:
Description: 'Omit pipes for empty block parameters.'
Enabled: true
VersionAdded: '0.52'
Style/EmptyCaseCondition:
Description: 'Avoid empty condition in case statements.'
Enabled: true
VersionAdded: '0.40'
Style/EmptyElse:
Description: 'Avoid empty else-clauses.'
Enabled: true
VersionAdded: '0.28'
VersionChanged: '0.32'
EnforcedStyle: both
SupportedStyles:
- empty
- nil
- both
AllowComments: false
Style/EmptyHeredoc:
Description: 'Checks for using empty heredoc to reduce redundancy.'
Enabled: pending
VersionAdded: '1.32'
Style/EmptyLambdaParameter:
Description: 'Omit parens for empty lambda parameters.'
Enabled: true
VersionAdded: '0.52'
Style/EmptyLiteral:
Description: 'Prefer literals to Array.new/Hash.new/String.new.'
StyleGuide: '#literal-array-hash'
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.12'
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
Style/Encoding:
Description: 'Use UTF-8 as the source file encoding.'
StyleGuide: '#utf-8'
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.50'
Style/EndBlock:
Description: 'Avoid the use of END blocks.'
StyleGuide: '#no-END-blocks'
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.81'
Style/EndlessMethod:
Description: 'Avoid the use of multi-lined endless method definitions.'
StyleGuide: '#endless-methods'
Enabled: pending
VersionAdded: '1.8'
EnforcedStyle: allow_single_line
SupportedStyles:
- allow_single_line
- allow_always
- disallow
Style/EnvHome:
Description: "Checks for consistent usage of `ENV['HOME']`."
Enabled: pending
Safe: false
VersionAdded: '1.29'
Style/EvalWithLocation:
Description: 'Pass `__FILE__` and `__LINE__` to `eval` method, as they are used by backtraces.'
Enabled: true
VersionAdded: '0.52'
Style/EvenOdd:
Description: 'Favor the use of `Integer#even?` && `Integer#odd?`.'
StyleGuide: '#predicate-methods'
Enabled: true
VersionAdded: '0.12'
VersionChanged: '0.29'
Style/ExpandPathArguments:
Description: "Use `expand_path(__dir__)` instead of `expand_path('..', __FILE__)`."
Enabled: true
VersionAdded: '0.53'
Style/ExplicitBlockArgument:
Description: >-
Consider using explicit block argument to avoid writing block literal
that just passes its arguments to another block.
StyleGuide: '#block-argument'
Enabled: true
VersionAdded: '0.89'
VersionChanged: '1.8'
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/FetchEnvVar:
Description: >-
Suggests `ENV.fetch` for the replacement of `ENV[]`.
Reference:
- https://rubystyle.guide/#hash-fetch-defaults
Enabled: pending
VersionAdded: '1.28'
AllowedVars: []
Style/FileRead:
Description: 'Favor `File.(bin)read` convenience methods.'
StyleGuide: '#file-read'
Enabled: pending
VersionAdded: '1.24'
Style/FileWrite:
Description: 'Favor `File.(bin)write` convenience methods.'
StyleGuide: '#file-write'
Enabled: pending
VersionAdded: '1.24'
Style/FloatDivision:
Description: 'For performing float division, coerce one side only.'
StyleGuide: '#float-division'
Reference: 'https://blog.rubystyle.guide/ruby/2019/06/21/float-division.html'
Enabled: true
VersionAdded: '0.72'
VersionChanged: '1.9'
Safe: false
EnforcedStyle: single_coerce
SupportedStyles:
- left_coerce
- right_coerce
- single_coerce
- fdiv
Style/For:
Description: 'Checks use of for or each in multiline loops.'
StyleGuide: '#no-for-loops'
Enabled: true
SafeAutoCorrect: false
VersionAdded: '0.13'
VersionChanged: '1.26'
EnforcedStyle: each
SupportedStyles:
- each
- for
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: annotated
SupportedStyles:
- annotated
- template
- unannotated
MaxUnannotatedPlaceholdersAllowed: 1
VersionAdded: '0.49'
VersionChanged: '1.0'
AllowedMethods: []
AllowedPatterns: []
IgnoredMethods: []
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
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: '1.31'
MinBodyLength: 1
AllowConsecutiveConditionals: false
Style/HashAsLastArrayItem:
Description: >-
Checks for presence or absence of braces around hash literal as a last
array item depending on configuration.
StyleGuide: '#hash-literal-as-last-array-item'
Enabled: true
VersionAdded: '0.88'
EnforcedStyle: braces
SupportedStyles:
- braces
- no_braces
Style/HashConversion:
Description: 'Avoid Hash[] in favor of ary.to_h or literal hashes.'
StyleGuide: '#avoid-hash-constructor'
Enabled: pending
VersionAdded: '1.10'
VersionChanged: '1.11'
AllowSplatArgument: true
Style/HashEachMethods:
Description: 'Use Hash#each_key and Hash#each_value.'
StyleGuide: '#hash-each'
Enabled: true
Safe: false
VersionAdded: '0.80'
VersionChanged: '1.16'
AllowedReceivers: []
Style/HashExcept:
Description: >-
Checks for usages of `Hash#reject`, `Hash#select`, and `Hash#filter` methods
that can be replaced with `Hash#except` method.
Enabled: pending
Safe: false
VersionAdded: '1.7'
VersionChanged: '1.39'
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
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: '1.24'
EnforcedStyle: ruby19
SupportedStyles:
- ruby19
- hash_rockets
- no_mixed_keys
- ruby19_no_mixed_keys
EnforcedShorthandSyntax: always
SupportedShorthandSyntax:
- always
- never
- either
- consistent
UseHashRocketsWithSymbolValues: false
PreferHashRocketsForNonAlnumEndingSymbols: false
Style/HashTransformKeys:
Description: 'Prefer `transform_keys` over `each_with_object`, `map`, or `to_h`.'
Enabled: true
VersionAdded: '0.80'
VersionChanged: '0.90'
Safe: false
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
SafeAutoCorrect: false
VersionAdded: '0.36'
VersionChanged: '1.19'
Style/IfInsideElse:
Description: 'Finds if nodes inside else, which can be converted to elsif.'
Enabled: true
AllowIfModifier: false
VersionAdded: '0.36'
VersionChanged: '1.3'
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'
Style/IfUnlessModifierOfIfUnless:
Description: >-
Avoid modifier if/unless usage on conditionals.
Enabled: true
VersionAdded: '0.39'
VersionChanged: '0.87'
Style/IfWithBooleanLiteralBranches:
Description: 'Checks for redundant `if` with boolean literal branches.'
Enabled: pending
VersionAdded: '1.9'
SafeAutoCorrect: false
AllowedMethods:
- nonzero?
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'
Style/ImplicitRuntimeError:
Description: >-
Use `raise` or `fail` with an explicit exception class and
message, rather than just a message.
Enabled: false
VersionAdded: '0.41'
Style/InPatternThen:
Description: 'Checks for `in;` uses in `case` expressions.'
StyleGuide: '#no-in-pattern-semicolons'
Enabled: pending
VersionAdded: '1.16'
Style/InfiniteLoop:
Description: >-
Use Kernel#loop for infinite loops.
This cop is unsafe if the body may raise a `StopIteration` exception.
Safe: false
StyleGuide: '#infinite-loop'
Enabled: true
VersionAdded: '0.26'
VersionChanged: '0.61'
Style/InlineComment:
Description: 'Avoid trailing inline comments.'
Enabled: false
VersionAdded: '0.23'
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!
Style/IpAddresses:
Description: "Don't include literal IP addresses in code."
Enabled: false
VersionAdded: '0.58'
VersionChanged: '0.91'
AllowedAddresses:
- "::"
Exclude:
- '**/*.gemfile'
- '**/Gemfile'
- '**/gems.rb'
- '**/*.gemspec'
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'
VersionChanged: '1.7'
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
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
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'
Style/MagicCommentFormat:
Description: 'Use a consistent style for magic comments.'
Enabled: pending
VersionAdded: '1.35'
EnforcedStyle: snake_case
SupportedStyles:
- snake_case
- kebab_case
DirectiveCapitalization: lowercase
ValueCapitalization: ~
SupportedCapitalizations:
- lowercase
- uppercase
Style/MapCompactWithConditionalBlock:
Description: 'Prefer `select` or `reject` over `map { ... }.compact`.'
Enabled: pending
VersionAdded: '1.30'
Style/MapToHash:
Description: 'Prefer `to_h` with a block over `map.to_h`.'
Enabled: pending
VersionAdded: '1.24'
Safe: false
Style/MethodCallWithArgsParentheses:
Description: 'Use parentheses for method calls with arguments.'
StyleGuide: '#method-invocation-parens'
Enabled: false
VersionAdded: '0.47'
VersionChanged: '1.7'
IgnoreMacros: true
AllowedMethods: []
IgnoredMethods: [] AllowedPatterns: []
IgnoredPatterns: [] IncludedMacros: []
AllowParenthesesInMultilineCall: false
AllowParenthesesInChaining: false
AllowParenthesesInCamelCaseMethod: false
AllowParenthesesInStringInterpolation: false
EnforcedStyle: require_parentheses
SupportedStyles:
- require_parentheses
- omit_parentheses
Style/MethodCallWithoutArgsParentheses:
Description: 'Do not use parentheses for method calls with no arguments.'
StyleGuide: '#method-invocation-parens'
Enabled: true
AllowedMethods: []
AllowedPatterns: []
IgnoredMethods: [] VersionAdded: '0.47'
VersionChanged: '0.55'
Style/MethodCalledOnDoEndBlock:
Description: 'Avoid chaining a method call on a do...end block.'
StyleGuide: '#single-line-blocks'
Enabled: false
VersionAdded: '0.14'
Style/MethodDefParentheses:
Description: >-
Checks if the method definitions have or don't have
parentheses.
StyleGuide: '#method-parens'
Enabled: true
VersionAdded: '0.16'
VersionChanged: '1.7'
EnforcedStyle: require_parentheses
SupportedStyles:
- require_parentheses
- require_no_parentheses
- require_no_parentheses_except_multiline
Style/MinMax:
Description: >-
Use `Enumerable#minmax` instead of `Enumerable#min`
and `Enumerable#max` in conjunction.
Enabled: true
VersionAdded: '0.50'
Style/MissingElse:
Description: >-
Require if/case expressions to have an else branches.
If enabled, it is recommended that
Style/UnlessElse and Style/EmptyElse be enabled.
This will conflict with Style/EmptyElse if
Style/EmptyElse is configured to style "both".
Enabled: false
VersionAdded: '0.30'
VersionChanged: '0.38'
EnforcedStyle: both
SupportedStyles:
- if
- case
- both
Style/MissingRespondToMissing:
Description: >-
Checks if `method_missing` is implemented
without implementing `respond_to_missing`.
StyleGuide: '#no-method-missing'
Enabled: true
VersionAdded: '0.56'
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/ModuleFunction:
Description: 'Checks for usage of `extend self` in modules.'
StyleGuide: '#module-function'
Enabled: true
VersionAdded: '0.11'
VersionChanged: '0.65'
EnforcedStyle: module_function
SupportedStyles:
- module_function
- extend_self
- forbidden
Autocorrect: false
SafeAutoCorrect: false
Style/MultilineBlockChain:
Description: 'Avoid multi-line chains of blocks.'
StyleGuide: '#single-line-blocks'
Enabled: true
VersionAdded: '0.13'
Style/MultilineIfModifier:
Description: 'Only use if/unless modifiers on single line statements.'
StyleGuide: '#no-multiline-if-modifiers'
Enabled: true
VersionAdded: '0.45'
Style/MultilineIfThen:
Description: 'Do not use then for multi-line if/unless.'
StyleGuide: '#no-then'
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.26'
Style/MultilineInPatternThen:
Description: 'Do not use `then` for multi-line `in` statement.'
StyleGuide: '#no-then'
Enabled: pending
VersionAdded: '1.16'
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
Style/MultilineMethodSignature:
Description: 'Avoid multi-line method signatures.'
Enabled: false
VersionAdded: '0.59'
VersionChanged: '1.7'
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'
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'
VersionChanged: '1.1'
AllowMethodComparison: true
Style/MutableConstant:
Description: 'Do not assign mutable objects to constants.'
Enabled: true
VersionAdded: '0.34'
VersionChanged: '1.8'
SafeAutoCorrect: false
EnforcedStyle: literals
SupportedStyles:
- literals
- strict
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
Style/NegatedIfElseCondition:
Description: >-
Checks for uses of `if-else` and ternary operators with a negated condition
which can be simplified by inverting condition and swapping branches.
Enabled: pending
VersionAdded: '1.2'
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
Style/NegatedWhile:
Description: 'Favor until over while for negative conditions.'
StyleGuide: '#until-for-negatives'
Enabled: true
VersionAdded: '0.20'
Style/NestedFileDirname:
Description: 'Checks for nested `File.dirname`.'
Enabled: pending
VersionAdded: '1.26'
Style/NestedModifier:
Description: 'Avoid using nested modifiers.'
StyleGuide: '#no-nested-modifiers'
Enabled: true
VersionAdded: '0.35'
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
Style/NestedTernaryOperator:
Description: 'Use one expression per branch in a ternary operator.'
StyleGuide: '#no-nested-ternary'
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.86'
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
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
Style/NilLambda:
Description: 'Prefer `-> {}` to `-> { nil }`.'
Enabled: pending
VersionAdded: '1.3'
VersionChanged: '1.15'
Style/NonNilCheck:
Description: 'Checks for redundant nil checks.'
StyleGuide: '#no-non-nil-checks'
Enabled: true
VersionAdded: '0.20'
VersionChanged: '0.22'
IncludeSemanticChanges: false
Style/Not:
Description: 'Use ! instead of not.'
StyleGuide: '#bang-not-not'
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.20'
Style/NumberedParameters:
Description: 'Restrict the usage of numbered parameters.'
Enabled: pending
VersionAdded: '1.22'
EnforcedStyle: allow_single_line
SupportedStyles:
- allow_single_line
- disallow
Style/NumberedParametersLimit:
Description: 'Avoid excessive numbered params in a single block.'
Enabled: pending
VersionAdded: '1.22'
Max: 1
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
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
AllowedNumbers: []
AllowedPatterns: []
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: []
AllowedPatterns: []
IgnoredMethods: [] Exclude:
- 'spec/**/*'
Style/ObjectThen:
Description: 'Enforces the use of consistent method names `Object#yield_self` or `Object#then`.'
StyleGuide: '#object-yield-self-vs-object-then'
Enabled: pending
VersionAdded: '1.28'
EnforcedStyle: 'then'
SupportedStyles:
- then
- yield_self
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/OpenStructUse:
Description: >-
Avoid using OpenStruct. As of Ruby 3.0, use is officially discouraged due to performance,
version compatibility, and potential security issues.
Reference:
- https://docs.ruby-lang.org/en/3.0.0/OpenStruct.html#class-OpenStruct-label-Caveats
Enabled: pending
VersionAdded: '1.23'
Style/OperatorMethodCall:
Description: 'Checks for redundant dot before operator method call.'
StyleGuide: '#operator-method-call'
Enabled: pending
VersionAdded: '1.37'
Style/OptionHash:
Description: "Don't use option hashes when you can use keyword arguments."
Enabled: false
VersionAdded: '0.33'
VersionChanged: '0.34'
SuspiciousParamNames:
- options
- opts
- args
- params
- parameters
Allowlist: []
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'
Style/OptionalBooleanParameter:
Description: 'Use keyword arguments when defining method with boolean argument.'
StyleGuide: '#boolean-keyword-arguments'
Enabled: true
Safe: false
VersionAdded: '0.89'
AllowedMethods:
- respond_to_missing?
Style/OrAssignment:
Description: 'Recommend usage of double pipe equals (||=) where applicable.'
StyleGuide: '#double-pipe-for-uninit'
Enabled: true
VersionAdded: '0.50'
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'
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
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'
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
Style/PerlBackrefs:
Description: 'Avoid Perl-style regex back references.'
StyleGuide: '#no-perl-regexp-last-matchers'
Enabled: true
VersionAdded: '0.13'
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
Style/Proc:
Description: 'Use proc instead of Proc.new.'
StyleGuide: '#proc'
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.18'
Style/QuotedSymbols:
Description: 'Use a consistent style for quoted symbols.'
Enabled: pending
VersionAdded: '1.16'
EnforcedStyle: same_as_string_literals
SupportedStyles:
- same_as_string_literals
- single_quotes
- double_quotes
Style/RaiseArgs:
Description: 'Checks the arguments passed to raise/fail.'
StyleGuide: '#exception-class-messages'
Enabled: true
VersionAdded: '0.14'
VersionChanged: '1.2'
EnforcedStyle: exploded
SupportedStyles:
- compact - exploded AllowedCompactTypes: []
Style/RandomWithOffset:
Description: >-
Prefer to use ranges when generating random numbers instead of
integers with offsets.
StyleGuide: '#random-numbers'
Enabled: true
VersionAdded: '0.52'
Style/RedundantArgument:
Description: 'Check for a redundant argument passed to certain methods.'
Enabled: pending
Safe: false
VersionAdded: '1.4'
VersionChanged: '1.40'
Methods:
join: ''
sum: 0
split: ' '
chomp: "\n"
chomp!: "\n"
Style/RedundantAssignment:
Description: 'Checks for redundant assignment before returning.'
Enabled: true
VersionAdded: '0.87'
Style/RedundantBegin:
Description: "Don't use begin blocks when they are not needed."
StyleGuide: '#begin-implicit'
Enabled: true
VersionAdded: '0.10'
VersionChanged: '0.21'
Style/RedundantCapitalW:
Description: 'Checks for %W when interpolation is not needed.'
Enabled: true
VersionAdded: '0.76'
Style/RedundantCondition:
Description: 'Checks for unnecessary conditional expressions.'
Enabled: true
VersionAdded: '0.76'
Style/RedundantConditional:
Description: "Don't return true/false from a conditional."
Enabled: true
VersionAdded: '0.50'
Style/RedundantConstantBase:
Description: Avoid redundant `::` prefix on constant.
Enabled: pending
VersionAdded: '1.40'
Style/RedundantEach:
Description: 'Checks for redundant `each`.'
Enabled: pending
Safe: false
VersionAdded: '1.38'
Style/RedundantException:
Description: "Checks for an obsolete RuntimeException argument in raise/fail."
StyleGuide: '#no-explicit-runtimeerror'
Enabled: true
VersionAdded: '0.14'
VersionChanged: '0.29'
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'
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'
Style/RedundantFreeze:
Description: "Checks usages of Object#freeze on immutable objects."
Enabled: true
VersionAdded: '0.34'
VersionChanged: '0.66'
Style/RedundantInitialize:
Description: 'Checks for redundant `initialize` methods.'
Enabled: pending
Safe: false
AllowComments: true
VersionAdded: '1.27'
VersionChanged: '1.28'
Style/RedundantInterpolation:
Description: 'Checks for strings that are just an interpolated expression.'
Enabled: true
SafeAutoCorrect: false
VersionAdded: '0.76'
VersionChanged: '1.30'
Style/RedundantParentheses:
Description: "Checks for parentheses that seem not to serve any purpose."
Enabled: true
VersionAdded: '0.36'
Style/RedundantPercentQ:
Description: 'Checks for %q/%Q when single quotes or double quotes would do.'
StyleGuide: '#percent-q'
Enabled: true
VersionAdded: '0.76'
Style/RedundantRegexpCharacterClass:
Description: 'Checks for unnecessary single-element Regexp character classes.'
Enabled: true
VersionAdded: '0.85'
Style/RedundantRegexpEscape:
Description: 'Checks for redundant escapes in Regexps.'
Enabled: true
VersionAdded: '0.85'
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
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'
Style/RedundantSelfAssignment:
Description: 'Checks for places where redundant assignments are made for in place modification methods.'
Enabled: true
Safe: false
VersionAdded: '0.90'
Style/RedundantSelfAssignmentBranch:
Description: 'Checks for places where conditional branch makes redundant self-assignment.'
Enabled: pending
VersionAdded: '1.19'
Style/RedundantSort:
Description: >-
Use `min` instead of `sort.first`,
`max_by` instead of `sort_by...last`, etc.
Enabled: true
VersionAdded: '0.76'
VersionChanged: '1.22'
Safe: false
Style/RedundantSortBy:
Description: 'Use `sort` instead of `sort_by { |x| x }`.'
Enabled: true
VersionAdded: '0.36'
Style/RedundantStringEscape:
Description: 'Checks for redundant escapes in string literals.'
Enabled: pending
VersionAdded: '1.37'
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
Style/RequireOrder:
Description: Sort `require` and `require_relative` in alphabetical order.
Enabled: false
SafeAutoCorrect: false
VersionAdded: '1.40'
Style/RescueModifier:
Description: 'Avoid using rescue in its modifier form.'
StyleGuide: '#no-rescue-modifiers'
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.34'
Style/RescueStandardError:
Description: 'Avoid rescuing without specifying an error class.'
Enabled: true
VersionAdded: '0.52'
EnforcedStyle: explicit
SupportedStyles:
- implicit
- explicit
Style/ReturnNil:
Description: 'Use return instead of return nil.'
Enabled: false
EnforcedStyle: return
SupportedStyles:
- return
- return_nil
VersionAdded: '0.50'
Style/SafeNavigation:
Description: >-
Transforms usages of a method call safeguarded by
a check for the existence of the object to
safe navigation (`&.`).
Autocorrection is unsafe as it assumes the object will
be `nil` or truthy, but never `false`.
Enabled: true
VersionAdded: '0.43'
VersionChanged: '1.27'
ConvertCodeThatCanStartToReturnNil: false
AllowedMethods:
- present?
- blank?
- presence
- try
- try!
SafeAutoCorrect: false
MaxChainLength: 2
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'
Style/SelectByRegexp:
Description: 'Prefer grep/grep_v to select/reject with a regexp match.'
Enabled: pending
SafeAutoCorrect: false
VersionAdded: '1.22'
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'
Style/Semicolon:
Description: "Don't use semicolons to terminate expressions."
StyleGuide: '#no-semicolon'
Enabled: true
VersionAdded: '0.9'
VersionChanged: '0.19'
AllowAsExpressionSeparator: false
Style/Send:
Description: 'Prefer `Object#__send__` or `Object#public_send` to `send`, as `send` may overlap with existing methods.'
StyleGuide: '#prefer-public-send'
Enabled: false
VersionAdded: '0.33'
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
Style/SingleArgumentDig:
Description: 'Avoid using single argument dig method.'
Enabled: true
VersionAdded: '0.89'
Safe: false
Style/SingleLineBlockParams:
Description: 'Enforces the names of some block params.'
Enabled: false
VersionAdded: '0.16'
VersionChanged: '1.6'
Methods:
- reduce:
- acc
- elem
- inject:
- acc
- elem
Style/SingleLineMethods:
Description: 'Avoid single-line methods.'
StyleGuide: '#no-single-line-methods'
Enabled: true
VersionAdded: '0.9'
VersionChanged: '1.8'
AllowIfMethodIsEmpty: true
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'
VersionChanged: '1.5'
AllowModifier: false
Style/SpecialGlobalVars:
Description: 'Avoid Perl-style global variables.'
StyleGuide: '#no-cryptic-perlisms'
Enabled: true
VersionAdded: '0.13'
VersionChanged: '0.36'
SafeAutoCorrect: false
RequireEnglish: true
EnforcedStyle: use_english_names
SupportedStyles:
- use_perl_names
- use_english_names
- use_builtin_english_names
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
Style/StaticClass:
Description: 'Prefer modules to classes with only class methods.'
StyleGuide: '#modules-vs-classes'
Enabled: false
Safe: false
VersionAdded: '1.3'
Style/StderrPuts:
Description: 'Use `warn` instead of `$stderr.puts`.'
StyleGuide: '#warn'
Enabled: true
VersionAdded: '0.51'
Style/StringChars:
Description: 'Checks for uses of `String#split` with empty string or regexp literal argument.'
StyleGuide: '#string-chars'
Enabled: pending
Safe: false
VersionAdded: '1.12'
Style/StringConcatenation:
Description: 'Checks for places where string concatenation can be replaced with string interpolation.'
StyleGuide: '#string-interpolation'
Enabled: true
Safe: false
VersionAdded: '0.89'
VersionChanged: '1.18'
Mode: aggressive
Style/StringHashKeys:
Description: 'Prefer symbols instead of strings as hash keys.'
StyleGuide: '#symbols-as-keys'
Enabled: false
VersionAdded: '0.52'
VersionChanged: '0.75'
Safe: false
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: single_quotes
SupportedStyles:
- single_quotes
- double_quotes
ConsistentQuotesInMultiline: false
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
Style/StringMethods:
Description: 'Checks if configured preferred methods are used over non-preferred.'
Enabled: false
VersionAdded: '0.34'
VersionChanged: '0.34'
PreferredMethods:
intern: to_sym
Style/Strip:
Description: 'Use `strip` instead of `lstrip.rstrip`.'
Enabled: true
VersionAdded: '0.36'
Style/StructInheritance:
Description: 'Checks for inheritance from Struct.new.'
StyleGuide: '#no-extend-struct-new'
Enabled: true
SafeAutoCorrect: false
VersionAdded: '0.29'
VersionChanged: '1.20'
Style/SwapValues:
Description: 'Enforces the use of shorthand-style swapping of 2 variables.'
StyleGuide: '#values-swapping'
Enabled: pending
VersionAdded: '1.1'
SafeAutoCorrect: false
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
Style/SymbolLiteral:
Description: 'Use plain symbols instead of string symbols when possible.'
Enabled: true
VersionAdded: '0.30'
Style/SymbolProc:
Description: 'Use symbols as procs instead of blocks when possible.'
Enabled: true
Safe: false
VersionAdded: '0.26'
VersionChanged: '1.40'
AllowMethodsWithArguments: false
AllowedMethods:
- define_method
AllowedPatterns: []
IgnoredMethods: [] AllowComments: false
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
Style/TopLevelMethodDefinition:
Description: 'Looks for top-level method definitions.'
StyleGuide: '#top-level-methods'
Enabled: false
VersionAdded: '1.15'
Style/TrailingBodyOnClass:
Description: 'Class body goes below class statement.'
Enabled: true
VersionAdded: '0.53'
Style/TrailingBodyOnMethodDefinition:
Description: 'Method body goes below definition.'
Enabled: true
VersionAdded: '0.52'
Style/TrailingBodyOnModule:
Description: 'Module body goes below module statement.'
Enabled: true
VersionAdded: '0.53'
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
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
Style/TrailingCommaInBlockArgs:
Description: 'Checks for useless trailing commas in block arguments.'
Enabled: false
Safe: false
VersionAdded: '0.81'
Style/TrailingCommaInHashLiteral:
Description: 'Checks for trailing comma in hash literals.'
Enabled: true
EnforcedStyleForMultiline: no_comma
SupportedStylesForMultiline:
- comma
- consistent_comma
- no_comma
VersionAdded: '0.53'
Style/TrailingMethodEndStatement:
Description: 'Checks for trailing end statement on line of method body.'
Enabled: true
VersionAdded: '0.52'
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'
Style/TrivialAccessors:
Description: 'Prefer attr_* methods to trivial readers/writers.'
StyleGuide: '#attr_family'
Enabled: true
VersionAdded: '0.9'
VersionChanged: '1.15'
ExactNameMatch: true
AllowPredicates: true
AllowDSLWriters: true
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
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'
Style/UnlessLogicalOperators:
Description: >-
Checks for use of logical operators in an unless condition.
Enabled: false
VersionAdded: '1.11'
EnforcedStyle: forbid_mixed_logical_operators
SupportedStyles:
- forbid_mixed_logical_operators
- forbid_logical_operators
Style/UnpackFirst:
Description: >-
Checks for accessing the first element of `String#unpack`
instead of using `unpack1`.
Enabled: true
VersionAdded: '0.54'
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'
Style/WhenThen:
Description: 'Use when x then ... for one-line cases.'
StyleGuide: '#no-when-semicolons'
Enabled: true
VersionAdded: '0.9'
Style/WhileUntilDo:
Description: 'Checks for redundant do after while or until.'
StyleGuide: '#no-multiline-while-do'
Enabled: true
VersionAdded: '0.9'
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'
Style/WordArray:
Description: 'Use %w or %W for arrays of words.'
StyleGuide: '#percent-w'
Enabled: true
VersionAdded: '0.9'
VersionChanged: '1.19'
EnforcedStyle: percent
SupportedStyles:
- percent
- brackets
MinSize: 2
WordRegex: !ruby/regexp '/\A(?:\p{Word}|\p{Word}-\p{Word}|\n|\t)+\z/'
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'
Style/ZeroLengthPredicate:
Description: 'Use #empty? when testing for objects of length 0.'
Enabled: true
Safe: false
VersionAdded: '0.37'
VersionChanged: '0.39'