config/upstream.yml in cookstyle-1.4.0 vs config/upstream.yml in cookstyle-2.0.0
- old
+ new
@@ -7,28 +7,55 @@
# Common configuration.
AllCops:
# Include common Ruby source files.
Include:
+ - '**/*.builder'
+ - '**/*.fcgi'
- '**/*.gemspec'
- - '**/*.podspec'
+ - '**/*.god'
+ - '**/*.jb'
- '**/*.jbuilder'
- - '**/*.rake'
+ - '**/*.mspec'
- '**/*.opal'
+ - '**/*.pluginspec'
+ - '**/*.podspec'
+ - '**/*.rabl'
+ - '**/*.rake'
+ - '**/*.rbuild'
+ - '**/*.rbw'
+ - '**/*.rbx'
+ - '**/*.ru'
+ - '**/*.ruby'
+ - '**/*.spec'
+ - '**/*.thor'
+ - '**/*.watchr'
+ - '**/.irbrc'
+ - '**/.pryrc'
+ - '**/buildfile'
- '**/config.ru'
- - '**/Gemfile'
- - '**/Rakefile'
+ - '**/Appraisals'
+ - '**/Berksfile'
+ - '**/Brewfile'
+ - '**/Buildfile'
- '**/Capfile'
+ - '**/Cheffile'
+ - '**/Dangerfile'
+ - '**/Deliverfile'
+ - '**/Fastfile'
+ - '**/*Fastfile'
+ - '**/Gemfile'
- '**/Guardfile'
+ - '**/Jarfile'
+ - '**/Mavenfile'
- '**/Podfile'
+ - '**/Puppetfile'
+ - '**/Rakefile'
+ - '**/Snapfile'
- '**/Thorfile'
- - '**/Vagrantfile'
- - '**/Berksfile'
- - '**/Cheffile'
- '**/Vagabondfile'
- - '**/Fastfile'
- - '**/*Fastfile'
+ - '**/Vagrantfile'
Exclude:
- 'vendor/**/*'
# Default formatter will be used if no `-f/--format` option is given.
DefaultFormatter: progress
# Cop names are not displayed in offense messages by default. Change behavior
@@ -49,60 +76,62 @@
# Additional cops that do not reference a style guide rule may be enabled by
# default. Change behavior by overriding `StyleGuideCopsOnly`, or by giving
# the `--only-guide-cops` option.
StyleGuideCopsOnly: false
# All cops except the ones in disabled.yml are enabled by default. Change
- # this behavior by overriding `DisabledByDefault`. When `DisabledByDefault` is
- # `true`, all cops in the default configuration are disabled, and only cops
- # in user configuration are enabled. This makes cops opt-in instead of
- # opt-out. Note that when `DisabledByDefault` is `true`, cops in user
- # configuration will be enabled even if they don't set the Enabled parameter.
+ # this behavior by overriding either `DisabledByDefault` or `EnabledByDefault`.
+ # When `DisabledByDefault` is `true`, all cops in the default configuration
+ # are disabled, and only cops in user configuration are enabled. This makes
+ # cops opt-in instead of opt-out. Note that when `DisabledByDefault` is `true`,
+ # cops in user configuration will be enabled even if they don't set the
+ # Enabled parameter.
+ # When `EnabledByDefault` is `true`, all cops, even those in disabled.yml,
+ # are enabled by default. Cops can still be disabled in user configuration.
+ # Note that it is invalid to set both EnabledByDefault and DisabledByDefault
+ # to true in the same configuration.
+ EnabledByDefault: false
DisabledByDefault: false
# Enables the result cache if `true`. Can be overridden by the `--cache` command
# line option.
UseCache: true
# Threshold for how many files can be stored in the result cache before some
# of the files are automatically removed.
MaxFilesInCache: 20000
- # The cache will be stored in "rubocop_cache" under this directory. The name
- # "/tmp" is special and will be converted to the system temporary directory,
- # which is "/tmp" on Unix-like systems, but could be something else on other
- # systems.
- CacheRootDirectory: /tmp
- # The default cache root directory is /tmp, which on most systems is
- # writable by any system user. This means that it is possible for a
- # malicious user to anticipate the location of Rubocop's cache directory,
- # and create a symlink in its place that could cause Rubocop to overwrite
- # unintended files, or read malicious input. If you are certain that your
- # cache location is secure from this kind of attack, and wish to use a
- # symlinked cache location, set this value to "true".
+ # The cache will be stored in "rubocop_cache" under this directory. If
+ # CacheRootDirectory is ~ (nil), which it is by default, the root will be
+ # taken from the environment variable `$XDG_CACHE_HOME` if it is set, or if
+ # `$XDG_CACHE_HOME` is not set, it will be `$HOME/.cache/`.
+ CacheRootDirectory: ~
+ # It is possible for a malicious user to know the location of RuboCop's cache
+ # directory by looking at CacheRootDirectory, and create a symlink in its
+ # place that could cause RuboCop to overwrite unintended files, or read
+ # malicious input. If you are certain that your cache location is secure from
+ # this kind of attack, and wish to use a symlinked cache location, set this
+ # value to "true".
AllowSymlinksInCacheRootDirectory: false
# What MRI version of the Ruby interpreter is the inspected code intended to
# run on? (If there is more than one, set this to the lowest version.)
# If a value is specified for TargetRubyVersion then it is used.
# Else if .ruby-version exists and it contains an MRI version it is used.
# Otherwise we fallback to the oldest officially supported Ruby version (2.1).
TargetRubyVersion: ~
+ TargetRailsVersion: 5.0
+#################### Layout ###########################
+
# Indent private/protected/public as deep as method definitions
-Style/AccessModifierIndentation:
+Layout/AccessModifierIndentation:
EnforcedStyle: indent
SupportedStyles:
- outdent
- indent
- # By default, the indentation width from Style/IndentationWidth is used
+ # By default, the indentation width from Layout/IndentationWidth is used
# But it can be overridden by setting this parameter
IndentationWidth: ~
-Style/Alias:
- EnforcedStyle: prefer_alias
- SupportedStyles:
- - prefer_alias
- - prefer_alias_method
-
# Align the elements of a hash literal if they span more than one line.
-Style/AlignHash:
+Layout/AlignHash:
# Alignment of entries using hash rocket as separator. Valid values are:
#
# key - left alignment of keys
# 'a' => 2
# 'bb' => 3
@@ -169,11 +198,11 @@
- always_inspect
- always_ignore
- ignore_implicit
- ignore_explicit
-Style/AlignParameters:
+Layout/AlignParameters:
# Alignment of parameters in multi-line method calls.
#
# The `with_first_parameter` style aligns the following lines along the same
# column as the first parameter.
#
@@ -187,23 +216,341 @@
# b)
EnforcedStyle: with_first_parameter
SupportedStyles:
- with_first_parameter
- with_fixed_indentation
- # By default, the indentation width from Style/IndentationWidth is used
+ # By default, the indentation width from Layout/IndentationWidth is used
# But it can be overridden by setting this parameter
IndentationWidth: ~
+# Indentation of `when`.
+Layout/CaseIndentation:
+ EnforcedStyle: case
+ SupportedStyles:
+ - case
+ - end
+ IndentOneStep: false
+ # By default, the indentation width from `Layout/IndentationWidth` is used.
+ # But it can be overridden by setting this parameter.
+ # This only matters if `IndentOneStep` is `true`
+ IndentationWidth: ~
+
+# Multi-line method chaining should be done with leading dots.
+Layout/DotPosition:
+ EnforcedStyle: leading
+ SupportedStyles:
+ - leading
+ - trailing
+
+# Use empty lines between defs.
+Layout/EmptyLineBetweenDefs:
+ # If `true`, this parameter means that single line method definitions don't
+ # need an empty line between them.
+ AllowAdjacentOneLineDefs: false
+ # Can be array to specify minimum and maximum number of empty lines, e.g. [1, 2]
+ NumberOfEmptyLines: 1
+
+Layout/EmptyLinesAroundBlockBody:
+ EnforcedStyle: no_empty_lines
+ SupportedStyles:
+ - empty_lines
+ - no_empty_lines
+
+Layout/EmptyLinesAroundClassBody:
+ EnforcedStyle: no_empty_lines
+ SupportedStyles:
+ - empty_lines
+ - empty_lines_except_namespace
+ - empty_lines_special
+ - no_empty_lines
+
+Layout/EmptyLinesAroundModuleBody:
+ EnforcedStyle: no_empty_lines
+ SupportedStyles:
+ - empty_lines
+ - empty_lines_except_namespace
+ - empty_lines_special
+ - no_empty_lines
+
+Layout/EndOfLine:
+ # The `native` style means that CR+LF (Carriage Return + Line Feed) is
+ # enforced on Windows, and LF is enforced on other platforms. The other styles
+ # mean LF and CR+LF, respectively.
+ EnforcedStyle: native
+ SupportedStyles:
+ - native
+ - lf
+ - crlf
+
+Layout/ExtraSpacing:
+ # When true, allows most uses of extra spacing if the intent is to align
+ # things with the previous or next line, not counting empty lines or comment
+ # lines.
+ AllowForAlignment: true
+ # When true, forces the alignment of `=` in assignments on consecutive lines.
+ ForceEqualSignAlignment: false
+
+Layout/FirstParameterIndentation:
+ EnforcedStyle: special_for_inner_method_call_in_parentheses
+ SupportedStyles:
+ # The first parameter should always be indented one step more than the
+ # preceding line.
+ - consistent
+ # The first parameter should normally be indented one step more than the
+ # preceding line, but if it's a parameter for a method call that is itself
+ # a parameter in a method call, then the inner parameter should be indented
+ # relative to the inner method.
+ - special_for_inner_method_call
+ # Same as `special_for_inner_method_call` except that the special rule only
+ # applies if the outer method call encloses its arguments in parentheses.
+ - special_for_inner_method_call_in_parentheses
+ # By default, the indentation width from `Layout/IndentationWidth` is used
+ # But it can be overridden by setting this parameter
+ IndentationWidth: ~
+
+Layout/IndentationConsistency:
+ # The difference between `rails` and `normal` is that the `rails` style
+ # prescribes that in classes and modules the `protected` and `private`
+ # modifier keywords shall be indented the same as public methods and that
+ # protected and private members shall be indented one step more than the
+ # modifiers. Other than that, both styles mean that entities on the same
+ # logical depth shall have the same indentation.
+ EnforcedStyle: normal
+ SupportedStyles:
+ - normal
+ - rails
+
+Layout/IndentationWidth:
+ # Number of spaces for each indentation level.
+ Width: 2
+ IgnoredPatterns: []
+
+# Checks the indentation of the first element in an array literal.
+Layout/IndentArray:
+ # The value `special_inside_parentheses` means that array literals with
+ # brackets that have their opening bracket on the same line as a surrounding
+ # opening round parenthesis, shall have their first element indented relative
+ # to the first position inside the parenthesis.
+ #
+ # The value `consistent` means that the indentation of the first element shall
+ # always be relative to the first position of the line where the opening
+ # bracket is.
+ #
+ # The value `align_brackets` means that the indentation of the first element
+ # shall always be relative to the position of the opening bracket.
+ EnforcedStyle: special_inside_parentheses
+ SupportedStyles:
+ - special_inside_parentheses
+ - consistent
+ - align_brackets
+ # By default, the indentation width from `Layout/IndentationWidth` is used
+ # But it can be overridden by setting this parameter
+ IndentationWidth: ~
+
+# Checks the indentation of assignment RHS, when on a different line from LHS
+Layout/IndentAssignment:
+ # By default, the indentation width from `Layout/IndentationWidth` is used
+ # But it can be overridden by setting this parameter
+ IndentationWidth: ~
+
+# Checks the indentation of the first key in a hash literal.
+Layout/IndentHash:
+ # The value `special_inside_parentheses` means that hash literals with braces
+ # that have their opening brace on the same line as a surrounding opening
+ # round parenthesis, shall have their first key indented relative to the
+ # first position inside the parenthesis.
+ #
+ # The value `consistent` means that the indentation of the first key shall
+ # always be relative to the first position of the line where the opening
+ # brace is.
+ #
+ # The value `align_braces` means that the indentation of the first key shall
+ # always be relative to the position of the opening brace.
+ EnforcedStyle: special_inside_parentheses
+ SupportedStyles:
+ - special_inside_parentheses
+ - consistent
+ - align_braces
+ # By default, the indentation width from `Layout/IndentationWidth` is used
+ # But it can be overridden by setting this parameter
+ IndentationWidth: ~
+
+Layout/IndentHeredoc:
+ EnforcedStyle: auto_detection
+ SupportedStyles:
+ - auto_detection
+ - squiggly
+ - active_support
+ - powerpack
+ - unindent
+
+Layout/SpaceInLambdaLiteral:
+ EnforcedStyle: require_no_space
+ SupportedStyles:
+ - require_no_space
+ - require_space
+
+Layout/MultilineArrayBraceLayout:
+ EnforcedStyle: symmetrical
+ SupportedStyles:
+ # symmetrical: closing brace is positioned in same way as opening brace
+ # new_line: closing brace is always on a new line
+ # same_line: closing brace is always on the same line as last element
+ - symmetrical
+ - new_line
+ - same_line
+
+Layout/MultilineAssignmentLayout:
+ # The types of assignments which are subject to this rule.
+ SupportedTypes:
+ - block
+ - case
+ - class
+ - if
+ - kwbegin
+ - module
+ EnforcedStyle: new_line
+ SupportedStyles:
+ # Ensures that the assignment operator and the rhs are on the same line for
+ # the set of supported types.
+ - same_line
+ # Ensures that the assignment operator and the rhs are on separate lines
+ # for the set of supported types.
+ - new_line
+
+Layout/MultilineHashBraceLayout:
+ EnforcedStyle: symmetrical
+ SupportedStyles:
+ # symmetrical: closing brace is positioned in same way as opening brace
+ # new_line: closing brace is always on a new line
+ # same_line: closing brace is always on same line as last element
+ - symmetrical
+ - new_line
+ - same_line
+
+Layout/MultilineMethodCallBraceLayout:
+ EnforcedStyle: symmetrical
+ SupportedStyles:
+ # symmetrical: closing brace is positioned in same way as opening brace
+ # new_line: closing brace is always on a new line
+ # same_line: closing brace is always on the same line as last argument
+ - symmetrical
+ - new_line
+ - same_line
+
+Layout/MultilineMethodCallIndentation:
+ EnforcedStyle: aligned
+ SupportedStyles:
+ - aligned
+ - indented
+ - indented_relative_to_receiver
+ # By default, the indentation width from Layout/IndentationWidth is used
+ # But it can be overridden by setting this parameter
+ IndentationWidth: ~
+
+Layout/MultilineMethodDefinitionBraceLayout:
+ EnforcedStyle: symmetrical
+ SupportedStyles:
+ # symmetrical: closing brace is positioned in same way as opening brace
+ # new_line: closing brace is always on a new line
+ # same_line: closing brace is always on the same line as last parameter
+ - symmetrical
+ - new_line
+ - same_line
+
+Layout/MultilineOperationIndentation:
+ EnforcedStyle: aligned
+ SupportedStyles:
+ - aligned
+ - indented
+ # By default, the indentation width from `Layout/IndentationWidth` is used
+ # But it can be overridden by setting this parameter
+ IndentationWidth: ~
+
+Layout/SpaceAroundBlockParameters:
+ EnforcedStyleInsidePipes: no_space
+ SupportedStylesInsidePipes:
+ - space
+ - no_space
+
+Layout/SpaceAroundEqualsInParameterDefault:
+ EnforcedStyle: space
+ SupportedStyles:
+ - space
+ - no_space
+
+Layout/SpaceAroundOperators:
+ # When `true`, allows most uses of extra spacing if the intent is to align
+ # with an operator on the previous or next line, not counting empty lines
+ # or comment lines.
+ AllowForAlignment: true
+
+Layout/SpaceBeforeBlockBraces:
+ EnforcedStyle: space
+ SupportedStyles:
+ - space
+ - no_space
+
+Layout/SpaceBeforeFirstArg:
+ # When `true`, allows most uses of extra spacing if the intent is to align
+ # things with the previous or next line, not counting empty lines or comment
+ # lines.
+ AllowForAlignment: true
+
+Layout/SpaceInsideBlockBraces:
+ EnforcedStyle: space
+ SupportedStyles:
+ - space
+ - no_space
+ EnforcedStyleForEmptyBraces: no_space
+ SupportedStylesForEmptyBraces:
+ - space
+ - no_space
+ # Space between `{` and `|`. Overrides `EnforcedStyle` if there is a conflict.
+ SpaceBeforeBlockParameters: true
+
+Layout/SpaceInsideHashLiteralBraces:
+ EnforcedStyle: space
+ SupportedStyles:
+ - space
+ - no_space
+ # 'compact' normally requires a space inside hash braces, with the exception
+ # that successive left braces or right braces are collapsed together
+ - compact
+ EnforcedStyleForEmptyBraces: no_space
+ SupportedStylesForEmptyBraces:
+ - space
+ - no_space
+
+Layout/SpaceInsideStringInterpolation:
+ EnforcedStyle: no_space
+ SupportedStyles:
+ - space
+ - no_space
+
+Layout/TrailingBlankLines:
+ EnforcedStyle: final_newline
+ SupportedStyles:
+ - final_newline
+ - final_blank_line
+
+#################### Style ###########################
+
+Style/Alias:
+ EnforcedStyle: prefer_alias
+ SupportedStyles:
+ - prefer_alias
+ - prefer_alias_method
+
Style/AndOr:
# Whether `and` and `or` are banned only in conditionals (conditionals)
# or completely (always).
EnforcedStyle: always
SupportedStyles:
- always
- conditionals
-
# Checks if usage of `%()` or `%Q()` matches configuration.
Style/BarePercentLiterals:
EnforcedStyle: bare_percent
SupportedStyles:
- percent_q
@@ -292,22 +639,10 @@
# The `context_dependent` style checks that the last parameter doesn't have
# braces around it, but requires braces if the second to last parameter is
# also a hash literal.
- context_dependent
-# Indentation of `when`.
-Style/CaseIndentation:
- EnforcedStyle: case
- SupportedStyles:
- - case
- - end
- IndentOneStep: false
- # By default, the indentation width from `Style/IndentationWidth` is used.
- # But it can be overridden by setting this parameter.
- # This only matters if `IndentOneStep` is `true`
- IndentationWidth: ~
-
Style/ClassAndModuleChildren:
# Checks the style of children definitions at classes and modules.
#
# Basically there are two different styles:
#
@@ -408,56 +743,21 @@
AutocorrectNotice: ''
Style/DocumentationMethod:
RequireForNonPublicMethods: false
-# Multi-line method chaining should be done with leading dots.
-Style/DotPosition:
- EnforcedStyle: leading
- SupportedStyles:
- - leading
- - trailing
-
# Warn on empty else statements
# empty - warn only on empty `else`
# nil - warn on `else` with nil in it
-# both - warn on empty `else` and `else` with nil in it
+# both - warn on empty `else` and `else` with `nil` in it
Style/EmptyElse:
EnforcedStyle: both
SupportedStyles:
- empty
- nil
- both
-# Use empty lines between defs.
-Style/EmptyLineBetweenDefs:
- # If `true`, this parameter means that single line method definitions don't
- # need an empty line between them.
- AllowAdjacentOneLineDefs: false
-
-Style/EmptyLinesAroundBlockBody:
- EnforcedStyle: no_empty_lines
- SupportedStyles:
- - empty_lines
- - no_empty_lines
-
-Style/EmptyLinesAroundClassBody:
- EnforcedStyle: no_empty_lines
- SupportedStyles:
- - empty_lines
- - empty_lines_except_namespace
- - empty_lines_special
- - no_empty_lines
-
-Style/EmptyLinesAroundModuleBody:
- EnforcedStyle: no_empty_lines
- SupportedStyles:
- - empty_lines
- - empty_lines_except_namespace
- - empty_lines_special
- - no_empty_lines
-
Style/EmptyMethod:
EnforcedStyle: compact
SupportedStyles:
- compact
- expanded
@@ -471,18 +771,10 @@
- when_needed
- always
- never
AutoCorrectEncodingComment: '# encoding: utf-8'
-Style/ExtraSpacing:
- # When true, allows most uses of extra spacing if the intent is to align
- # things with the previous or next line, not counting empty lines or comment
- # lines.
- AllowForAlignment: true
- # When true, forces the alignment of `=` in assignments on consecutive lines.
- ForceEqualSignAlignment: false
-
Style/FileName:
# File names listed in `AllCops:Include` are excluded by default. Add extra
# excludes here.
Exclude: []
# When `true`, requires that each source file should define a class or module
@@ -539,28 +831,10 @@
- XML
- XMPP
- XSRF
- XSS
-Style/FirstParameterIndentation:
- EnforcedStyle: special_for_inner_method_call_in_parentheses
- SupportedStyles:
- # The first parameter should always be indented one step more than the
- # preceding line.
- - consistent
- # The first parameter should normally be indented one step more than the
- # preceding line, but if it's a parameter for a method call that is itself
- # a parameter in a method call, then the inner parameter should be indented
- # relative to the inner method.
- - special_for_inner_method_call
- # Same as `special_for_inner_method_call` except that the special rule only
- # applies if the outer method call encloses its arguments in parentheses.
- - special_for_inner_method_call_in_parentheses
- # By default, the indentation width from `Style/IndentationWidth` is used
- # But it can be overridden by setting this parameter
- IndentationWidth: ~
-
# Checks use of for or each in multiline loops.
Style/For:
EnforcedStyle: each
SupportedStyles:
- for
@@ -572,10 +846,20 @@
SupportedStyles:
- format
- sprintf
- percent
+# Enforce using either `%<token>s` or `%{token}`
+Style/FormatStringToken:
+ EnforcedStyle: annotated
+ SupportedStyles:
+ # Prefer tokens which contain a sprintf like type annotation like
+ # `%<name>s`, `%<age>d`, `%<score>f`
+ - annotated
+ # Prefer simple looking "template" style tokens like `%{name}`, `%{age}`
+ - template
+
Style/FrozenStringLiteralComment:
EnforcedStyle: when_needed
SupportedStyles:
# `when_needed` will add the frozen string literal comment to files
# only when the `TargetRubyVersion` is set to 2.3+.
@@ -615,234 +899,135 @@
PreferHashRocketsForNonAlnumEndingSymbols: false
Style/IfUnlessModifier:
MaxLineLength: 80
-Style/IndentationConsistency:
- # The difference between `rails` and `normal` is that the `rails` style
- # prescribes that in classes and modules the `protected` and `private`
- # modifier keywords shall be indented the same as public methods and that
- # protected and private members shall be indented one step more than the
- # modifiers. Other than that, both styles mean that entities on the same
- # logical depth shall have the same indentation.
- EnforcedStyle: normal
- SupportedStyles:
- - normal
- - rails
+Style/InverseMethods:
+ Enabled: true
+ # `InverseMethods` are methods that can be inverted by a not (`not` or `!`)
+ # The relationship of inverse methods only needs to be defined in one direction.
+ # Keys and values both need to be defined as symbols.
+ InverseMethods:
+ :any?: :none?
+ :even?: :odd?
+ :==: :!=
+ :=~: :!~
+ :<: :>=
+ :>: :<=
+ # `ActiveSupport` defines some common inverse methods. They are listed below,
+ # and not enabled by default.
+ #:present?: :blank?,
+ #:include?: :exclude?
+ # `InverseBlocks` are methods that are inverted by inverting the return
+ # of the block that is passed to the method
+ InverseBlocks:
+ :select: :reject
+ :select!: :reject!
-Style/IndentationWidth:
- # Number of spaces for each indentation level.
- Width: 2
-
-# Checks the indentation of the first element in an array literal.
-Style/IndentArray:
- # The value `special_inside_parentheses` means that array literals with
- # brackets that have their opening bracket on the same line as a surrounding
- # opening round parenthesis, shall have their first element indented relative
- # to the first position inside the parenthesis.
- #
- # The value `consistent` means that the indentation of the first element shall
- # always be relative to the first position of the line where the opening
- # bracket is.
- #
- # The value `align_brackets` means that the indentation of the first element
- # shall always be relative to the position of the opening bracket.
- EnforcedStyle: special_inside_parentheses
- SupportedStyles:
- - special_inside_parentheses
- - consistent
- - align_brackets
- # By default, the indentation width from `Style/IndentationWidth` is used
- # But it can be overridden by setting this parameter
- IndentationWidth: ~
-
-# Checks the indentation of assignment RHS, when on a different line from LHS
-Style/IndentAssignment:
- # By default, the indentation width from `Style/IndentationWidth` is used
- # But it can be overridden by setting this parameter
- IndentationWidth: ~
-
-# Checks the indentation of the first key in a hash literal.
-Style/IndentHash:
- # The value `special_inside_parentheses` means that hash literals with braces
- # that have their opening brace on the same line as a surrounding opening
- # round parenthesis, shall have their first key indented relative to the
- # first position inside the parenthesis.
- #
- # The value `consistent` means that the indentation of the first key shall
- # always be relative to the first position of the line where the opening
- # brace is.
- #
- # The value `align_braces` means that the indentation of the first key shall
- # always be relative to the position of the opening brace.
- EnforcedStyle: special_inside_parentheses
- SupportedStyles:
- - special_inside_parentheses
- - consistent
- - align_braces
- # By default, the indentation width from `Style/IndentationWidth` is used
- # But it can be overridden by setting this parameter
- IndentationWidth: ~
-
Style/Lambda:
EnforcedStyle: line_count_dependent
SupportedStyles:
- line_count_dependent
- lambda
- literal
-Style/SpaceInLambdaLiteral:
- EnforcedStyle: require_no_space
- SupportedStyles:
- - require_no_space
- - require_space
-
Style/LambdaCall:
EnforcedStyle: call
SupportedStyles:
- call
- braces
-Style/Next:
- # With `always` all conditions at the end of an iteration needs to be
- # replaced by next - with `skip_modifier_ifs` the modifier if like this one
- # are ignored: [1, 2].each { |a| return 'yes' if a == 1 }
- EnforcedStyle: skip_modifier_ifs
- # `MinBodyLength` defines the number of lines of the a body of an `if` or `unless`
- # needs to have to trigger this cop
- MinBodyLength: 3
- SupportedStyles:
- - skip_modifier_ifs
- - always
+Style/MethodCallWithArgsParentheses:
+ IgnoreMacros: true
+ IgnoredMethods: []
-Style/NonNilCheck:
- # With `IncludeSemanticChanges` set to `true`, this cop reports offenses for
- # `!x.nil?` and autocorrects that and `x != nil` to solely `x`, which is
- # **usually** OK, but might change behavior.
- #
- # With `IncludeSemanticChanges` set to `false`, this cop does not report
- # offenses for `!x.nil?` and does no changes that might change behavior.
- IncludeSemanticChanges: false
-
-Style/NumericPredicate:
- EnforcedStyle: predicate
- SupportedStyles:
- - predicate
- - comparison
- # Exclude RSpec specs because assertions like `expect(1).to be > 0` cause
- # false positives.
- Exclude:
- - 'spec/**/*'
-
Style/MethodDefParentheses:
EnforcedStyle: require_parentheses
SupportedStyles:
- require_parentheses
- require_no_parentheses
- require_no_parentheses_except_multiline
-Style/MethodCallWithArgsParentheses:
- IgnoredMethods: []
-
Style/MethodName:
EnforcedStyle: snake_case
SupportedStyles:
- snake_case
- camelCase
+# Checks the grouping of mixins (`include`, `extend`, `prepend`) in `class` and
+# `module` bodies.
+Style/MixinGrouping:
+ EnforcedStyle: separated
+ SupportedStyles:
+ # separated: each mixed in module goes in a separate statement.
+ # grouped: mixed in modules are grouped into a single statement.
+ - separated
+ - grouped
+
Style/ModuleFunction:
EnforcedStyle: module_function
SupportedStyles:
- module_function
- extend_self
-Style/MultilineArrayBraceLayout:
- EnforcedStyle: symmetrical
+Style/MultilineMemoization:
+ EnforcedStyle: keyword
SupportedStyles:
- # symmetrical: closing brace is positioned in same way as opening brace
- # new_line: closing brace is always on a new line
- # same_line: closing brace is always on the same line as last element
- - symmetrical
- - new_line
- - same_line
+ - keyword
+ - braces
-Style/MultilineAssignmentLayout:
- # The types of assignments which are subject to this rule.
- SupportedTypes:
- - block
- - case
- - class
- - if
- - kwbegin
- - module
- EnforcedStyle: new_line
+Style/NegatedIf:
+ EnforcedStyle: both
SupportedStyles:
- # Ensures that the assignment operator and the rhs are on the same line for
- # the set of supported types.
- - same_line
- # Ensures that the assignment operator and the rhs are on separate lines
- # for the set of supported types.
- - new_line
+ # both: prefix and postfix negated `if` should both use `unless`
+ # prefix: only use `unless` for negated `if` statements positioned before the body of the statement
+ # postfix: only use `unless` for negated `if` statements positioned after the body of the statement
+ - both
+ - prefix
+ - postfix
-Style/MultilineHashBraceLayout:
- EnforcedStyle: symmetrical
+Style/Next:
+ # With `always` all conditions at the end of an iteration needs to be
+ # replaced by next - with `skip_modifier_ifs` the modifier if like this one
+ # are ignored: [1, 2].each { |a| return 'yes' if a == 1 }
+ EnforcedStyle: skip_modifier_ifs
+ # `MinBodyLength` defines the number of lines of the a body of an `if` or `unless`
+ # needs to have to trigger this cop
+ MinBodyLength: 3
SupportedStyles:
- # symmetrical: closing brace is positioned in same way as opening brace
- # new_line: closing brace is always on a new line
- # same_line: closing brace is always on same line as last element
- - symmetrical
- - new_line
- - same_line
+ - skip_modifier_ifs
+ - always
-Style/MultilineMethodCallBraceLayout:
- EnforcedStyle: symmetrical
- SupportedStyles:
- # symmetrical: closing brace is positioned in same way as opening brace
- # new_line: closing brace is always on a new line
- # same_line: closing brace is always on the same line as last argument
- - symmetrical
- - new_line
- - same_line
+Style/NonNilCheck:
+ # With `IncludeSemanticChanges` set to `true`, this cop reports offenses for
+ # `!x.nil?` and autocorrects that and `x != nil` to solely `x`, which is
+ # **usually** OK, but might change behavior.
+ #
+ # With `IncludeSemanticChanges` set to `false`, this cop does not report
+ # offenses for `!x.nil?` and does no changes that might change behavior.
+ IncludeSemanticChanges: false
-Style/MultilineMethodCallIndentation:
- EnforcedStyle: aligned
- SupportedStyles:
- - aligned
- - indented
- - indented_relative_to_receiver
- # By default, the indentation width from Style/IndentationWidth is used
- # But it can be overridden by setting this parameter
- IndentationWidth: ~
-
-Style/MultilineMethodDefinitionBraceLayout:
- EnforcedStyle: symmetrical
- SupportedStyles:
- # symmetrical: closing brace is positioned in same way as opening brace
- # new_line: closing brace is always on a new line
- # same_line: closing brace is always on the same line as last parameter
- - symmetrical
- - new_line
- - same_line
-
-Style/MultilineOperationIndentation:
- EnforcedStyle: aligned
- SupportedStyles:
- - aligned
- - indented
- # By default, the indentation width from `Style/IndentationWidth` is used
- # But it can be overridden by setting this parameter
- IndentationWidth: ~
-
Style/NumericLiterals:
MinDigits: 5
+ Strict: false
Style/NumericLiteralPrefix:
EnforcedOctalStyle: zero_with_o
SupportedOctalStyles:
- zero_with_o
- zero_only
+Style/NumericPredicate:
+ EnforcedStyle: predicate
+ SupportedStyles:
+ - predicate
+ - comparison
+ # Exclude RSpec specs because assertions like `expect(1).to be > 0` cause
+ # false positives.
+ Exclude:
+ - 'spec/**/*'
+
Style/OptionHash:
# A list of parameter names that will be flagged by this cop.
SuspiciousParamNames:
- options
- opts
@@ -853,21 +1038,20 @@
# Allow safe assignment in conditions.
Style/ParenthesesAroundCondition:
AllowSafeAssignment: true
Style/PercentLiteralDelimiters:
+ # Specify the default preferred delimiter for all types with the 'default' key
+ # Override individual delimiters (even with default specified) by specifying
+ # an individual key
PreferredDelimiters:
- '%': ()
- '%i': ()
- '%I': ()
- '%q': ()
- '%Q': ()
+ default: ()
+ '%i': '[]'
+ '%I': '[]'
'%r': '{}'
- '%s': ()
- '%w': ()
- '%W': ()
- '%x': ()
+ '%w': '[]'
+ '%W': '[]'
Style/PercentQLiterals:
EnforcedStyle: lower_case_q
SupportedStyles:
- lower_case_q # Use `%q` when possible, `%Q` when necessary
@@ -886,11 +1070,11 @@
- have_
# Predicate names which, despite having a blacklisted prefix, or no `?`,
# should still be accepted
NameWhitelist:
- is_a?
- # Exclude Rspec specs because there is a strong convetion to write spec
+ # Exclude Rspec specs because there is a strong convention to write spec
# helpers in the form of `have_something` or `be_something`.
Exclude:
- 'spec/**/*'
Style/PreferredHashMethods:
@@ -949,16 +1133,10 @@
- elem
Style/SingleLineMethods:
AllowIfMethodIsEmpty: true
-Style/SpaceBeforeFirstArg:
- # When `true`, allows most uses of extra spacing if the intent is to align
- # things with the previous or next line, not counting empty lines or comment
- # lines.
- AllowForAlignment: true
-
Style/SpecialGlobalVars:
EnforcedStyle: use_english_names
SupportedStyles:
- use_perl_names
- use_english_names
@@ -992,67 +1170,13 @@
# PreferredMethods:
# intern: to_sym
PreferredMethods:
intern: to_sym
-Style/SpaceAroundBlockParameters:
- EnforcedStyleInsidePipes: no_space
- SupportedStylesInsidePipes:
- - space
- - no_space
-
-Style/SpaceAroundEqualsInParameterDefault:
- EnforcedStyle: space
- SupportedStyles:
- - space
- - no_space
-
-Style/SpaceAroundOperators:
- # When `true`, allows most uses of extra spacing if the intent is to align
- # with an operator on the previous or next line, not counting empty lines
- # or comment lines.
- AllowForAlignment: true
-
-Style/SpaceBeforeBlockBraces:
- EnforcedStyle: space
- SupportedStyles:
- - space
- - no_space
-
-Style/SpaceInsideBlockBraces:
- EnforcedStyle: space
- SupportedStyles:
- - space
- - no_space
- EnforcedStyleForEmptyBraces: no_space
- SupportedStylesForEmptyBraces:
- - space
- - no_space
- # Space between { and |. Overrides EnforcedStyle if there is a conflict.
- SpaceBeforeBlockParameters: true
-
-Style/SpaceInsideHashLiteralBraces:
- EnforcedStyle: space
- SupportedStyles:
- - space
- - no_space
- # 'compact' normally requires a space inside hash braces, with the exception
- # that successive left braces or right braces are collapsed together
- - compact
- EnforcedStyleForEmptyBraces: no_space
- SupportedStylesForEmptyBraces:
- - space
- - no_space
-
-Style/SpaceInsideStringInterpolation:
- EnforcedStyle: no_space
- SupportedStyles:
- - space
- - no_space
-
Style/SymbolArray:
EnforcedStyle: percent
+ MinSize: 0
SupportedStyles:
- percent
- brackets
Style/SymbolProc:
@@ -1068,16 +1192,10 @@
- require_parentheses
- require_no_parentheses
- require_parentheses_when_complex
AllowSafeAssignment: true
-Style/TrailingBlankLines:
- EnforcedStyle: final_newline
- SupportedStyles:
- - final_newline
- - final_blank_line
-
Style/TrailingCommaInArguments:
# If `comma`, the cop requires a comma after the last argument, but only for
# parenthesized method calls where each argument is on its own line.
# If `consistent_comma`, the cop requires a comma after the last argument,
# for all parenthesized method calls with arguments.
@@ -1096,11 +1214,11 @@
SupportedStylesForMultiline:
- comma
- consistent_comma
- no_comma
-# TrivialAccessors requires exact name matches and doesn't allow
+# `TrivialAccessors` requires exact name matches and doesn't allow
# predicated methods by default.
Style/TrivialAccessors:
# When set to `false` the cop will suggest the use of accessor methods
# in situations like:
#
@@ -1169,29 +1287,30 @@
# whose element count is greater than or equal to `MinSize`.
MinSize: 0
# The regular expression `WordRegex` decides what is considered a word.
WordRegex: !ruby/regexp '/\A[\p{Word}\n\t]+\z/'
-##################### Metrics ##################################
+#################### Metrics ###############################
Metrics/AbcSize:
# The ABC size is a calculated magnitude, so this number can be an Integer or
# a Float.
Max: 15
+Metrics/BlockLength:
+ CountComments: false # count full line comments?
+ Max: 25
+ ExcludedMethods: []
+
Metrics/BlockNesting:
CountBlocks: false
Max: 3
Metrics/ClassLength:
CountComments: false # count full line comments?
Max: 100
-Metrics/ModuleLength:
- CountComments: false # count full line comments?
- Max: 100
-
# Avoid complex methods.
Metrics/CyclomaticComplexity:
Max: 6
Metrics/LineLength:
@@ -1213,23 +1332,22 @@
Metrics/MethodLength:
CountComments: false # count full line comments?
Max: 10
-Metrics/BlockLength:
+Metrics/ModuleLength:
CountComments: false # count full line comments?
- Max: 25
- ExcludedMethods: []
+ Max: 100
Metrics/ParameterLists:
Max: 5
CountKeywordArgs: true
Metrics/PerceivedComplexity:
Max: 7
-##################### Lint ##################################
+#################### Lint ##################################
# Allow safe assignment in conditions.
Lint/AssignmentInCondition:
AllowSafeAssignment: true
@@ -1244,10 +1362,21 @@
SupportedStylesAlignWith:
- either
- start_of_block
- start_of_line
+Lint/DefEndAlignment:
+ # The value `def` means that `end` should be aligned with the def keyword.
+ # The value `start_of_line` means that `end` should be aligned with method
+ # calls like `private`, `public`, etc, if present in front of the `def`
+ # keyword on the same line.
+ EnforcedStyleAlignWith: start_of_line
+ SupportedStylesAlignWith:
+ - start_of_line
+ - def
+ AutoCorrect: false
+
# Align ends correctly.
Lint/EndAlignment:
# The value `keyword` means that `end` should be aligned with the matching
# keyword (`if`, `while`, etc.).
# The value `variable` means that in assignments, `end` should be aligned
@@ -1260,45 +1389,46 @@
- keyword
- variable
- start_of_line
AutoCorrect: false
-Lint/DefEndAlignment:
- # The value `def` means that `end` should be aligned with the def keyword.
- # The value `start_of_line` means that `end` should be aligned with method
- # calls like `private`, `public`, etc, if present in front of the `def`
- # keyword on the same line.
- EnforcedStyleAlignWith: start_of_line
- SupportedStylesAlignWith:
- - start_of_line
- - def
- AutoCorrect: false
-
Lint/InheritException:
# The default base class in favour of `Exception`.
EnforcedStyle: runtime_error
SupportedStyles:
- runtime_error
- standard_error
+Lint/SafeNavigationChain:
+ Whitelist:
+ - present?
+ - blank?
+ - presence
+ - try
+
# Checks for unused block arguments
Lint/UnusedBlockArgument:
IgnoreEmptyBlocks: true
AllowUnusedKeywordArguments: false
# Checks for unused method arguments.
Lint/UnusedMethodArgument:
AllowUnusedKeywordArguments: false
IgnoreEmptyMethods: true
-##################### Performance ############################
+#################### Performance ###########################
+Performance/DoubleStartEndWith:
+ # Used to check for `starts_with?` and `ends_with?`.
+ # These methods are defined by `ActiveSupport`.
+ IncludeActiveSupportAliases: false
+
Performance/RedundantMerge:
# Max number of key-value pairs to consider an offense
MaxKeyValuePairs: 2
-##################### Rails ##################################
+#################### Rails #################################
Rails/ActionFilter:
EnforcedStyle: action
SupportedStyles:
- action
@@ -1411,5 +1541,8 @@
- update_counters
Rails/Validation:
Include:
- app/models/**/*.rb
+
+Bundler/OrderedGems:
+ TreatCommentsAsGroupSeparators: true