config/enabled.yml in cookstyle-2.1.0 vs config/enabled.yml in cookstyle-3.0.0

- old
+ new

@@ -1,7 +1,58 @@ # These are all the cops that are enabled in the default configuration. +#################### Bundler ############################### + +Bundler/DuplicatedGem: + Description: 'Checks for duplicate gem entries in Gemfile.' + Enabled: true + Include: + - '**/*.gemfile' + - '**/Gemfile' + - '**/gems.rb' + +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 + Include: + - '**/*.gemfile' + - '**/Gemfile' + - '**/gems.rb' + +Bundler/OrderedGems: + Description: >- + Gems within groups in the Gemfile should be alphabetically sorted. + Enabled: true + Include: + - '**/*.gemfile' + - '**/Gemfile' + - '**/gems.rb' + +#################### Gemspec ############################### + +Gemspec/DuplicatedAssignment: + Description: 'An attribute assignment method calls should be listed only once in a gemspec.' + Enabled: true + Include: + - '**/*.gemspec' + +Gemspec/OrderedDependencies: + Description: >- + Dependencies in the gemspec should be alphabetically sorted. + Enabled: true + Include: + - '**/*.gemspec' + +Gemspec/RequiredRubyVersion: + Description: 'Checks that `required_ruby_version` of gemspec and `TargetRubyVersion` of .rubocop.yml are equal.' + Enabled: true + Include: + - '**/*.gemspec' + #################### Layout ############################### Layout/AccessModifierIndentation: Description: Check indentation of private/protected visibility modifiers. StyleGuide: '#indent-public-private-protected' @@ -25,10 +76,14 @@ Align the parameters of a method call if they span more than one line. StyleGuide: '#no-double-indent' Enabled: true +Layout/BlockAlignment: + Description: 'Align block ends correctly.' + Enabled: true + Layout/BlockEndNewline: Description: 'Put end statement of multiline block on its own line.' Enabled: true Layout/CaseIndentation: @@ -42,19 +97,39 @@ Layout/CommentIndentation: Description: 'Indentation of comments.' Enabled: true +Layout/ConditionPosition: + Description: >- + Checks for condition placed in a confusing position relative to + the keyword. + StyleGuide: '#same-line-condition' + Enabled: true + +Layout/DefEndAlignment: + Description: 'Align ends corresponding to defs correctly.' + Enabled: true + Layout/DotPosition: Description: 'Checks the position of the dot in multi-line method calls.' StyleGuide: '#consistent-multi-line-chains' Enabled: true Layout/ElseAlignment: Description: 'Align elses and elsifs correctly.' Enabled: true +Layout/EmptyComment: + Description: 'Checks empty comment.' + Enabled: true + +Layout/EmptyLineAfterMagicComment: + Description: 'Add an empty line after magic comments to separate them from code.' + StyleGuide: '#separate-magic-comments-from-code' + Enabled: true + Layout/EmptyLineBetweenDefs: Description: 'Use empty lines between defs.' StyleGuide: '#empty-lines-between-methods' Enabled: true @@ -66,10 +141,14 @@ Layout/EmptyLinesAroundAccessModifier: Description: "Keep blank lines around access modifiers." StyleGuide: '#empty-lines-around-access-modifier' Enabled: true +Layout/EmptyLinesAroundArguments: + Description: "Keeps track of empty lines around method arguments." + Enabled: true + Layout/EmptyLinesAroundBeginBody: Description: "Keeps track of empty lines around begin-end bodies." StyleGuide: '#empty-lines-around-bodies' Enabled: true @@ -86,18 +165,22 @@ Layout/EmptyLinesAroundExceptionHandlingKeywords: Description: "Keeps track of empty lines around exception handling keywords." StyleGuide: '#empty-lines-around-bodies' Enabled: true +Layout/EmptyLinesAroundMethodBody: + Description: "Keeps track of empty lines around method bodies." + StyleGuide: '#empty-lines-around-bodies' + Enabled: true + Layout/EmptyLinesAroundModuleBody: Description: "Keeps track of empty lines around module bodies." StyleGuide: '#empty-lines-around-bodies' Enabled: true -Layout/EmptyLinesAroundMethodBody: - Description: "Keeps track of empty lines around method bodies." - StyleGuide: '#empty-lines-around-bodies' +Layout/EndAlignment: + Description: 'Align ends correctly.' Enabled: true Layout/EndOfLine: Description: 'Use Unix-style line endings.' StyleGuide: '#crlf' @@ -105,29 +188,14 @@ Layout/ExtraSpacing: Description: 'Do not use unnecessary spacing.' Enabled: true -Layout/InitialIndentation: - Description: >- - Checks the indentation of the first non-blank non-comment line in a file. - Enabled: true - Layout/FirstParameterIndentation: Description: 'Checks the indentation of the first parameter in a method call.' Enabled: true -Layout/IndentationConsistency: - Description: 'Keep indentation straight.' - StyleGuide: '#spaces-indentation' - Enabled: true - -Layout/IndentationWidth: - Description: 'Use 2 spaces for indentation.' - StyleGuide: '#spaces-indentation' - Enabled: true - Layout/IndentArray: Description: >- Checks the indentation of the first element in an array literal. Enabled: true @@ -145,14 +213,25 @@ Layout/IndentHeredoc: Description: 'This cops checks the indentation of the here document bodies.' StyleGuide: '#squiggly-heredocs' Enabled: true -Layout/SpaceInLambdaLiteral: - Description: 'Checks for spaces in lambda literals.' +Layout/IndentationConsistency: + Description: 'Keep indentation straight.' + StyleGuide: '#spaces-indentation' Enabled: true +Layout/IndentationWidth: + Description: 'Use 2 spaces for indentation.' + StyleGuide: '#spaces-indentation' + Enabled: true + +Layout/InitialIndentation: + Description: >- + Checks the indentation of the first non-blank non-comment line in a file. + Enabled: true + Layout/LeadingCommentSpace: Description: 'Comments should start with a space.' StyleGuide: '#hash-space' Enabled: true @@ -198,25 +277,14 @@ Description: >- Checks indentation of binary operations that span more than one line. Enabled: true -Layout/EmptyLineAfterMagicComment: - Description: 'Add an empty line after magic comments to separate them from code.' - StyleGuide: '#separate-magic-comments-from-code' - Enabled: true - Layout/RescueEnsureAlignment: Description: 'Align rescues and ensures correctly.' Enabled: true -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 - Layout/SpaceAfterColon: Description: 'Use spaces after colons.' StyleGuide: '#spaces-operators' Enabled: true @@ -240,10 +308,31 @@ Layout/SpaceAfterSemicolon: Description: 'Use spaces after semicolons.' StyleGuide: '#spaces-operators' Enabled: true +Layout/SpaceAroundBlockParameters: + Description: 'Checks the spacing inside and after block parameters pipes.' + Enabled: true + +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 + +Layout/SpaceAroundKeyword: + Description: 'Use a space around keywords if appropriate.' + Enabled: true + +Layout/SpaceAroundOperators: + Description: 'Use a single space around operators.' + StyleGuide: '#spaces-operators' + Enabled: true + Layout/SpaceBeforeBlockBraces: Description: >- Checks that the left block brace has or doesn't have space before it. Enabled: true @@ -256,70 +345,62 @@ Description: >- Checks for missing space between code and a comment on the same line. Enabled: true -Layout/SpaceBeforeSemicolon: - Description: 'No spaces before semicolons.' - Enabled: true - -Layout/SpaceInsideBlockBraces: +Layout/SpaceBeforeFirstArg: 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. + Checks that exactly one space is used between a method name + and the first argument for method calls without parentheses. Enabled: true -Layout/SpaceAroundBlockParameters: - Description: 'Checks the spacing inside and after block parameters pipes.' +Layout/SpaceBeforeSemicolon: + Description: 'No spaces before semicolons.' Enabled: true -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' +Layout/SpaceInLambdaLiteral: + Description: 'Checks for spaces in lambda literals.' Enabled: true -Layout/SpaceAroundKeyword: - Description: 'Use a space around keywords if appropriate.' +Layout/SpaceInsideArrayLiteralBrackets: + Description: 'Checks the spacing inside array literal brackets.' Enabled: true -Layout/SpaceAroundOperators: - Description: 'Use a single space around operators.' - StyleGuide: '#spaces-operators' - Enabled: true - Layout/SpaceInsideArrayPercentLiteral: Description: 'No unnecessary additional spaces between elements in %i/%w literals.' Enabled: true -Layout/SpaceInsidePercentLiteralDelimiters: - Description: 'No unnecessary spaces inside delimiters of %i/%w/%x literals.' +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 -Layout/SpaceInsideBrackets: - Description: 'No spaces after [ or before ].' - StyleGuide: '#no-spaces-braces' - Enabled: true - Layout/SpaceInsideHashLiteralBraces: Description: "Use spaces inside hash literal braces - or don't." StyleGuide: '#spaces-operators' Enabled: true Layout/SpaceInsideParens: Description: 'No spaces after ( or before ).' - StyleGuide: '#no-spaces-braces' + StyleGuide: '#spaces-braces' Enabled: true +Layout/SpaceInsidePercentLiteralDelimiters: + Description: 'No unnecessary spaces inside delimiters of %i/%w/%x literals.' + Enabled: true + Layout/SpaceInsideRangeLiteral: Description: 'No spaces inside range literals.' StyleGuide: '#no-space-inside-range-literals' Enabled: true +Layout/SpaceInsideReferenceBrackets: + Description: 'Checks the spacing inside referential brackets.' + Enabled: true + Layout/SpaceInsideStringInterpolation: Description: 'Checks for padding/surrounding spaces inside string interpolation.' StyleGuide: '#string-interpolation' Enabled: true @@ -336,17 +417,910 @@ Layout/TrailingWhitespace: Description: 'Avoid trailing whitespace.' StyleGuide: '#no-trailing-whitespace' Enabled: true -#################### Style ############################### +#################### Lint ################################## +### Warnings -Style/AccessorMethodName: +Lint/AmbiguousBlockAssociation: + Description: >- + Checks for ambiguous block association with method when param passed without + parentheses. + StyleGuide: '#syntax' + Enabled: true + +Lint/AmbiguousOperator: + Description: >- + Checks for ambiguous operators in the first argument of a + method invocation without parentheses. + StyleGuide: '#method-invocation-parens' + Enabled: true + +Lint/AmbiguousRegexpLiteral: + Description: >- + Checks for ambiguous regexp literals in the first argument of + a method invocation without parentheses. + Enabled: true + +Lint/AssignmentInCondition: + Description: "Don't use assignment in conditions." + StyleGuide: '#safe-assignment-in-condition' + Enabled: true + +Lint/BigDecimalNew: + Description: '`BigDecimal.new()` is deprecated. Use `BigDecimal()` instead.' + Enabled: true + +Lint/BooleanSymbol: + Description: 'Check for `:true` and `:false` symbols.' + Enabled: true + +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 + +Lint/Debugger: + Description: 'Check for debugger calls.' + Enabled: true + +Lint/DeprecatedClassMethods: + Description: 'Check for deprecated class method calls.' + Enabled: true + +Lint/DuplicateCaseCondition: + Description: 'Do not repeat values in case conditionals.' + Enabled: true + +Lint/DuplicateMethods: + Description: 'Check for duplicate method definitions.' + Enabled: true + +Lint/DuplicatedKey: + Description: 'Check for duplicate keys in hash literals.' + Enabled: true + +Lint/EachWithObjectArgument: + Description: 'Check for immutable argument given to each_with_object.' + Enabled: true + +Lint/ElseLayout: + Description: 'Check for odd code arrangement in an else block.' + Enabled: true + +Lint/EmptyEnsure: + Description: 'Checks for empty ensure block.' + Enabled: true + AutoCorrect: false + +Lint/EmptyExpression: + Description: 'Checks for empty expressions.' + Enabled: true + +Lint/EmptyInterpolation: + Description: 'Checks for empty string interpolation.' + Enabled: true + +Lint/EmptyWhen: + Description: 'Checks for `when` branches with empty bodies.' + Enabled: true + +Lint/EndInMethod: + Description: 'END blocks should not be placed inside method definitions.' + Enabled: true + +Lint/EnsureReturn: + Description: 'Do not use return in an ensure block.' + StyleGuide: '#no-return-ensure' + Enabled: true + +Lint/FloatOutOfRange: + Description: >- + Catches floating-point literals too large or small for Ruby to + represent. + Enabled: true + +Lint/FormatParameterMismatch: + Description: 'The number of parameters to format/sprint must match the fields.' + Enabled: true + +Lint/HandleExceptions: + Description: "Don't suppress exception." + StyleGuide: '#dont-hide-exceptions' + Enabled: true + +Lint/ImplicitStringConcatenation: + Description: >- + Checks for adjacent string literals on the same line, which + could better be represented as a single string literal. + Enabled: true + +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 + +Lint/InheritException: + Description: 'Avoid inheriting from the `Exception` class.' + Enabled: true + +Lint/InterpolationCheck: + Description: 'Raise warning for interpolation in single q strs' + Enabled: true + +Lint/LiteralAsCondition: + Description: 'Checks of literals used in conditions.' + Enabled: true + +Lint/LiteralInInterpolation: + Description: 'Checks for literals used in interpolation.' + Enabled: true + +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 + +Lint/MissingCopEnableDirective: + Description: 'Checks for a `# rubocop:enable` after `# rubocop:disable`' + Enabled: true + +Lint/MultipleCompare: + Description: "Use `&&` operator to compare multiple value." + Enabled: true + +Lint/NestedMethodDefinition: + Description: 'Do not use nested method definitions.' + StyleGuide: '#no-nested-methods' + Enabled: true + +Lint/NestedPercentLiteral: + Description: 'Checks for nested percent literals.' + Enabled: true + +Lint/NextWithoutAccumulator: + Description: >- + Do not omit the accumulator when calling `next` + in a `reduce`/`inject` block. + Enabled: true + +Lint/NonLocalExitFromIterator: + Description: 'Do not use return in iterator to cause non-local exit.' + Enabled: true + +Lint/OrderedMagicComments: + Description: 'Checks the proper ordering of magic comments and whether a magic comment is not placed before a shebang.' + Enabled: true + +Lint/ParenthesesAsGroupedExpression: + Description: >- + Checks for method calls with a space before the opening + parenthesis. + StyleGuide: '#parens-no-spaces' + Enabled: true + +Lint/PercentStringArray: + Description: >- + Checks for unwanted commas and quotes in %w/%W literals. + Enabled: true + +Lint/PercentSymbolArray: + Description: >- + Checks for unwanted commas and colons in %i/%I literals. + Enabled: true + +Lint/RandOne: + Description: >- + Checks for `rand(1)` calls. Such calls always return `0` + and most likely a mistake. + Enabled: true + +Lint/RedundantWithIndex: + Description: 'Checks for redundant `with_index`.' + Enabled: true + +Lint/RedundantWithObject: + Description: 'Checks for redundant `with_object`.' + Enabled: true + +Lint/RegexpAsCondition: + Description: >- + Do not use regexp literal as a condition. + The regexp literal matches `$_` implicitly. + Enabled: true + +Lint/RequireParentheses: + Description: >- + Use parentheses in the method call to avoid confusion + about precedence. + Enabled: true + +Lint/RescueException: + Description: 'Avoid rescuing the Exception class.' + StyleGuide: '#no-blind-rescues' + Enabled: true + +Lint/RescueType: + Description: 'Avoid rescuing from non constants that could result in a `TypeError`.' + Enabled: true + +Lint/ReturnInVoidContext: + Description: 'Checks for return in void context.' + Enabled: true + +Lint/SafeNavigationChain: + Description: 'Do not chain ordinary method call after safe navigation operator.' + Enabled: true + +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 + +Lint/ScriptPermission: + Description: 'Grant script file execute permission.' + Enabled: true + +Lint/ShadowedArgument: + Description: 'Avoid reassigning arguments before they were used.' + Enabled: true + +Lint/ShadowedException: + Description: >- + Avoid rescuing a higher level exception + before a lower level exception. + Enabled: true + +Lint/ShadowingOuterLocalVariable: + Description: >- + Do not use the same name as outer local variable + for block arguments or block local variables. + Enabled: true + +Lint/StringConversionInInterpolation: + Description: 'Checks for Object#to_s usage in string interpolation.' + StyleGuide: '#no-to-s' + Enabled: true + +Lint/Syntax: + Description: 'Checks syntax error' + Enabled: true + +Lint/UnderscorePrefixedVariableName: + Description: 'Do not use prefix `_` for a variable that is used.' + Enabled: true + +Lint/UnifiedInteger: + Description: 'Use Integer instead of Fixnum or Bignum' + Enabled: true + +Lint/UnneededCopDisableDirective: + 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 + +Lint/UnneededCopEnableDirective: + Description: Checks for rubocop:enable comments that can be removed. + + Enabled: true + +Lint/UnneededRequireStatement: + Description: 'Checks for unnecessary `require` statement.' + Enabled: true + +Lint/UnneededSplatExpansion: + Description: 'Checks for splat unnecessarily being called on literals' + Enabled: true + +Lint/UnreachableCode: + Description: 'Unreachable code.' + Enabled: true + +Lint/UnusedBlockArgument: + Description: 'Checks for unused block arguments.' + StyleGuide: '#underscore-unused-vars' + Enabled: true + +Lint/UnusedMethodArgument: + Description: 'Checks for unused method arguments.' + StyleGuide: '#underscore-unused-vars' + Enabled: 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 + +Lint/UriRegexp: + Description: 'Use `URI::DEFAULT_PARSER.make_regexp` instead of `URI.regexp`.' + Enabled: true + +Lint/UselessAccessModifier: + Description: 'Checks for useless access modifiers.' + Enabled: true + ContextCreatingMethods: [] + MethodCreatingMethods: [] + +Lint/UselessAssignment: + Description: 'Checks for useless assignment to a local variable.' + StyleGuide: '#underscore-unused-vars' + Enabled: true + +Lint/UselessComparison: + Description: 'Checks for comparison of something with itself.' + Enabled: true + +Lint/UselessElseWithoutRescue: + Description: 'Checks for useless `else` in `begin..end` without `rescue`.' + Enabled: true + +Lint/UselessSetterCall: + Description: 'Checks for useless setter call to a local variable.' + Enabled: true + +Lint/Void: + Description: 'Possible use of operator/literal/variable in void context.' + Enabled: true + +#################### Metrics ############################### + +Metrics/AbcSize: + Description: >- + A calculated magnitude based on number of assignments, + branches, and conditions. + Reference: 'http://c2.com/cgi/wiki?AbcMetric' + Enabled: true + +Metrics/BlockLength: + Description: 'Avoid long blocks with many lines.' + Enabled: true + +Metrics/BlockNesting: + Description: 'Avoid excessive block nesting' + StyleGuide: '#three-is-the-number-thou-shalt-count' + Enabled: true + +Metrics/ClassLength: + Description: 'Avoid classes longer than 100 lines of code.' + Enabled: true + +Metrics/CyclomaticComplexity: + Description: >- + A complexity metric that is strongly correlated to the number + of test cases needed to validate a method. + Enabled: true + +Metrics/LineLength: + Description: 'Limit lines to 80 characters.' + StyleGuide: '#80-character-limits' + Enabled: true + +Metrics/MethodLength: + Description: 'Avoid methods longer than 10 lines of code.' + StyleGuide: '#short-methods' + Enabled: true + +Metrics/ModuleLength: + Description: 'Avoid modules longer than 100 lines of code.' + Enabled: true + +Metrics/ParameterLists: + Description: 'Avoid parameter lists longer than three or four parameters.' + StyleGuide: '#too-many-params' + Enabled: true + +Metrics/PerceivedComplexity: + Description: >- + A complexity metric geared towards measuring complexity for a + human reader. + Enabled: true + +#################### Naming ############################## + +Naming/AccessorMethodName: Description: Check the naming of accessor methods for get_/set_. StyleGuide: '#accessor_mutator_method_names' Enabled: true +Naming/AsciiIdentifiers: + Description: 'Use only ascii symbols in identifiers.' + StyleGuide: '#english-identifiers' + Enabled: true + +Naming/BinaryOperatorParameterName: + Description: 'When defining binary operators, name the argument other.' + StyleGuide: '#other-arg' + Enabled: true + +Naming/ClassAndModuleCamelCase: + Description: 'Use CamelCase for classes and modules.' + StyleGuide: '#camelcase-classes' + Enabled: true + +Naming/ConstantName: + Description: 'Constants should use SCREAMING_SNAKE_CASE.' + StyleGuide: '#screaming-snake-case' + Enabled: true + +Naming/FileName: + Description: 'Use snake_case for source file names.' + StyleGuide: '#snake-case-files' + Enabled: true + +Naming/HeredocDelimiterCase: + Description: 'Use configured case for heredoc delimiters.' + StyleGuide: '#heredoc-delimiters' + Enabled: true + +Naming/HeredocDelimiterNaming: + Description: 'Use descriptive heredoc delimiters.' + StyleGuide: '#heredoc-delimiters' + Enabled: true + +Naming/MemoizedInstanceVariableName: + Description: >- + Memoized method name should match memo instance variable name. + Enabled: true + +Naming/MethodName: + Description: 'Use the configured style when naming methods.' + StyleGuide: '#snake-case-symbols-methods-vars' + Enabled: true + +Naming/PredicateName: + Description: 'Check the names of predicate methods.' + StyleGuide: '#bool-methods-qmark' + Enabled: true + +Naming/UncommunicativeBlockParamName: + Description: >- + Checks for block parameter names that contain capital letters, + end in numbers, or do not meet a minimal length. + Enabled: true + +Naming/UncommunicativeMethodParamName: + Description: >- + Checks for method parameter names that contain capital letters, + end in numbers, or do not meet a minimal length. + Enabled: true + +Naming/VariableName: + Description: 'Use the configured style when naming variables.' + StyleGuide: '#snake-case-symbols-methods-vars' + Enabled: true + +Naming/VariableNumber: + Description: 'Use the configured style when numbering variables.' + Enabled: true + +#################### Performance ########################### + +Performance/Caller: + Description: >- + Use `caller(n..n)` instead of `caller`. + Enabled: true + +Performance/CaseWhenSplat: + Description: >- + Place `when` conditions that use splat at the end + of the list of `when` branches. + Enabled: true + +Performance/Casecmp: + Description: >- + Use `casecmp` rather than `downcase ==`, `upcase ==`, `== downcase`, or `== upcase`.. + Reference: 'https://github.com/JuanitoFatas/fast-ruby#stringcasecmp-vs-stringdowncase---code' + Enabled: true + +Performance/CompareWithBlock: + Description: 'Use `sort_by(&:foo)` instead of `sort { |a, b| a.foo <=> b.foo }`.' + Enabled: true + +Performance/Count: + Description: >- + Use `count` instead of `select...size`, `reject...size`, + `select...count`, `reject...count`, `select...length`, + and `reject...length`. + # This cop has known compatibility issues with `ActiveRecord` and other + # frameworks. ActiveRecord's `count` ignores the block that is passed to it. + # For more information, see the documentation in the cop itself. + # If you understand the known risk, you can disable `SafeMode`. + SafeMode: true + Enabled: true + +Performance/Detect: + Description: >- + Use `detect` instead of `select.first`, `find_all.first`, + `select.last`, and `find_all.last`. + Reference: 'https://github.com/JuanitoFatas/fast-ruby#enumerabledetect-vs-enumerableselectfirst-code' + # This cop has known compatibility issues with `ActiveRecord` and other + # frameworks. `ActiveRecord` does not implement a `detect` method and `find` + # has its own meaning. Correcting `ActiveRecord` methods with this cop + # should be considered unsafe. + SafeMode: true + Enabled: true + +Performance/DoubleStartEndWith: + Description: >- + Use `str.{start,end}_with?(x, ..., y, ...)` + instead of `str.{start,end}_with?(x, ...) || str.{start,end}_with?(y, ...)`. + Enabled: true + +Performance/EndWith: + Description: 'Use `end_with?` instead of a regex match anchored to the end of a string.' + Reference: 'https://github.com/JuanitoFatas/fast-ruby#stringmatch-vs-stringstart_withstringend_with-code-start-code-end' + # This will change to a new method call which isn't guaranteed to be on the + # object. Switching these methods has to be done with knowledge of the types + # of the variables which rubocop doesn't have. + AutoCorrect: false + Enabled: true + +Performance/FixedSize: + Description: 'Do not compute the size of statically sized objects except in constants' + Enabled: true + +Performance/FlatMap: + Description: >- + Use `Enumerable#flat_map` + instead of `Enumerable#map...Array#flatten(1)` + or `Enumberable#collect..Array#flatten(1)` + Reference: 'https://github.com/JuanitoFatas/fast-ruby#enumerablemaparrayflatten-vs-enumerableflat_map-code' + Enabled: true + EnabledForFlattenWithoutParams: false + # If enabled, this cop will warn about usages of + # `flatten` being called without any parameters. + # This can be dangerous since `flat_map` will only flatten 1 level, and + # `flatten` without any parameters can flatten multiple levels. + +Performance/LstripRstrip: + Description: 'Use `strip` instead of `lstrip.rstrip`.' + Enabled: true + +Performance/RangeInclude: + Description: 'Use `Range#cover?` instead of `Range#include?`.' + Reference: 'https://github.com/JuanitoFatas/fast-ruby#cover-vs-include-code' + Enabled: true + +Performance/RedundantBlockCall: + Description: 'Use `yield` instead of `block.call`.' + Reference: 'https://github.com/JuanitoFatas/fast-ruby#proccall-and-block-arguments-vs-yieldcode' + Enabled: true + +Performance/RedundantMatch: + Description: >- + Use `=~` instead of `String#match` or `Regexp#match` in a context where the + returned `MatchData` is not needed. + Enabled: true + +Performance/RedundantMerge: + Description: 'Use Hash#[]=, rather than Hash#merge! with a single key-value pair.' + Reference: 'https://github.com/JuanitoFatas/fast-ruby#hashmerge-vs-hash-code' + Enabled: true + +Performance/RedundantSortBy: + Description: 'Use `sort` instead of `sort_by { |x| x }`.' + Enabled: true + +Performance/RegexpMatch: + Description: >- + Use `match?` instead of `Regexp#match`, `String#match`, `Symbol#match`, + `Regexp#===`, or `=~` when `MatchData` is not used. + Enabled: true + +Performance/ReverseEach: + Description: 'Use `reverse_each` instead of `reverse.each`.' + Reference: 'https://github.com/JuanitoFatas/fast-ruby#enumerablereverseeach-vs-enumerablereverse_each-code' + Enabled: true + +Performance/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 + +Performance/Size: + Description: >- + Use `size` instead of `count` for counting + the number of elements in `Array` and `Hash`. + Reference: 'https://github.com/JuanitoFatas/fast-ruby#arraylength-vs-arraysize-vs-arraycount-code' + Enabled: true + +Performance/StartWith: + Description: 'Use `start_with?` instead of a regex match anchored to the beginning of a string.' + Reference: 'https://github.com/JuanitoFatas/fast-ruby#stringmatch-vs-stringstart_withstringend_with-code-start-code-end' + # This will change to a new method call which isn't guaranteed to be on the + # object. Switching these methods has to be done with knowledge of the types + # of the variables which rubocop doesn't have. + AutoCorrect: false + Enabled: true + +Performance/StringReplacement: + Description: >- + Use `tr` instead of `gsub` when you are replacing the same + number of characters. Use `delete` instead of `gsub` when + you are deleting characters. + Reference: 'https://github.com/JuanitoFatas/fast-ruby#stringgsub-vs-stringtr-code' + Enabled: true + +Performance/TimesMap: + Description: 'Checks for .times.map calls.' + AutoCorrect: false + Enabled: true + +Performance/UnfreezeString: + Description: 'Use unary plus to get an unfrozen string literal.' + Enabled: true + +Performance/UnneededSort: + Description: >- + Use `min` instead of `sort.first`, + `max_by` instead of `sort_by...last`, etc. + Enabled: true + +Performance/UriDefaultParser: + Description: 'Use `URI::DEFAULT_PARSER` instead of `URI::Parser.new`.' + Enabled: true + +#################### Rails ################################# + +Rails/ActionFilter: + Description: 'Enforces consistent use of action filter methods.' + Enabled: true + +Rails/ActiveRecordAliases: + Description: >- + Avoid Active Record aliases: + Use `update` instead of `update_attributes`. + Use `update!` instead of `update_attributes!`. + Enabled: true + +Rails/ActiveSupportAliases: + Description: >- + Avoid ActiveSupport aliases of standard ruby methods: + `String#starts_with?`, `String#ends_with?`, + `Array#append`, `Array#prepend`. + Enabled: true + +Rails/ApplicationJob: + Description: 'Check that jobs subclass ApplicationJob.' + Enabled: true + +Rails/ApplicationRecord: + Description: 'Check that models subclass ApplicationRecord.' + Enabled: true + +Rails/Blank: + Description: 'Enforce using `blank?` and `present?`.' + Enabled: true + # Convert checks for `nil` or `empty?` to `blank?` + NilOrEmpty: true + # Convert usages of not `present?` to `blank?` + NotPresent: true + # Convert usages of `unless` `present?` to `if` `blank?` + UnlessPresent: true + +Rails/CreateTableWithTimestamps: + Description: >- + Checks the migration for which timestamps are not included + when creating a new table. + Enabled: true + +Rails/Date: + Description: >- + Checks the correct usage of date aware methods, + such as Date.today, Date.current etc. + Enabled: true + +Rails/Delegate: + Description: 'Prefer delegate method for delegations.' + Enabled: true + +Rails/DelegateAllowBlank: + Description: 'Do not use allow_blank as an option to delegate.' + Enabled: true + +Rails/DynamicFindBy: + Description: 'Use `find_by` instead of dynamic `find_by_*`.' + StyleGuide: 'https://github.com/bbatsov/rails-style-guide#find_by' + Enabled: true + +Rails/EnumUniqueness: + Description: 'Avoid duplicate integers in hash-syntax `enum` declaration.' + Enabled: true + +Rails/EnvironmentComparison: + Description: "Favor `Rails.env.production?` over `Rails.env == 'production'`" + Enabled: true + +Rails/Exit: + Description: >- + Favor `fail`, `break`, `return`, etc. over `exit` in + application or library code outside of Rake files to avoid + exits during unit testing or running in production. + Enabled: true + +Rails/FilePath: + Description: 'Use `Rails.root.join` for file path joining.' + Enabled: true + +Rails/FindBy: + Description: 'Prefer find_by over where.first.' + StyleGuide: 'https://github.com/bbatsov/rails-style-guide#find_by' + Enabled: true + +Rails/FindEach: + Description: 'Prefer all.find_each over all.find.' + StyleGuide: 'https://github.com/bbatsov/rails-style-guide#find-each' + Enabled: true + +Rails/HasAndBelongsToMany: + Description: 'Prefer has_many :through to has_and_belongs_to_many.' + StyleGuide: 'https://github.com/bbatsov/rails-style-guide#has-many-through' + Enabled: true + +Rails/HasManyOrHasOneDependent: + Description: 'Define the dependent option to the has_many and has_one associations.' + StyleGuide: 'https://github.com/bbatsov/rails-style-guide#has_many-has_one-dependent-option' + Enabled: true + +Rails/HttpPositionalArguments: + Description: 'Use keyword arguments instead of positional arguments in http method calls.' + Enabled: true + Include: + - 'spec/**/*' + - 'test/**/*' + +Rails/HttpStatus: + Description: 'Enforces use of symbolic or numeric value to define HTTP status.' + Enabled: true + +Rails/InverseOf: + Description: 'Checks for associations where the inverse cannot be determined automatically.' + Enabled: true + +Rails/LexicallyScopedActionFilter: + Description: "Checks that methods specified in the filter's `only` or `except` options are explicitly defined in the controller." + StyleGuide: 'https://github.com/bbatsov/rails-style-guide#lexically-scoped-action-filter' + Enabled: true + +Rails/NotNullColumn: + Description: 'Do not add a NOT NULL column without a default value' + Enabled: true + +Rails/Output: + Description: 'Checks for calls to puts, print, etc.' + Enabled: true + +Rails/OutputSafety: + Description: 'The use of `html_safe` or `raw` may be a security risk.' + Enabled: true + +Rails/PluralizationGrammar: + Description: 'Checks for incorrect grammar when using methods like `3.day.ago`.' + Enabled: true + +Rails/Presence: + Description: 'Checks code that can be written more easily using `Object#presence` defined by Active Support.' + Enabled: true + +Rails/Present: + Description: 'Enforce using `blank?` and `present?`.' + Enabled: true + NotNilAndNotEmpty: true + # Convert checks for not `nil` and not `empty?` to `present?` + NotBlank: true + # Convert usages of not `blank?` to `present?` + UnlessBlank: true + # Convert usages of `unless` `blank?` to `if` `present?` + +Rails/ReadWriteAttribute: + Description: >- + Checks for read_attribute(:attr) and + write_attribute(:attr, val). + StyleGuide: 'https://github.com/bbatsov/rails-style-guide#read-attribute' + Enabled: true + +Rails/RedundantReceiverInWithOptions: + Description: 'Checks for redundant receiver in `with_options`.' + Enabled: true + +Rails/RelativeDateConstant: + Description: 'Do not assign relative date to constants.' + Enabled: true + +Rails/RequestReferer: + Description: 'Use consistent syntax for request.referer.' + Enabled: true + +Rails/ReversibleMigration: + Description: 'Checks whether the change method of the migration file is reversible.' + StyleGuide: 'https://github.com/bbatsov/rails-style-guide#reversible-migration' + Reference: 'http://api.rubyonrails.org/classes/ActiveRecord/Migration/CommandRecorder.html' + Enabled: true + +Rails/SafeNavigation: + Description: "Use Ruby's safe navigation operator (`&.`) instead of `try!`" + Enabled: true + +Rails/ScopeArgs: + Description: 'Checks the arguments of ActiveRecord scopes.' + Enabled: true + +Rails/SkipsModelValidations: + Description: >- + Use methods that skips model validations with caution. + See reference for more information. + Reference: 'http://guides.rubyonrails.org/active_record_validations.html#skipping-validations' + Enabled: true + +Rails/TimeZone: + Description: 'Checks the correct usage of time zone aware methods.' + StyleGuide: 'https://github.com/bbatsov/rails-style-guide#time' + Reference: 'http://danilenko.org/2012/7/6/rails_timezones' + Enabled: true + +Rails/UniqBeforePluck: + Description: 'Prefer the use of uniq or distinct before pluck.' + Enabled: true + +Rails/UnknownEnv: + Description: 'Use correct environment name.' + Enabled: true + +Rails/Validation: + Description: 'Use validates :attribute, hash of validations.' + Enabled: true + +#################### Security ############################## + +Security/Eval: + Description: 'The use of eval represents a serious security risk.' + Enabled: true + +Security/JSONLoad: + Description: >- + Prefer usage of `JSON.parse` over `JSON.load` due to potential + security issues. See reference for more information. + Reference: 'http://ruby-doc.org/stdlib-2.3.0/libdoc/json/rdoc/JSON.html#method-i-load' + Enabled: true + # Autocorrect here will change to a method that may cause crashes depending + # on the value of the argument. + AutoCorrect: false + +Security/MarshalLoad: + Description: >- + Avoid using of `Marshal.load` or `Marshal.restore` due to potential + security issues. See reference for more information. + Reference: 'http://ruby-doc.org/core-2.3.3/Marshal.html#module-Marshal-label-Security+considerations' + Enabled: true + +Security/Open: + Description: 'The use of Kernel#open represents a serious security risk.' + Enabled: true + +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.3.3/libdoc/yaml/rdoc/YAML.html#module-YAML-label-Security' + Enabled: true + +#################### Style ############################### + Style/Alias: Description: 'Use alias instead of alias_method.' StyleGuide: '#alias-method' Enabled: true @@ -363,30 +1337,25 @@ Style/AsciiComments: Description: 'Use only ascii symbols in comments.' StyleGuide: '#english-comments' Enabled: true -Style/AsciiIdentifiers: - Description: 'Use only ascii symbols in identifiers.' - StyleGuide: '#english-identifiers' - Enabled: true - Style/Attr: Description: 'Checks for uses of Module#attr.' StyleGuide: '#attr' Enabled: true -Style/BeginBlock: - Description: 'Avoid the use of BEGIN blocks.' - StyleGuide: '#no-BEGIN-blocks' - Enabled: true - Style/BarePercentLiterals: Description: 'Checks if usage of %() or %Q() matches configuration.' StyleGuide: '#percent-q-shorthand' Enabled: true +Style/BeginBlock: + Description: 'Avoid the use of BEGIN blocks.' + StyleGuide: '#no-BEGIN-blocks' + Enabled: true + Style/BlockComments: Description: 'Do not use block comments.' StyleGuide: '#no-block-comments' Enabled: true @@ -410,17 +1379,19 @@ Style/CharacterLiteral: Description: 'Checks for uses of character literals.' StyleGuide: '#no-character-literals' Enabled: true -Style/ClassAndModuleCamelCase: - Description: 'Use CamelCase for classes and modules.' - StyleGuide: '#camelcase-classes' - Enabled: true - Style/ClassAndModuleChildren: Description: 'Checks style of children classes and modules.' + StyleGuide: '#namespace-definition' + # Moving from compact to nested children requires knowledge of whether the + # outer parent is a module or a class. Moving from nested to compact requires + # verification that the outer parent is defined elsewhere. Rubocop does not + # have the knowledge to perform either operation safely and thus requires + # manual oversight. + AutoCorrect: false Enabled: true Style/ClassCheck: Description: 'Enforces consistent use of `Object#is_a?` or `Object#kind_of?`.' Enabled: true @@ -438,10 +1409,15 @@ Style/ColonMethodCall: Description: 'Do not use :: for method call.' StyleGuide: '#double-colons' Enabled: true +Style/ColonMethodDefinition: + Description: 'Do not use :: for defining class methods.' + StyleGuide: '#colon-method-definition' + Enabled: true + Style/CommandLiteral: Description: 'Use `` or %x around command literals.' StyleGuide: '#percent-x' Enabled: true @@ -450,27 +1426,37 @@ Checks formatting of special comments (TODO, FIXME, OPTIMIZE, HACK, REVIEW). StyleGuide: '#annotate-keywords' Enabled: true +Style/CommentedKeyword: + Description: 'Do not place comments on the same line as certain keywords.' + Enabled: true + 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 -Style/ConstantName: - Description: 'Constants should use SCREAMING_SNAKE_CASE.' - StyleGuide: '#screaming-snake-case' +Style/DateTime: + Description: 'Use Date or Time over DateTime.' + StyleGuide: '#date--time' Enabled: true Style/DefWithParentheses: Description: 'Use def with parentheses when there are arguments.' StyleGuide: '#method-parens' Enabled: true +Style/Dir: + Description: >- + Use the `__dir__` method to retrieve the canonicalized + absolute path to the current file. + Enabled: true + Style/Documentation: Description: 'Document classes and non-namespace modules.' Enabled: true Exclude: - 'spec/**/*' @@ -489,49 +1475,59 @@ Style/EachWithObject: Description: 'Prefer `each_with_object` over `inject` or `reduce`.' Enabled: true -Style/EmptyElse: - Description: 'Avoid empty else-clauses.' +Style/EmptyBlockParameter: + Description: 'Omit pipes for empty block parameters.' Enabled: true Style/EmptyCaseCondition: Description: 'Avoid empty condition in case statements.' Enabled: true +Style/EmptyElse: + Description: 'Avoid empty else-clauses.' + Enabled: true + +Style/EmptyLambdaParameter: + Description: 'Omit parens for empty lambda parameters.' + Enabled: true + Style/EmptyLiteral: Description: 'Prefer literals to Array.new/Hash.new/String.new.' StyleGuide: '#literal-array-hash' Enabled: true Style/EmptyMethod: Description: 'Checks the formatting of empty method definitions.' StyleGuide: '#no-single-line-methods' Enabled: true +Style/Encoding: + Description: 'Use UTF-8 as the source file encoding.' + StyleGuide: '#utf-8' + Enabled: true + Style/EndBlock: Description: 'Avoid the use of END blocks.' StyleGuide: '#no-END-blocks' Enabled: true +Style/EvalWithLocation: + Description: 'Pass `__FILE__` and `__LINE__` to `eval` method, as they are used by backtraces.' + Enabled: true + Style/EvenOdd: Description: 'Favor the use of Integer#even? && Integer#odd?' StyleGuide: '#predicate-methods' Enabled: true -Style/FileName: - Description: 'Use snake_case for source file names.' - StyleGuide: '#snake-case-files' +Style/ExpandPathArguments: + Description: "Use `expand_path(__dir__)` instead of `expand_path('..', __FILE__)`." Enabled: true -Style/FrozenStringLiteralComment: - Description: >- - Add the frozen_string_literal comment to the top of files - to help transition from Ruby 2.3.0 to Ruby 3.0. - Enabled: true - Style/FlipFlop: Description: 'Checks for flip flops' StyleGuide: '#no-flip-flops' Enabled: true @@ -547,10 +1543,16 @@ Style/FormatStringToken: Description: 'Use a consistent style for format string tokens.' Enabled: true +Style/FrozenStringLiteralComment: + Description: >- + Add the frozen_string_literal comment to the top of files + to help transition from Ruby 2.3.0 to Ruby 3.0. + Enabled: true + Style/GlobalVars: Description: 'Do not introduce global variables.' StyleGuide: '#instance-vars' Reference: 'http://www.zenspider.com/Languages/Ruby/QuickRef.html' Enabled: true @@ -565,10 +1567,17 @@ Prefer Ruby 1.9 hash syntax { a: 1, b: 2 } over 1.8 syntax { :a => 1, :b => 2 }. StyleGuide: '#hash-literals' Enabled: true +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 + Style/IfInsideElse: Description: 'Finds if nodes inside else, which can be converted to elsif.' Enabled: true Style/IfUnlessModifier: @@ -586,17 +1595,10 @@ Style/IfWithSemicolon: Description: 'Do not use if x; .... Use the ternary operator instead.' StyleGuide: '#no-semicolon-ifs' Enabled: true -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 - Style/InfiniteLoop: Description: 'Use Kernel#loop for infinite loops.' StyleGuide: '#infinite-loop' Enabled: true @@ -632,45 +1634,50 @@ Checks if the method definitions have or don't have parentheses. StyleGuide: '#method-parens' Enabled: true -Style/MethodName: - Description: 'Use the configured style when naming methods.' - StyleGuide: '#snake-case-symbols-methods-vars' - Enabled: true - Style/MethodMissing: Description: 'Avoid using `method_missing`.' StyleGuide: '#no-method-missing' Enabled: true +Style/MinMax: + Description: >- + Use `Enumerable#minmax` instead of `Enumerable#min` + and `Enumerable#max` in conjunction.' + Enabled: true + Style/MixinGrouping: Description: 'Checks for grouping of mixins in `class` and `module` bodies.' StyleGuide: '#mixin-grouping' Enabled: true +Style/MixinUsage: + Description: 'Checks that `include`, `extend` and `prepend` exists at the top level.' + Enabled: true + Style/ModuleFunction: Description: 'Checks for usage of `extend self` in modules.' StyleGuide: '#module-function' Enabled: true Style/MultilineBlockChain: Description: 'Avoid multi-line chains of blocks.' StyleGuide: '#single-line-blocks' Enabled: true -Style/MultilineIfThen: - Description: 'Do not use then for multi-line if/unless.' - StyleGuide: '#no-then' - Enabled: true - Style/MultilineIfModifier: Description: 'Only use if/unless modifiers on single line statements.' StyleGuide: '#no-multiline-if-modifiers' Enabled: true +Style/MultilineIfThen: + Description: 'Do not use then for multi-line if/unless.' + StyleGuide: '#no-then' + Enabled: true + Style/MultilineMemoization: Description: 'Wrap multiline memoizations in a `begin` and `end` block.' Enabled: true Style/MultilineTernaryOperator: @@ -736,22 +1743,22 @@ Style/Not: Description: 'Use ! instead of not.' StyleGuide: '#bang-not-not' Enabled: true +Style/NumericLiteralPrefix: + Description: 'Use smallcase prefixes for numeric literals.' + StyleGuide: '#numeric-literal-prefixes' + Enabled: true + Style/NumericLiterals: Description: >- Add underscores to large numeric literals to improve their readability. StyleGuide: '#underscores-in-numerics' Enabled: true -Style/NumericLiteralPrefix: - Description: 'Use smallcase prefixes for numeric literals.' - StyleGuide: '#numeric-literal-prefixes' - Enabled: true - Style/NumericPredicate: Description: >- Checks for the use of predicate- or comparison methods for numeric comparisons. StyleGuide: '#predicate-methods' @@ -766,22 +1773,22 @@ Favor the ternary operator(?:) over if/then/else/end constructs. StyleGuide: '#ternary-operator' Enabled: true -Style/OpMethod: - Description: 'When defining binary operators, name the argument other.' - StyleGuide: '#other-arg' - Enabled: true - Style/OptionalArguments: Description: >- Checks for optional arguments that do not appear at the end of the argument list StyleGuide: '#optional-arguments' Enabled: true +Style/OrAssignment: + Description: 'Recommend usage of double pipe equals (||=) where applicable.' + StyleGuide: '#double-pipe-for-uninit' + Enabled: true + 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. @@ -807,15 +1814,10 @@ Style/PerlBackrefs: Description: 'Avoid Perl-style regex back references.' StyleGuide: '#no-perl-regexp-last-matchers' Enabled: true -Style/PredicateName: - Description: 'Check the names of predicate methods.' - StyleGuide: '#bool-methods-qmark' - Enabled: true - Style/PreferredHashMethods: Description: 'Checks use of `has_key?` and `has_value?` Hash methods.' StyleGuide: '#hash-key' Enabled: true @@ -827,15 +1829,26 @@ Style/RaiseArgs: Description: 'Checks the arguments passed to raise/fail.' StyleGuide: '#exception-class-messages' Enabled: true +Style/RandomWithOffset: + Description: >- + Prefer to use ranges when generating random numbers instead of + integers with offsets. + StyleGuide: '#random-numbers' + Enabled: true + Style/RedundantBegin: Description: "Don't use begin blocks when they are not needed." StyleGuide: '#begin-implicit' Enabled: true +Style/RedundantConditional: + Description: "Don't return true/false from a conditional." + Enabled: true + Style/RedundantException: Description: "Checks for an obsolete RuntimeException argument in raise/fail." StyleGuide: '#no-explicit-runtimeerror' Enabled: true @@ -865,14 +1878,18 @@ Style/RescueModifier: Description: 'Avoid using rescue in its modifier form.' StyleGuide: '#no-rescue-modifiers' Enabled: true +Style/RescueStandardError: + Description: 'Avoid rescuing without specifying an error class.' + Enabled: true + Style/SafeNavigation: Description: >- This cop transforms usages of a method call safeguarded by - a check for the existance of the object to + a check for the existence of the object to safe navigation (`&.`). Enabled: true Style/SelfAssignment: Description: >- @@ -904,10 +1921,15 @@ Style/StabbyLambdaParentheses: Description: 'Check for the usage of parentheses around stabby lambda arguments.' StyleGuide: '#stabby-lambda-with-args' Enabled: true +Style/StderrPuts: + Description: 'Use `warn` instead of `$stderr.puts`.' + StyleGuide: '#warn' + Enabled: true + Style/StringLiterals: Description: 'Checks if uses of quotes match the configured preference.' StyleGuide: '#consistent-string-literals' Enabled: true @@ -937,20 +1959,47 @@ Style/TernaryParentheses: Description: 'Checks for use of parentheses around ternary conditions.' Enabled: true +Style/TrailingBodyOnClass: + Description: 'Class body goes below class statement.' + Enabled: true + +Style/TrailingBodyOnMethodDefinition: + Description: 'Method body goes below definition.' + Enabled: true + +Style/TrailingBodyOnModule: + Description: 'Module body goes below module statement.' + Enabled: true + Style/TrailingCommaInArguments: Description: 'Checks for trailing comma in argument lists.' StyleGuide: '#no-trailing-params-comma' Enabled: true -Style/TrailingCommaInLiteral: - Description: 'Checks for trailing comma in array and hash literals.' +Style/TrailingCommaInArrayLiteral: + Description: 'Checks for trailing comma in array literals.' StyleGuide: '#no-trailing-array-commas' Enabled: true +Style/TrailingCommaInHashLiteral: + Description: 'Checks for trailing comma in hash literals.' + Enabled: true + +Style/TrailingMethodEndStatement: + Description: 'Checks for trailing end statement on line of method body.' + Enabled: true + +Style/TrailingUnderscoreVariable: + Description: >- + Checks for the usage of unneeded trailing underscores at the + end of parallel variable assignment. + AllowNamedUnderscoreVariables: true + Enabled: true + Style/TrivialAccessors: Description: 'Prefer attr_* methods to trivial readers/writers.' StyleGuide: '#attr_family' Enabled: true @@ -972,33 +2021,23 @@ Style/UnneededPercentQ: Description: 'Checks for %q/%Q when single quotes or double quotes would do.' StyleGuide: '#percent-q' Enabled: true -Style/TrailingUnderscoreVariable: +Style/UnpackFirst: Description: >- - Checks for the usage of unneeded trailing underscores at the - end of parallel variable assignment. - AllowNamedUnderscoreVariables: true + Checks for accessing the first element of `String#unpack` + instead of using `unpack1` Enabled: true Style/VariableInterpolation: Description: >- Don't interpolate global, instance and class variables directly in strings. StyleGuide: '#curlies-interpolate' Enabled: true -Style/VariableName: - Description: 'Use the configured style when naming variables.' - StyleGuide: '#snake-case-symbols-methods-vars' - Enabled: true - -Style/VariableNumber: - Description: 'Use the configured style when numbering variables.' - Enabled: true - Style/WhenThen: Description: 'Use when x then ... for one-line cases.' StyleGuide: '#one-line-cases' Enabled: true @@ -1025,729 +2064,5 @@ Enabled: true Style/ZeroLengthPredicate: Description: 'Use #empty? when testing for objects of length 0.' Enabled: true - -#################### Metrics ############################### - -Metrics/AbcSize: - Description: >- - A calculated magnitude based on number of assignments, - branches, and conditions. - Reference: 'http://c2.com/cgi/wiki?AbcMetric' - Enabled: true - -Metrics/BlockNesting: - Description: 'Avoid excessive block nesting' - StyleGuide: '#three-is-the-number-thou-shalt-count' - Enabled: true - -Metrics/ClassLength: - Description: 'Avoid classes longer than 100 lines of code.' - Enabled: true - -Metrics/ModuleLength: - Description: 'Avoid modules longer than 100 lines of code.' - Enabled: true - -Metrics/CyclomaticComplexity: - Description: >- - A complexity metric that is strongly correlated to the number - of test cases needed to validate a method. - Enabled: true - -Metrics/LineLength: - Description: 'Limit lines to 80 characters.' - StyleGuide: '#80-character-limits' - Enabled: true - -Metrics/MethodLength: - Description: 'Avoid methods longer than 10 lines of code.' - StyleGuide: '#short-methods' - Enabled: true - -Metrics/BlockLength: - Description: 'Avoid long blocks with many lines.' - Enabled: true - -Metrics/ParameterLists: - Description: 'Avoid parameter lists longer than three or four parameters.' - StyleGuide: '#too-many-params' - Enabled: true - -Metrics/PerceivedComplexity: - Description: >- - A complexity metric geared towards measuring complexity for a - human reader. - Enabled: true - -#################### Lint ################################## -### Warnings - -Lint/AmbiguousBlockAssociation: - Description: >- - Checks for ambiguous block association with method when param passed without - parentheses. - StyleGuide: '#syntax' - Enabled: true - -Lint/AmbiguousOperator: - Description: >- - Checks for ambiguous operators in the first argument of a - method invocation without parentheses. - StyleGuide: '#method-invocation-parens' - Enabled: true - -Lint/AmbiguousRegexpLiteral: - Description: >- - Checks for ambiguous regexp literals in the first argument of - a method invocation without parentheses. - Enabled: true - -Lint/AssignmentInCondition: - Description: "Don't use assignment in conditions." - StyleGuide: '#safe-assignment-in-condition' - Enabled: true - -Lint/BlockAlignment: - Description: 'Align block ends correctly.' - Enabled: true - -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 - -Lint/ConditionPosition: - Description: >- - Checks for condition placed in a confusing position relative to - the keyword. - StyleGuide: '#same-line-condition' - Enabled: true - -Lint/Debugger: - Description: 'Check for debugger calls.' - Enabled: true - -Lint/DefEndAlignment: - Description: 'Align ends corresponding to defs correctly.' - Enabled: true - -Lint/DeprecatedClassMethods: - Description: 'Check for deprecated class method calls.' - Enabled: true - -Lint/DuplicateCaseCondition: - Description: 'Do not repeat values in case conditionals.' - Enabled: true - -Lint/DuplicateMethods: - Description: 'Check for duplicate method definitions.' - Enabled: true - -Lint/DuplicatedKey: - Description: 'Check for duplicate keys in hash literals.' - Enabled: true - -Lint/EachWithObjectArgument: - Description: 'Check for immutable argument given to each_with_object.' - Enabled: true - -Lint/ElseLayout: - Description: 'Check for odd code arrangement in an else block.' - Enabled: true - -Lint/EmptyEnsure: - Description: 'Checks for empty ensure block.' - Enabled: true - AutoCorrect: false - -Lint/EmptyExpression: - Description: 'Checks for empty expressions.' - Enabled: true - -Lint/EmptyInterpolation: - Description: 'Checks for empty string interpolation.' - Enabled: true - -Lint/EmptyWhen: - Description: 'Checks for `when` branches with empty bodies.' - Enabled: true - -Lint/EndAlignment: - Description: 'Align ends correctly.' - Enabled: true - -Lint/EndInMethod: - Description: 'END blocks should not be placed inside method definitions.' - Enabled: true - -Lint/EnsureReturn: - Description: 'Do not use return in an ensure block.' - StyleGuide: '#no-return-ensure' - Enabled: true - -Lint/FloatOutOfRange: - Description: >- - Catches floating-point literals too large or small for Ruby to - represent. - Enabled: true - -Lint/FormatParameterMismatch: - Description: 'The number of parameters to format/sprint must match the fields.' - Enabled: true - -Lint/HandleExceptions: - Description: "Don't suppress exception." - StyleGuide: '#dont-hide-exceptions' - Enabled: true - -Lint/ImplicitStringConcatenation: - Description: >- - Checks for adjacent string literals on the same line, which - could better be represented as a single string literal. - Enabled: true - -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 - -Lint/InheritException: - Description: 'Avoid inheriting from the `Exception` class.' - Enabled: true - -Lint/InvalidCharacterLiteral: - Description: >- - Checks for invalid character literals with a non-escaped - whitespace character. - Enabled: true - -Lint/LiteralInCondition: - Description: 'Checks of literals used in conditions.' - Enabled: true - -Lint/LiteralInInterpolation: - Description: 'Checks for literals used in interpolation.' - Enabled: true - -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 - -Lint/MultipleCompare: - Description: "Use `&&` operator to compare multiple value." - Enabled: true - -Lint/NestedMethodDefinition: - Description: 'Do not use nested method definitions.' - StyleGuide: '#no-nested-methods' - Enabled: true - -Lint/NextWithoutAccumulator: - Description: >- - Do not omit the accumulator when calling `next` - in a `reduce`/`inject` block. - Enabled: true - -Lint/NonLocalExitFromIterator: - Description: 'Do not use return in iterator to cause non-local exit.' - Enabled: true - -Lint/ParenthesesAsGroupedExpression: - Description: >- - Checks for method calls with a space before the opening - parenthesis. - StyleGuide: '#parens-no-spaces' - Enabled: true - -Lint/PercentStringArray: - Description: >- - Checks for unwanted commas and quotes in %w/%W literals. - Enabled: true - -Lint/PercentSymbolArray: - Description: >- - Checks for unwanted commas and colons in %i/%I literals. - Enabled: true - -Lint/RandOne: - Description: >- - Checks for `rand(1)` calls. Such calls always return `0` - and most likely a mistake. - Enabled: true - -Lint/RequireParentheses: - Description: >- - Use parentheses in the method call to avoid confusion - about precedence. - Enabled: true - -Lint/RescueException: - Description: 'Avoid rescuing the Exception class.' - StyleGuide: '#no-blind-rescues' - Enabled: true - -Lint/RescueType: - Description: 'Avoid rescuing from non constants that could result in a `TypeError`.' - Enabled: true - -Lint/SafeNavigationChain: - Description: 'Do not chain ordinary method call after safe navigation operator.' - Enabled: true - -Lint/ScriptPermission: - Description: 'Grant script file execute permission.' - Enabled: true - -Lint/ShadowedException: - Description: >- - Avoid rescuing a higher level exception - before a lower level exception. - Enabled: true - -Lint/ShadowingOuterLocalVariable: - Description: >- - Do not use the same name as outer local variable - for block arguments or block local variables. - Enabled: true - -Lint/StringConversionInInterpolation: - Description: 'Checks for Object#to_s usage in string interpolation.' - StyleGuide: '#no-to-s' - Enabled: true - -Lint/UnderscorePrefixedVariableName: - Description: 'Do not use prefix `_` for a variable that is used.' - Enabled: true - -Lint/UnifiedInteger: - Description: 'Use Integer instead of Fixnum or Bignum' - Enabled: true - -Lint/UnneededDisable: - 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 - -Lint/UnneededSplatExpansion: - Description: 'Checks for splat unnecessarily being called on literals' - Enabled: true - -Lint/UnusedBlockArgument: - Description: 'Checks for unused block arguments.' - StyleGuide: '#underscore-unused-vars' - Enabled: true - -Lint/UnusedMethodArgument: - Description: 'Checks for unused method arguments.' - StyleGuide: '#underscore-unused-vars' - Enabled: true - -Lint/UnreachableCode: - Description: 'Unreachable code.' - Enabled: true - -Lint/UselessAccessModifier: - Description: 'Checks for useless access modifiers.' - Enabled: true - ContextCreatingMethods: [] - MethodCreatingMethods: [] - -Lint/UselessAssignment: - Description: 'Checks for useless assignment to a local variable.' - StyleGuide: '#underscore-unused-vars' - Enabled: true - -Lint/UselessComparison: - Description: 'Checks for comparison of something with itself.' - Enabled: true - -Lint/UselessElseWithoutRescue: - Description: 'Checks for useless `else` in `begin..end` without `rescue`.' - Enabled: true - -Lint/UselessSetterCall: - Description: 'Checks for useless setter call to a local variable.' - Enabled: true - -Lint/Void: - Description: 'Possible use of operator/literal/variable in void context.' - Enabled: true - -#################### Performance ########################### - -Performance/Caller: - Description: >- - Use `caller(n..n)` instead of `caller`. - Enabled: true - -Performance/Casecmp: - Description: >- - Use `casecmp` rather than `downcase ==`, `upcase ==`, `== downcase`, or `== upcase`.. - Reference: 'https://github.com/JuanitoFatas/fast-ruby#stringcasecmp-vs-stringdowncase---code' - Enabled: true - -Performance/CaseWhenSplat: - Description: >- - Place `when` conditions that use splat at the end - of the list of `when` branches. - Enabled: true - -Performance/Count: - Description: >- - Use `count` instead of `select...size`, `reject...size`, - `select...count`, `reject...count`, `select...length`, - and `reject...length`. - # This cop has known compatibility issues with `ActiveRecord` and other - # frameworks. ActiveRecord's `count` ignores the block that is passed to it. - # For more information, see the documentation in the cop itself. - # If you understand the known risk, you can disable `SafeMode`. - SafeMode: true - Enabled: true - -Performance/Detect: - Description: >- - Use `detect` instead of `select.first`, `find_all.first`, - `select.last`, and `find_all.last`. - Reference: 'https://github.com/JuanitoFatas/fast-ruby#enumerabledetect-vs-enumerableselectfirst-code' - # This cop has known compatibility issues with `ActiveRecord` and other - # frameworks. `ActiveRecord` does not implement a `detect` method and `find` - # has its own meaning. Correcting `ActiveRecord` methods with this cop - # should be considered unsafe. - SafeMode: true - Enabled: true - -Performance/DoubleStartEndWith: - Description: >- - Use `str.{start,end}_with?(x, ..., y, ...)` - instead of `str.{start,end}_with?(x, ...) || str.{start,end}_with?(y, ...)`. - Enabled: true - -Performance/EndWith: - Description: 'Use `end_with?` instead of a regex match anchored to the end of a string.' - Reference: 'https://github.com/JuanitoFatas/fast-ruby#stringmatch-vs-stringstart_withstringend_with-code-start-code-end' - # This will change to a new method call which isn't guaranteed to be on the - # object. Switching these methods has to be done with knowledge of the types - # of the variables which rubocop doesn't have. - AutoCorrect: false - Enabled: true - -Performance/FixedSize: - Description: 'Do not compute the size of statically sized objects except in constants' - Enabled: true - -Performance/FlatMap: - Description: >- - Use `Enumerable#flat_map` - instead of `Enumerable#map...Array#flatten(1)` - or `Enumberable#collect..Array#flatten(1)` - Reference: 'https://github.com/JuanitoFatas/fast-ruby#enumerablemaparrayflatten-vs-enumerableflat_map-code' - Enabled: true - EnabledForFlattenWithoutParams: false - # If enabled, this cop will warn about usages of - # `flatten` being called without any parameters. - # This can be dangerous since `flat_map` will only flatten 1 level, and - # `flatten` without any parameters can flatten multiple levels. - -Performance/HashEachMethods: - Description: >- - Use `Hash#each_key` and `Hash#each_value` instead of - `Hash#keys.each` and `Hash#values.each`. - StyleGuide: '#hash-each' - Enabled: true - AutoCorrect: false - -Performance/LstripRstrip: - Description: 'Use `strip` instead of `lstrip.rstrip`.' - Enabled: true - -Performance/RangeInclude: - Description: 'Use `Range#cover?` instead of `Range#include?`.' - Reference: 'https://github.com/JuanitoFatas/fast-ruby#cover-vs-include-code' - Enabled: true - -Performance/RedundantBlockCall: - Description: 'Use `yield` instead of `block.call`.' - Reference: 'https://github.com/JuanitoFatas/fast-ruby#proccall-vs-yield-code' - Enabled: true - -Performance/RedundantMatch: - Description: >- - Use `=~` instead of `String#match` or `Regexp#match` in a context where the - returned `MatchData` is not needed. - Enabled: true - -Performance/RedundantMerge: - Description: 'Use Hash#[]=, rather than Hash#merge! with a single key-value pair.' - Reference: 'https://github.com/JuanitoFatas/fast-ruby#hashmerge-vs-hash-code' - Enabled: true - -Performance/RedundantSortBy: - Description: 'Use `sort` instead of `sort_by { |x| x }`.' - Enabled: true - -Performance/RegexpMatch: - Description: >- - Use `match?` instead of `Regexp#match`, `String#match`, `Symbol#match`, - `Regexp#===`, or `=~` when `MatchData` is not used. - Enabled: true - -Performance/ReverseEach: - Description: 'Use `reverse_each` instead of `reverse.each`.' - Reference: 'https://github.com/JuanitoFatas/fast-ruby#enumerablereverseeach-vs-enumerablereverse_each-code' - Enabled: true - -Performance/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 - -Performance/Size: - Description: >- - Use `size` instead of `count` for counting - the number of elements in `Array` and `Hash`. - Reference: 'https://github.com/JuanitoFatas/fast-ruby#arraycount-vs-arraysize-code' - Enabled: true - -Performance/CompareWithBlock: - Description: 'Use `sort_by(&:foo)` instead of `sort_by { |a, b| a.foo <=> b.foo }`.' - Enabled: true - -Performance/StartWith: - Description: 'Use `start_with?` instead of a regex match anchored to the beginning of a string.' - Reference: 'https://github.com/JuanitoFatas/fast-ruby#stringmatch-vs-stringstart_withstringend_with-code-start-code-end' - # This will change to a new method call which isn't guaranteed to be on the - # object. Switching these methods has to be done with knowledge of the types - # of the variables which rubocop doesn't have. - AutoCorrect: false - Enabled: true - -Performance/StringReplacement: - Description: >- - Use `tr` instead of `gsub` when you are replacing the same - number of characters. Use `delete` instead of `gsub` when - you are deleting characters. - Reference: 'https://github.com/JuanitoFatas/fast-ruby#stringgsub-vs-stringtr-code' - Enabled: true - -Performance/TimesMap: - Description: 'Checks for .times.map calls.' - Enabled: true - -#################### Rails ################################# - -Rails/ActionFilter: - Description: 'Enforces consistent use of action filter methods.' - Enabled: true - -Rails/ApplicationJob: - Description: 'Check that jobs subclass ApplicationJob.' - Enabled: true - -Rails/ApplicationRecord: - Description: 'Check that models subclass ApplicationRecord.' - Enabled: true - -Rails/ActiveSupportAliases: - Description: >- - Avoid ActiveSupport aliases of standard ruby methods: - `String#starts_with?`, `String#ends_with?`, - `Array#append`, `Array#prepend`. - Enabled: true - -Rails/Blank: - Description: 'Enforce using `blank?` and `present?`.' - Enabled: true - # Convert checks for `nil` or `empty?` to `blank?` - NilOrEmpty: true - # Convert usages of not `present?` to `blank?` - NotPresent: true - # Convert usages of `unless` `present?` to `if` `blank?` - UnlessPresent: true - -Rails/Date: - Description: >- - Checks the correct usage of date aware methods, - such as Date.today, Date.current etc. - Enabled: true - -Rails/Delegate: - Description: 'Prefer delegate method for delegations.' - Enabled: true - -Rails/DelegateAllowBlank: - Description: 'Do not use allow_blank as an option to delegate.' - Enabled: true - -Rails/DynamicFindBy: - Description: 'Use `find_by` instead of dynamic `find_by_*`.' - StyleGuide: 'https://github.com/bbatsov/rails-style-guide#find_by' - Enabled: true - -Rails/EnumUniqueness: - Description: 'Avoid duplicate integers in hash-syntax `enum` declaration.' - Enabled: true - -Rails/Exit: - Description: >- - Favor `fail`, `break`, `return`, etc. over `exit` in - application or library code outside of Rake files to avoid - exits during unit testing or running in production. - Enabled: true - -Rails/FilePath: - Description: 'Use `Rails.root.join` for file path joining.' - Enabled: true - -Rails/FindBy: - Description: 'Prefer find_by over where.first.' - StyleGuide: 'https://github.com/bbatsov/rails-style-guide#find_by' - Enabled: true - -Rails/FindEach: - Description: 'Prefer all.find_each over all.find.' - StyleGuide: 'https://github.com/bbatsov/rails-style-guide#find-each' - Enabled: true - -Rails/HasAndBelongsToMany: - Description: 'Prefer has_many :through to has_and_belongs_to_many.' - StyleGuide: 'https://github.com/bbatsov/rails-style-guide#has-many-through' - Enabled: true - -Rails/HttpPositionalArguments: - Description: 'Use keyword arguments instead of positional arguments in http method calls.' - Enabled: true - Include: - - 'spec/**/*' - - 'test/**/*' - -Rails/NotNullColumn: - Description: 'Do not add a NOT NULL column without a default value' - Enabled: true - -Rails/Output: - Description: 'Checks for calls to puts, print, etc.' - Enabled: true - -Rails/OutputSafety: - Description: 'The use of `html_safe` or `raw` may be a security risk.' - Enabled: true - -Rails/PluralizationGrammar: - Description: 'Checks for incorrect grammar when using methods like `3.day.ago`.' - Enabled: true - -Rails/Present: - Description: 'Enforce using `blank?` and `present?`.' - Enabled: true - NotNilAndNotEmpty: true - # Convert checks for not `nil` and not `empty?` to `present?` - NotBlank: true - # Convert usages of not `blank?` to `present?` - UnlessBlank: true - # Convert usages of `unless` `blank?` to `if` `present?` - -Rails/ReadWriteAttribute: - Description: >- - Checks for read_attribute(:attr) and - write_attribute(:attr, val). - StyleGuide: 'https://github.com/bbatsov/rails-style-guide#read-attribute' - Enabled: true - -Rails/RelativeDateConstant: - Description: 'Do not assign relative date to constants.' - Enabled: true - -Rails/RequestReferer: - Description: 'Use consistent syntax for request.referer.' - Enabled: true - -Rails/ReversibleMigration: - Description: 'Checks whether the change method of the migration file is reversible.' - StyleGuide: 'https://github.com/bbatsov/rails-style-guide#reversible-migration' - Reference: 'http://api.rubyonrails.org/classes/ActiveRecord/Migration/CommandRecorder.html' - Enabled: true - -Rails/SafeNavigation: - Description: "Use Ruby's safe navigation operator (`&.`) instead of `try!`" - Enabled: true - -Rails/ScopeArgs: - Description: 'Checks the arguments of ActiveRecord scopes.' - Enabled: true - -Rails/TimeZone: - Description: 'Checks the correct usage of time zone aware methods.' - StyleGuide: 'https://github.com/bbatsov/rails-style-guide#time' - Reference: 'http://danilenko.org/2012/7/6/rails_timezones' - Enabled: true - -Rails/UniqBeforePluck: - Description: 'Prefer the use of uniq or distinct before pluck.' - Enabled: true - -Rails/SkipsModelValidations: - Description: >- - Use methods that skips model validations with caution. - See reference for more information. - Reference: 'http://guides.rubyonrails.org/active_record_validations.html#skipping-validations' - Enabled: true - -Rails/Validation: - Description: 'Use validates :attribute, hash of validations.' - Enabled: true - -#################### Security ############################## - -Security/Eval: - Description: 'The use of eval represents a serious security risk.' - Enabled: true - -Security/JSONLoad: - Description: >- - Prefer usage of `JSON.parse` over `JSON.load` due to potential - security issues. See reference for more information. - Reference: 'http://ruby-doc.org/stdlib-2.3.0/libdoc/json/rdoc/JSON.html#method-i-load' - Enabled: true - # Autocorrect here will change to a method that may cause crashes depending - # on the value of the argument. - AutoCorrect: false - -Security/MarshalLoad: - Description: >- - Avoid using of `Marshal.load` or `Marshal.restore` due to potential - security issues. See reference for more information. - Reference: 'http://ruby-doc.org/core-2.3.3/Marshal.html#module-Marshal-label-Security+considerations' - Enabled: true - -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.3.3/libdoc/yaml/rdoc/YAML.html#module-YAML-label-Security' - Enabled: true - -#################### Bundler ############################### - -Bundler/DuplicatedGem: - Description: 'Checks for duplicate gem entries in Gemfile.' - Enabled: true - Include: - - '**/Gemfile' - - '**/gems.rb' - -Bundler/OrderedGems: - Description: >- - Gems within groups in the Gemfile should be alphabetically sorted. - Enabled: true - Include: - - '**/Gemfile' - - '**/gems.rb'