Skip to content

Releases: rubocop/rubocop

RuboCop v1.84.1

03 Feb 01:55

Choose a tag to compare

Bug fixes

  • #14803: Fix an error for Layout/IndentationWidth cop. (@viralpraxis)
  • #14806: Fix an error in Style/NegativeArrayIndex when using self as array with implicit self receiver. (@koic)
  • #14813: Fix opt-in cop comments taking precedence over configuration file exclude patterns. (@afrase)
  • #14819: Fix incorrect autocorrect for Style/GuardClause when using heredoc as an argument of method call in raise in else branch. (@koic)
  • #14805: Bring back the original indentation from before version 1.84.0. (@Magikdidi24)
  • #12754: Fix an infinite loop for Style/IfUnlessModifier when multiple if/unless statements share the same line in arrays, method arguments, or hash values. (@ydakuka)
  • #14817: Fix an infinite loop between Layout/FirstArgumentIndentation and Layout/LineLength when correcting method chains. (@ydakuka)
  • #11513: Fix Layout/MultilineMethodCallIndentation to properly handle method chains inside hash pair values. (@ydakuka)
  • #14814: Fix push/pop directives to properly handle nested scopes and state restoration. (@Magikdidi24)

Changes

  • #14823: Add the built-in infinite? method to the allowlists for Naming/PredicateMethod, Style/IfWithBooleanLiteralBranches, and Style/RedundantCondition, in addition to the existing nonzero?. (@koic)
  • #14735: Remove deprecated InjectDefaults handling. (@afurm)

RuboCop v1.84.0

27 Jan 09:57

Choose a tag to compare

New features

  • #14516: Add AllowImplicitArrayLiterals to Layout/FirstArrayElementLineBreak. (@koic)
  • #14750: Add new Style/ReverseFind cop. (@koic)
  • #12343: Add new Style/EmptyClassDefinition cop to enforce consistent style for empty class definitions. The cop can enforce either a two-line class definition or Class.new for classes with no body. (@ydakuka)
  • #14769: Add new Style/HashLookupMethod cop to enforce Hash#[] vs Hash#fetch preference. (@sferik)
  • #12051: Add new Style/NegativeArrayIndex cop to enforce using negative array indices instead of calculating array length minus a value. The cop handles both simple index patterns and range patterns, and recognizes preserving methods and their combinations. (@ydakuka)
  • #14633: Make a new system to handle push and pop locally. (@Magikdidi24)
  • #14722: Support TargetRubyVersion 4.1 (experimental). (@koic)

Bug fixes

  • #14697: Allow non-method calls in Categories for Layout/ClassStructure. (@fatkodima)
  • #14784: Fix an error for Style/GuardClause when using heredoc as an argument of raise in else branch and if branch is empty. (@koic)
  • #14790: Fix an error for Style/HashLookupMethod cop when there's no receiver. (@viralpraxis)
  • #14779: Fix autocorrect crash with ruby_extractor when using offset: 0 and different source buffers. (@ydakuka)
  • #14762: Fix false negatives for Style/RedundantCondition when the branches contains constant assignment. (@koic)
  • #14751: Fix --force-default-config not preventing project config loading when used with options that access configuration. (@sakuro)
  • #14783: Fix incorrect autocorrect for Style/HashSyntax when shorthand syntax is used in condition of if/unless/while/until. (@ydakuka)
  • #14747: Fix a regression inLayout/IndentationWidth by adding a new EnforcedStyleAlignWith style parameter. (@MikeMcQuaid)
  • #14716: Fix an infinite loop error for Layout/LineLength when SplitStrings option is enabled and strings span multiple lines. (@HariprasanthMSH)
  • #14763: Fix an infinite loop error for Layout/IndentationWidth and Layout/IndentationConsistency when using EnforcedStyle: indented_internal_methods with method chain blocks. (@ydakuka)
  • #9373: Fix an infinite loop error for Layout/IndentationWidth when autocorrecting mixed tabs and spaces in blocks. Fix an infinite loop error for Layout/DefEndAlignment and Layout/IndentationStyle when autocorrecting mixed tabs and spaces. Autocorrection for tabs is disabled in AlignmentCorrector for indentation offenses, but enabled for align_end. (@ydakuka)
  • #12295: Fix Layout/FirstArgumentIndentation to correct entire method calls and chains for nested calls. (@ydakuka)
  • #12527: Fix Offense#highlighted_area to return a valid Parser::Source::Range. (@ydakuka)
  • #14801: Preserve source tabs in Clang and Tap formatters when displaying offense highlight. (@lovro-bikic)
  • #14761: Improved the remote configuration file name on the cache location. (@Jack12816)
  • #14778: Fix a false positive for Security/JSONLoad when create_additions option is passed with other options in a hash. (@wktk)
  • #14796: Handle logical and operator assignment nodes in variable branch handling. (@lovro-bikic)

Changes

  • #14753: Add support for squish and squish! applied to heredoc to Layout/HeredocIndentation. (@lovro-bikic)
  • #14798: Recognize Forwardable methods in Lint/DuplicateMethods. (@lovro-bikic)
  • #14793: Make Lint/RedundantSplatExpansion aware of constant assignment. (@koic)
  • #14770: Make Style/AccessModifierDeclarations aware of self class. (@koic)
  • #14748: Add support for other Module member existence methods to Style/ModuleMemberExistenceCheck. (@lovro-bikic)
  • #14795: Add AllowedMethods configuration to Style/ModuleMemberExistenceCheck. (@lovro-bikic)

RuboCop v1.82.1

24 Dec 08:47

Choose a tag to compare

Bug fixes

  • #14736: Fix an error for Style/TrailingCommaInArguments when EnforcedStyleForMultiline is consistent_comma and keyword arguments use a trailing comma. (@koic)
  • #14737: Fix crash in Layout/RedundantLineBreak when Layout/LineLength is disabled. (@ydakuka)
  • #14719: Fix crash on long lines when Layout/LineLength is disabled. (@floriandejonckheere)
  • #14743: Fix false positives for Layout/MultilineMethodCallIndentation when multiline method chain with block has expected indent width and the method is preceded by splat or double splat. (@koic)
  • #12297: Fix false negative in Layout/IndentationWidth for multiline method chain blocks. (@rscq)
  • #14730: Fix the cache implementation to use consistent cache keys across workers. (@byroot)
  • #14559: Fix false positives for Lint/UselessAssignment when a variable is assigned in loop body and used in loop condition. (@ydakuka)

RuboCop v1.82.0

17 Dec 10:25

Choose a tag to compare

New features

  • #14655: Add AllowRBSInlineAnnotation option to Layout/LineLength. (@koic)
  • #14569: Add IncludedMacroPatterns configuration option to Style/MethodCallWithArgsParentheses for pattern-based macro method enforcement. (@mmenanno)
  • #14670: Add new cop Style/ModuleMemberExistenceCheck. (@lovro-bikic)
  • #14644: Support TargetRubyVersion 4.0 (experimental). (@koic)

Bug fixes

  • #14649: Fix an error for Lint/LiteralAsCondition when there are literals in multiple branches. (@viralpraxis)
  • #14678: Fix an error when running deprecated rake rubocop:auto_correct task. (@koic)
  • #14650: Fix wrong autocorrect for Lint/RedundantSplatExpansion when splatting a single literal. (@earlopain)
  • #14703: Fix false negatives for Layout/RescueEnsureAlignment when using self class definition. (@koic)
  • #14706: Fix false negatives for Lint/NoReturnInBeginEndBlocks when assigning instance variable, class variable, global variable, or constant. (@koic)
  • #14715: Fix false positives for Layout/EmptyLineAfterGuardClause when a guard clause follows a multiline heredoc in a parenthesized method call. (@koic)
  • #14667: Fix false positives for Layout/EndAlignment when a conditional assignment is used on the same line and the end with a safe navigation method call is aligned. (@koic)
  • #14688: Fix false positives for Layout/EndAlignment when a conditional assignment is used on the same line and the end with a numbered block or it block method call is aligned. (@koic)
  • #14699: Fix false positives for Lint/RedundantSafeNavigation when the receiver is used outside the singleton method definition scope. (@koic)
  • #14663: Fix false positives for Style/EndlessMethod when multiline or xstring heredoc is used in method body. (@koic)
  • #10173: Fix false positives for Style/TrailingCommaInArguments when EnforcedStyleForMultiline is set to consistent_comma and a multiline braced hash argument appears after another argument. (@koic)
  • #14680: Handle all OptionParser errors when running rubocop with input that causes an error. (@dvandersluis)
  • #14658: Fix incorrect behavior when Layout/LineLength is disabled. (@koic)
  • #14704: Fix incorrect Position character value in LSP. (@tmtm)
  • #14619: Store remote configuration caches in cache root. (@Jack12816)
  • #14476: Fix Style/ClassAndModuleChildren to skip compact style definitions inside another class or module when EnforcedStyle: nested. (@rscq)
  • #14281: Update Layout/EndAlignment with EnforcedStyleAlignWith: variable to handle conditionals inside begin nodes properly. (@dvandersluis)

Changes

  • #14662: Add autocorrection for Lint/UselessOr. (@r7kamura)
  • #14668: Exclude Severity from configuration parameters. (@r7kamura)
  • #14684: Make Style/CaseEquality allow regexp case equality where the receiver is a regexp literal. (@koic)
  • #14645: Change Lint/CircularArgumentReference to detect offenses within long assignment chains. (@viralpraxis)
  • #14642: Make Gemspec/RubyVersionGlobalsUsage aware of Ruby::VERSION. (@koic)
  • #14695: Make Layout/EmptyLineAfterMagicComment aware of # rbs_inline magic comment. (@koic)
  • #10147: Make Lint/ElseLayout allow a single-line else body in then single-line conditional. (@koic)
  • #14661: Make Lint/RedundantRequireStatement aware of pathname when analyzing Ruby 4.0. (@koic)
  • #14698: Make Lint/UnreachableCode aware of singleton method redefinition. (@koic)
  • #14677: Make Style/RedundantArgument aware of to_i. (@koic)
  • #14660: Rename IgnoreCopDirectives to AllowCopDirectives in Layout/LineLength. (@koic)
  • #14492: Revert #14492, which added support for LSP positionEncoding 'utf-8' and 'utf-32' due to critical performance regression reports. (@koic)

RuboCop v1.81.7

31 Oct 09:01

Choose a tag to compare

Bug fixes

  • #14597: Fix an infinite loop error for Layout/HashAlignment when EnforcedStyle: with_fixed_indentation is specified for Layout/ArgumentAlignment. (@koic)
  • #14621: Fix an error for Naming/PredicateMethod when using an in pattern with empty parentheses body. (@koic)
  • #14631: Fix an error for Style/SoleNestedConditional when using nested single line if. (@koic)
  • #14626: Fix false positives in Style/ConstantVisibility when visibility is declared with multiple constants. (@koic)
  • #14628: Fix false positives for Style/FloatDivision when using Regexp.last_match or nth reference (e.g., $1). (@koic)
  • #14617: Handle non-specific issues with the Gemfile to allow fallback. (@Fryguy)
  • #14622: Fix an error for Naming/MethodName when the first argument to alias contains interpolation. (@earlopain)

RuboCop v1.81.6

21 Oct 07:34

Choose a tag to compare

Bug fixes

  • #14587: Fix an error for Lint/SelfAssignment when using []= assignment with no arguments. (@koic)
  • #14572: Fix an error for Style/ArrayIntersect when intersection(other).any? is called without a receiver. (@koic)
  • #14599: Fix a crash when Style/ConditionalAssignment is configured with assign_inside_conditional and the conditional contains a multi-line regex. (@martinemde)
  • #14574: Fix false positives for Style/RedundantInterpolation when using a one-line => pattern matching. (@koic)
  • #14602: Fix false positives for Style/EndlessMethod when heredoc is used in method body. (@koic)
  • #14594: Fix false positives for Style/EndlessMethod when the endless method would exceed the maximum line length. (@koic)
  • #14605: Fix false positive for Lint/EmptyInterpolation when interpolation is inside a %W literal. (@dvandersluis)
  • #14604: Fix Style/RedundantFormat false positive when a interpolated value is given to a specifier with a width or precision. (@dvandersluis)
  • #14607: Fix Style/RedundantFormat handling control characters like \n. (@dvandersluis)
  • #14577: Fix an incorrect autocorrect for Style/Semicolon when a method call using hash value omission without parentheses is terminated with a semicolon. (@koic)
  • #14552: Fix a false positive for Security/JSONLoad when create_additions is explicitly specified. (@earlopain)

Changes

  • #14566: Enhance Lint::ConstantOverwrittenInRescue cop to detect offenses within fully qualified constants. (@viralpraxis)
  • #14575: Enhance Lint/ConstantOverwrittenInRescue cop to detect offenses within nested constants. (@viralpraxis)
  • #14596: Change Lint/ConstantOverwrittenInRescue to detect any constant assignment. (@viralpraxis)
  • #14568: Make Style/LambdaCall autocorrection contextual. (@koic)

RuboCop v1.81.1

26 Sep 13:35

Choose a tag to compare

Bug fixes

  • #14563: Fix incorrect autocorrection for Lint/DeprecatedOpenSSLConstant when Cipher appears twice. (@koic)

Changes

  • #14565: Allow multiline method chain for Style/NumberedParameters and Style/ItBlockParameter with EnforcedStyle: allow_single_line when the block itself is on a single line. (@earlopain)

RuboCop v1.81.0

25 Sep 12:50

Choose a tag to compare

New features

  • #14512: Add Style/ArrayIntersectWithSingleElement cop. (@r7kamura)
  • #10971: Support EnforcedStyleForMultiline: diff_comma in Style/TrailingCommaInArguments. (@akouryy)

Bug fixes

  • #14560: Fix an error for Style/NilComparison cop when using the var.==(nil) and var.===(nil) syntax. (@viralpraxis)
  • #14535: Fix autocorrect for Style/ExplicitBlockArgument when there are two methods that share the same implementation. (@earlopain)
  • #14527: Fix false negatives for Style/NumberedParameters and Style/ItBlockParameter when using multiline method chain with EnforcedStyle: allow_single_line. (@koic)
  • #14522: Fix false negatives for Layout/MultilineOperationIndentation when using indented code on LHS of equality operator in modifier method definition. (@koic)
  • #14496: Fix false negatives for Layout/EmptyLineBetweenDefs for AllowAdjacentOneLineDefs: false and DefLikeMacros that take no block. (@earlopain)
  • #14553: Fix false positives when EnforcedStyle: allowed_in_returns and !! appears across multiple lines in return position. (@koic)
  • #14557: Fix false positives for Style/RedundantParentheses when parentheses are used around a one-line rescue expression as a condition. (@koic)
  • #14525: Fix false positives for Style/RedundantRegexpEscape when an escaped variable sigil follows # (e.g., /#\@foo/, /#\@@bar/, /#\$baz/). (@koic)
  • #14529: Fix false negative in Layout/RescueEnsureAlignment with a block whose send node is split over multiple lines. (@dvandersluis)
  • #14528: Fix Style/RedundantFormat when the format string has a variable width that isn't given as a literal value. (@dvandersluis)
  • #14541: Fix gemspec parsing error when ParserEngine: parser_prism is configured in a base config file. (@sudoremo)
  • #14544: Fix an incorrect autocorrect for Lint/Void when using a return value in assignment method definition. (@koic)
  • #14543: Fix an incorrect autocorrect for Style/RedundantRegexpArgument when using escaped single quote character. (@koic)
  • #14540: Fix an incorrect autocorrect for Style/UnlessElse when using unless with then. (@koic)
  • #14507: Fix the built-in Ruby LSP add-on not restarting when config files (.rubocop.yml, .rubocop_todo.yml) change. (@earlopain)
  • #14514: Fix the built-in Ruby LSP add-on not respecting .rubocop config file. (@earlopain)
  • #14508: Fix the built-in Ruby LSP add-on getting in an irrecoverable state when the config is invalid on startup. (@earlopain)
  • #14534: Prevent Layout/LineLength autocorrection from splitting a block if its receiver contains a heredoc. (@dvandersluis)
  • #14497: Fix a false positive for Lint/ShadowedArgument when assigning inside a rescue block. (@earlopain)

Changes

  • #14492: Add support for LSP positionEncoding utf-8 and utf-32. (@tmtm)

RuboCop v1.80.2

03 Sep 15:15

Choose a tag to compare

Bug fixes

  • #14477: Fix a false positive for Style/SafeNavigation when using ternary expression with index access call with method chain. (@koic)
  • #14486: Fix false positives for Style/RedundantParentheses with unary operators and yield, super, or defined?. (@earlopain)
  • #14489: Fix false negatives for Style/RedundantParentheses with method calls taking argument without parentheses like return (x y) if z. (@earlopain)
  • #14499: Fix wrong autocorrect for Style/StringConcatenation when a double-quoted string contains escaped quotes and interpolation. (@earlopain)
  • #14502: Fix wrong autocorrect for Style/StringConcatenation when a single-quoted string contains interpolation like '#{foo}'. (@earlopain)

Changes

  • #14493: Make Naming/PredicateMethod allow the initialize method. (@koic)

RuboCop v1.80.1

27 Aug 07:32

Choose a tag to compare

Bug fixes

  • #14479: Don't invalidate cache when --display-time option is used on the CLI. (@lovro-bikic)
  • #14473: Fix a false negative for Style/RedundantBegin using begin with multiple statements without rescue or ensure. (@koic)
  • #14475: Fix cop errors during autocorrect for the build in LSP when analyzing as Ruby 3.4. (@earlopain)

Changes

  • #14474: Fix false negative for Layout/EndAlignment when end is not on a separate line. (@lovro-bikic)