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'