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