Skip to content

Releases: rubocop/rubocop

RuboCop 1.68

31 Oct 07:45
Compare
Choose a tag to compare

New features

Bug fixes

  • #13401: Fix a false negative for Style/RedundantLineContinuation when there is a line continuation at the EOF. (@koic)
  • #13368: Fix an incorrect autocorrect for Naming/BlockForwarding with Style/ExplicitBlockArgument. (@koic)
  • #13391: Fix deserialization of unknown encoding offenses. (@earlopain)
  • #13348: Ensure Style/BlockDelimiters autocorrection does not move other code between the block and comment. (@dvandersluis)
  • #13382: Fix an error during error handling for custom ruby extractors when the extractor is a class. (@earlopain)
  • #13309: Fix a false negative for Lint/UselessAssignment cop when there is a useless assignment followed by a block. (@pCosta99)
  • #13255: Fix false negatives for Style/MapIntoArray when using non-splatted arguments. (@vlad-pisanov)
  • #13356: Fix a false positive for Layout/SpaceBeforeBrackets when there is a dot before []=. (@earlopain)
  • #13365: Fix false positives for Lint/SafeNavigationConsistency when using safe navigation on the LHS with operator method on the RHS of &&. (@koic)
  • #13390: Fix false positives for Style/GuardClause when using a local variable assigned in a conditional expression in a branch. (@koic)
  • #13337: Fix false positives for Style/RedundantLineContinuation when required line continuations for && is used with an assignment after a line break. (@koic)
  • #13387: Fix false positives in Style/RedundantParentheses when parentheses are used around method chain with do...end block in keyword argument. (@koic)
  • #13341: Fix false positives for Lint/SafeNavigationChain when a safe navigation operator is used with a method call as the RHS operand of && for the same receiver. (@koic)
  • #13324: Fix --disable-uncorrectable to not insert a comment inside a string continuation. (@dvandersluis)
  • #13364: Fix incorrect autocorrect with Lint/UselessAssignment a multiple assignment or for contains an inner assignment. (@dvandersluis)
  • #13353: Fix an incorrect autocorrect for Style/BlockDelimiters when EnforcedStyle: semantic is set and used with Layout/SpaceInsideBlockBraces. (@koic)
  • #13361: Fix false positives for Style/RedundantInterpolationUnfreeze and Style/RedundantFreeze when strings contain interpolated global, instance, and class variables. (@vlad-pisanov)
  • #13343: Prevent Layout/LineLength from breaking up a method with arguments chained onto a heredoc delimiter. (@dvandersluis)
  • #13374: Return exit code 0 with --display-only-correctable and --display-only-safe-correctable when no offenses are displayed. (@dvandersluis)
  • #13193: Fix false positive in Style/MultipleComparison when ComparisonsThreshold exceeds 2. (@fatkodima, @vlad-pisanov)
  • #13325: Fix an incorrect autocorrect for Lint/NonAtomicFileOperation when using a postfix unless for file existence checks before creating a file, in cases with Dir.mkdir. (@kotaro0522)
  • #13397: Update PercentLiteralCorrector to be able to write pairs of delimiters without excessive escaping. (@dvandersluis)
  • #13336: Update Style/SafeNavigation to not autocorrect if the RHS of an and node is an or node. (@dvandersluis)
  • #13378: When removing parens in Style/TernaryParentheses with a send node condition, ensure its arguments are parenthesized. (@dvandersluis)

Changes

  • #13347: When running rubocop -V, show the analysis Ruby version of the current directory. (@earlopain)

RuboCop 1.67

15 Oct 10:16
Compare
Choose a tag to compare

New features

  • #13259: Add new Lint/DuplicateSetElement cop. (@koic)
  • #13223: Add AllowRBSInlineAnnotation config option to Layout/LeadingCommentSpace to support RBS::Inline style annotation comments. (@tk0miya)
  • #13310: Display analysis Ruby version in rubocop -V. (@koic)

Bug fixes

  • #13314: Fix a false negative for Style/Semicolon when using a semicolon between a closing parenthesis after a line break and a consequent expression. (@koic)
  • #13217: Fix a false positive in Lint/ParenthesesAsGroupedExpression with compound ranges. (@gsamokovarov)
  • #13268: Fix a false positive for Style/BlockDelimiters when a single line do-end block with an inline rescue with a semicolon before rescue. (@koic)
  • #13298: Fix an error for Layout/AccessModifierIndentation when the access modifier is on the same line as the class definition. (@koic)
  • #13198: Fix an error for Style/OneLineConditional when using nested if/then/else/end. (@koic)
  • #13316: Fix an incorrect autocorrect for Lint/ImplicitStringConcatenation with Lint/TripleQuotes when string literals with triple quotes are used. (@koic)
  • #13220: Fix an incorrect autocorrect for Style/ArgumentsForwarding when using only forwarded arguments in brackets. (@koic)
  • #13202: Fix an incorrect autocorrect for Style/CombinableLoops when looping over the same data with different block variable names. (@koic)
  • #13291: Fix an incorrect autocorrect for Style/RescueModifier when using modifier rescue for method call with heredoc argument. (@koic)
  • #13226: Fix --auto-gen-config when passing an absolute config path. (@earlopain)
  • #13225: Avoid syntax error when correcting Style/OperatorMethodCall with / operations followed by a parenthesized argument. (@dvandersluis)
  • #13235: Fix an error for Style/IfUnlessModifier when multiline if that fits on one line and using implicit method call with hash value omission syntax. (@koic)
  • #13219: Fix a false positive for Style/ArgumentsForwarding with Ruby 3.0 and optional position arguments. (@earlopain)
  • #13271: Fix a false positive for Lint/AmbiguousRange when using rational literals. (@koic)
  • #13260: Fix a false positive for Lint/RedundantSafeNavigation with namespaced constants. (@earlopain)
  • #13224: Fix false positives for Style/OperatorMethodCall with named forwarding. (@earlopain)
  • #13213: Fix false positives for Style/AccessModifierDeclarations when AllowModifiersOnAttrs: true and using splat with a percent symbol array, or with a constant. (@koic)
  • #13145: Fix false positives for Style/RedundantLineContinuation when line continuations with comparison operator and the LHS is wrapped in parentheses. (@koic)
  • #12875: Fix false positive for Style/ArgumentsForwarding when argument is used inside a block. (@dvandersluis)
  • #13239: Fix false positive for Style/CollectionCompact when using delete_if. (@masato-bkn)
  • #13210: Fix omit_parentheses style for pattern match with value omission in single-line branch. (@gsamokovarov)
  • #13149: Handle crashes in custom Ruby extractors more gracefully. (@earlopain)
  • #13319: Handle literal forward slashes inside a regexp in Lint/LiteralInInterpolation. (@dvandersluis)
  • #13208: Fix an incorrect autocorrect for Style/IfWithSemicolon when single-line if/;/end when the then body contains a method call with [] or []=. (@koic)
  • #13318: Prevent modifying blocks with Style/HashEachMethods if the hash is modified within the block. (@dvandersluis)
  • #13293: Fix TargetRubyVersion from a gemspec when the gemspec is not named like the folder it is located in. (@earlopain)
  • #13211: Fix wrong autocorrect for Style/GuardClause when using heredoc without else branch. (@earlopain)
  • #13215: Fix wrong autocorrect for Lint/BigDecimalNew when using ::BigDecimal.new. (@earlopain)
  • #13215: Fix wrong autocorrect for Style/MethodCallWithArgsParentheses with EnforcedStyle: omit_parentheses and whitespace. (@earlopain)
  • #13302: Fix incompatible autocorrect between Style/RedundantBegin and Style/BlockDelimiters with EnforcedStyle: braces_for_chaining. (@earlopain)

Changes

  • #13221: Do not group accessors having RBS::Inline annotation comments in Style/AccessorGrouping. (@tk0miya)
  • #13286: Add AllowedMethods configuration to Layout/FirstMethodArgumentLineBreak. (@dvandersluis)
  • #13110: Add support in Style/ArgumentsForwarding for detecting forwarding of all anonymous arguments. (@dvandersluis)
  • #13222: Allow to write RBS::Inline annotation comments after method definition in Style/CommentedKeyword. (@tk0miya)
  • #13253: Emit a deprecation when custom cops inherit from RuboCop::Cop::Cop. (@earlopain)
  • #13300: Set EnforcedShorthandSyntax: either by default for Style/HashSyntax. (@koic)
  • #13254: Enhance the autocorrect for Naming/InclusiveLanguage when a sole suggestion is set. (@koic)
  • #13232: Make server mode aware of auto-restart for local config update. (@koic)
  • #13270: Make Style/SelectByRegexp aware of filter in Ruby version 2.6 or above. (@masato-bkn)
  • #9816: Refine Lint/SafeNavigationConsistency cop to check that the safe navigation operator is applied consistently and without excess or deficiency. (@koic)
  • #13256: Report and correct more Style/SafeNavigation offenses. (@dvandersluis)
  • #13245: Support filter/filter! in Style/CollectionCompact. (@masato-bkn)
  • #13281: Support Ruby 3.4 for Lint/UriRegexp to avoid obsolete API. (@koic)
  • #13229: Update Style/MapIntoArray to be able to handle arrays created using [].tap. (@dvandersluis)
  • #13305: Update Style/ReturnNilInPredicateMethodDefinition to detect implicit nil returns inside if. (@dvandersluis)
  • #13327: Make server mode aware of auto-restart for .rubocop_todo.yml update. (@koic)

RuboCop 1.66.1

04 Sep 08:30
Compare
Choose a tag to compare

Bug fixes

  • #13191: Fix an error for Style/IfWithSemicolon when using nested single-line if/;/end in block of if/else branches. (@koic)
  • #13178: Fix false positive for Style/EmptyLiteral with Hash.new([]). (@earlopain)
  • #13176: Fix crash in Style/EmptyElse when AllowComments: true and the else clause is missing. (@vlad-pisanov)
  • #13185: Fix false negatives in Style/MapIntoArray autocorrection when using ensure, def, defs and for. (@vlad-pisanov)

RuboCop 1.66

31 Aug 12:41
Compare
Choose a tag to compare

New features

  • #13077: Add new global StringLiteralsFrozenByDefault option for correct analysis with RUBYOPT=--enable=frozen-string-literal. (@earlopain)
  • #13080: Add new DocumentationExtension global option to serve documentation with extensions different than .html. (@earlopain)
  • #13074: Add new Lint/UselessNumericOperation cop to check for inconsequential numeric operations. (@zopolis4)
  • #13061: Add new Style/RedundantInterpolationUnfreeze cop to check for dup and @+ on interpolated strings in Ruby >= 3.0. (@earlopain)

Bug fixes

  • #13093: Fix an error for Lint/ImplicitStringConcatenation when implicitly concatenating a string literal with a line break and string interpolation. (@koic)
  • #13098: Fix an error for Style/IdenticalConditionalBranches when handling empty case branches. (@koic)
  • #13113: Fix an error for Style/IfWithSemicolon when a nested if with a semicolon is used. (@koic)
  • #13097: Fix an error for Style/InPatternThen when using alternative pattern matching deeply. (@koic)
  • #13159: Fix an error for Style/OneLineConditional when using if/then/else/end with multiple expressions in the then body. (@koic)
  • #13092: Fix an incorrect autocorrect for Layout/EmptyLineBetweenDefs when two method definitions are on the same line separated by a semicolon. (@koic)
  • #13116: Fix an incorrect autocorrect for Style/IfWithSemicolon when a single-line if/;/end has an argument in the then body expression. (@koic)
  • #13161: Fix incorrect autocorrect for Style/IfWithSemicolon when using multiple expressions in the else body. (@koic)
  • #13132: Fix incorrect autocorrect for Style/TrailingBodyOnMethodDefinition when an expression precedes a method definition on the same line with a semicolon. (@koic)
  • #13164: Fix incorrect autocorrect behavior for Layout/BlockAlignment when EnforcedStyleAlignWith: either (default). (@koic)
  • #13087: Fix an incorrect autocorrect for Style/MultipleComparison when expression with more comparisons precedes an expression with less comparisons. (@fatkodima)
  • #13172: Fix an error for Layout/EmptyLinesAroundExceptionHandlingKeywords when ensure or else and end are on the same line. (@koic)
  • #13107: Fix an error for Lint/ImplicitStringConcatenation when there are multiple adjacent string interpolation literals on the same line. (@koic)
  • #13111: Fix an error for Style/GuardClause when if clause is empty and correction would not fit on single line because of Layout/LineLength. (@earlopain)
  • #13137: Fix an error for Style/ParallelAssignment when using __FILE__. (@earlopain)
  • #13143: Fix an error during TargetRubyVersion detection if the gemspec is not valid syntax. (@earlopain)
  • #13131: Fix false negatives for Lint/Void when using ensure, defs and numblock. (@vlad-pisanov)
  • #13174: Fix false negatives for Style/MapIntoArray when initializing the destination using Array[], Array([]), or Array.new([]). (@vlad-pisanov)
  • #13173: Fix false negatives for Style/EmptyLiteral when using Array[], Hash[], Array.new([]) and Hash.new([]). (@vlad-pisanov)
  • #13126: Fix a false positive for Style/Alias when using multiple alias in def. (@koic)
  • #13085: Fix a false positive for Style/EmptyElse when a comment-only else is used after elsif and AllowComments: true is set. (@koic)
  • #13118: Fix a false positive for Style/MapIntoArray when splatting. (@earlopain)
  • #13105: Fix false positives for Style/ArgumentsForwarding when forwarding kwargs/block arg with non-matching additional args. (@koic)
  • #13139: Fix false positives for Style/RedundantCondition when using modifier if or unless. (@koic)
  • #13134: Fix false negative for Lint/Void when using using frozen literals. (@vlad-pisanov)
  • #13148: Fix incorrect autocorrect for Lint/EmptyConditionalBody when missing elsif body with end on the same line. (@koic)
  • #13109: Fix an error for the Lockfile parser when it contains incompatible BUNDLED WITH versions. (@earlopain)
  • #13112: Fix detection of TargetRubyVersion through the gemfile if the gemfile ruby version is below 2.7. (@earlopain)
  • #13155: Fixes an error when the server cache directory has too long path, causing rubocop to fail even with caching disabled. (@protocol7)

Changes

  • #13150: Allow get_!, set_!, get_?, set_?, get_=, and set_= in Naming/AccessorMethodName. (@koic)
  • #13103: Make Lint/UselessAssignment autocorrection safe. (@koic)
  • #13099: Make Style/RedundantRegexpArgument respect the EnforcedStyle of Style/StringLiterals. (@koic)
  • #13165: Remove dependency on the rexml gem. (@bquorning)
  • #13090: Require RuboCop AST 1.32.0+ to use RuboCop::AST::RationalNode. (@koic)

RuboCop 1.65.1

01 Aug 07:12
Compare
Choose a tag to compare

New features

  • #13068: Add config validation to Naming/PredicateName to check that all ForbiddenPrefixes are being checked. (@maxjacobson)

Bug fixes

  • #13051: Fix an error for Lint/FloatComparison when comparing with rational literal. (@koic)
  • #13065: Fix an error for Lint/UselessAssignment when same name variables are assigned using chained assignment. (@koic)
  • #13062: Fix an error for Style/InvertibleUnlessCondition when using empty parenthesis as condition. (@earlopain)
  • #11438: Explicitly load fileutils before calculating before_us. (@r7kamura)
  • #13044: Fix false negatives for Lint/ImplicitStringConcatenation when using adjacent string interpolation literals on the same line. (@koic)
  • #13083: Fix a false positive for Style/GlobalStdStream when using namespaced constants like Foo::STDOUT. (@earlopain)
  • #13081: Fix a false positive for Style/ZeroLengthPredicate when using safe navigation and non-zero comparison. (@fatkodima)
  • #13041: Fix false positives for Lint/UselessAssignment when pattern match variable is assigned and used in a block. (@koic)
  • #13076: Fix an incorrect autocorrect for Naming/RescuedExceptionsVariableName when using hash value omission. (@koic)

RuboCop 1.65

10 Jul 12:26
Compare
Choose a tag to compare

New features

  • #13030: Add new Gemspec/AddRuntimeDependency cop. (@koic)

Bug fixes

  • #12954: Fix a false negative for Style/ArgumentsForwarding when arguments forwarding in yield. (@koic)
  • #13033: Fix a false positive for Layout/SpaceAroundOperators when using multiple spaces between an operator and a tailing comment. (@koic)
  • #12885: Fix a false positive for Lint/ToEnumArguments when enumerator is created for another method. (@koic)
  • #13018: Fix a false positive for Style/MethodCallWithArgsParentheses when EnforcedStyle: omit_parentheses is set and parenthesized method call is used before constant resolution. (@koic)
  • #12986: Fix a false positive for Style/RedundantBegin when endless method definition with rescue. (@koic)
  • #12985: Fix an error for Style/RedundantRegexpCharacterClass when using regexp_parser gem 2.3.1 or older. (@koic)
  • #13010: Fix an error for Style/SuperArguments when the hash argument is or-assigned. (@koic)
  • #13023: Fix an error for Style/SymbolProc when using lambda -> with one argument and multiline do...end block. (@koic)
  • #12989: Fix an error for the inherit_gem config when the Gemfile contains an uninstalled git gem. (@earlopain)
  • #12975: Fix an error for the inherit_gem config when running RuboCop without bundler and no Gemfile exists. (@earlopain)
  • #12997: Fix an error for Lint/UnmodifiedReduceAccumulator when the block is empty. (@earlopain)
  • #12979: Fix false negatives for Lint/Void when void expression with guard clause is not on last line. (@koic)
  • #12716: Fix false negatives for Lint/Void when using parenthesized void operators. (@koic)
  • #12471: Fix false negatives for Style/ZeroLengthPredicate when using safe navigation operator. (@koic)
  • #12960: Fix false positives for Lint/NestedMethodDefinition when definition of method on variable. (@koic)
  • #13012: Fix false positives for Style/HashExcept when using reject and calling include? method with bang. (@koic)
  • #12983: Fix false positives for Style/SendWithLiteralMethodName using send with writer method name. (@koic)
  • #12957: Fix false positives for Style/SuperArguments when calling super in a block. (@koic)

Changes

  • #12970: Add CountModifierForms option to Metrics/BlockNesting and set it to false by default. (@koic)
  • #13032: Display warning messages for deprecated APIs. (@koic)
  • #13031: Enable YJIT by default in server mode. (@koic)
  • #12557: Make server mode aware of auto-restart for bundle update. (@koic)
  • #12616: Make Style/MapCompactWithConditionalBlock aware of filter_map. (@koic)
  • #13035: Support autocorrect for Lint/ImplicitStringConcatenation. (@koic)

RuboCop 1.64.1

31 May 04:33
Compare
Choose a tag to compare

Bug fixes

  • #12951: Fix an error for Style/Copyright when AutocorrectNotice is missing. (@koic)
  • #12932: Fix end position of diagnostic for LSP. (@ksss)
  • #12926: Fix a false positive for Style/SuperArguments when the methods block argument is reassigned before super. (@earlopain)
  • #12931: Fix false positives for Style/RedundantLineContinuation when line continuations involve break, next, or yield with a return value. (@koic)
  • #12924: Fix false positives for Style/SendWithLiteralMethodName when public_send argument is a method name that cannot be autocorrected. (@koic)

RuboCop 1.64

23 May 08:45
Compare
Choose a tag to compare

New features

  • #12904: Add new either_consistent SupportedShorthandSyntax to Style/HashSyntax. (@pawelma)
  • #12842: Add new Style/SendWithLiteralMethodName cop. (@koic)
  • #12309: Add new Style/SuperArguments cop. (@earlopain)
  • #12917: Suggest correct formatter name for --format command line option. (@koic)
  • #12242: Support AllowModifiersOnAttrs option for Style/AccessModifierDeclarations. (@krororo)
  • #11585: Support AllowedMethods for Style/DocumentationMethod. (@koic)

Bug fixes

  • #7189: Fix a false positive for Style/Copyright when using multiline copyright notice. (@koic)
  • #12914: Fix a false negative for Layout/EmptyComment when using an empty comment next to code after comment line. (@koic)
  • #12919: Fix false negatives for Style/ArgumentsForwarding when forward target is super. (@koic)
  • #12923: Fix false negatives for Style/ArgumentsForwarding when forward target is safe navigation method. (@koic)
  • #12894: Fix false positives for Style/MapIntoArray when using each without receiver with << to build an array. (@koic)
  • #12876: Fix an error for the lockfile parser if a gemfile exists but a lockfile doesn't. (@earlopain)
  • #12888: Fix --no-exclude-limit generating a todo with Max config instead of listing everything out with Exclude. (@earlopain)
  • #12898: Fix an error for TargetRailsVersion when parsing from the lockfile with prerelease rails. (@earlopain)

Changes

  • #12908: Add rubocop-rspec back to suggested extensions when rspec-rails is in use. (@pirj)
  • #12884: Align output from cop.documentation_url with --show-docs-url when passing a config as argument. (@earlopain)
  • #12905: Support ActiveSupportExtensionsEnabled for Style/SymbolProc. (@koic)
  • #12897: Respect user's intentions with workspace/executeCommand LSP method. (@koic)

RuboCop 1.63.5

09 May 09:00
Compare
Choose a tag to compare

Bug fixes

  • #12877: Fix an infinite loop error for Layout/FirstArgumentIndentation when specifying EnforcedStyle: with_fixed_indentation of Layout/ArrayAlignment. (@koic)
  • #12873: Fix an error for Metrics/BlockLength when the CountAsOne config is invalid. (@koic)
  • #12881: Fix incorrect autocorrect when Style/NumericPredicate is used with negations. (@fatkodima)
  • #12882: Fix Layout/CommentIndentation for comment-only pattern matching. (@nekketsuuu)

RuboCop 1.63.4

28 Apr 05:38
Compare
Choose a tag to compare

Bug fixes

  • #12871: Fix an error for rubocop -V when .rubocop.yml contains ERB. (@earlopain)
  • #12862: Fix a false positive for Style/RedundantLineContinuation when line continuations involve return with a return value. (@koic)
  • #12664: Fix handling of textDocument/diagnostic. (@muxcmux)
  • #12865: Fix Rails Cops, which weren't reporting any violations unless running with bundle exec. (@amomchilov)