gems rubocop 1.88.2
RuboCop v1.88.2

3 hours ago

Bug fixes

  • #15417: Fix a false negative for Lint/ToJSON, which did not flag singleton def self.to_json definitions. (@bbatsov)
  • #15418: Fix a false negative for Lint/UnreachableCode, which only flagged the first statement after a flow-of-control statement instead of every unreachable statement that followed it. (@bbatsov)
  • #15416: Fix a false negative for Lint/UselessNumericOperation, which only flagged bare method-call receivers and ignored local variables, instance/class/global variables, and constants (e.g. @x + 0, CONST * 1). (@bbatsov)
  • #15419: Fix a false negative for Lint/Void where safe-navigation calls to nonmutating methods (e.g. x&.sort) were not flagged when CheckForMethodsWithNoSideEffects is enabled. (@bbatsov)
  • #15421: Fix a false negative for Style/ArrayIntersect with the block form using include? (e.g. array1.any? { |e| array2.include?(e) }), which was only detected for member?. (@bbatsov)
  • #15420: Fix a false negative for Style/CollectionCompact, which did not flag grep_v(nil)/grep_v(NilClass) on a safe-navigation call (e.g. array&.grep_v(nil)). (@bbatsov)
  • #15422: Fix a false negative for Style/DefWithParentheses with a single-line definition whose body follows a semicolon (e.g. def foo(); end), where the parentheses can be safely omitted. (@bbatsov)
  • #15388: Fix a false negative for Style/MixinUsage when including multiple modules in one statement. (@bbatsov)
  • #15388: Fix a false negative for Style/ModuleFunction when the module body is a single statement. (@bbatsov)
  • #15388: Fix a false negative for Style/RedundantCurrentDirectoryInPath with double-quoted strings containing interpolation. (@bbatsov)
  • #15395: Fix a false negative for Style/RedundantHeredocDelimiterQuotes with double-quoted delimiters whose body contains interpolation or escapes. (@bbatsov)
  • #15409: Fix a false positive for Gemspec/DuplicatedAssignment with multiple specifications. (@bbatsov)
  • #15403: Fix a false positive for Layout/CommentIndentation with a comment above an inline access modifier (e.g. private def foo) when Layout/AccessModifierIndentation is configured with EnforcedStyle: outdent. (@grk)
  • #15372: Fix a false positive for Style/InvertibleUnlessCondition with a multi-statement begin condition. (@bbatsov)
  • #15360: Fix an incorrect autocorrect for Style/ArgumentsForwarding and Style/MethodDefParentheses when autocorrection conflicts while adding parentheses to method definition arguments. (@koic)
  • #15417: Fix an incorrect autocorrect for Lint/ToJSON that produced invalid Ruby (def to_json(*_args)()) when the method had explicit empty parentheses. (@bbatsov)
  • #15426: Fix an incorrect autocorrect for Style/MethodCallWithoutArgsParentheses when empty parentheses span multiple lines and the method call has a block. (@koic)
  • #15328: Fix a false positive for Style/HashConversion with a splat argument, which previously produced an invalid hash literal. (@bbatsov)
  • #15338: Fix a false positive for Style/HashLookupMethod with safe navigation, where the suggested bracket form would be the unreadable hash&.[](key). (@bbatsov)
  • #15397: Fix an incorrect autocorrect for Style/IdenticalConditionalBranches that hoisted the moved expression to column zero instead of matching the surrounding indentation. (@bbatsov)
  • #15372: Fix an incorrect autocorrect for Style/InvertibleUnlessCondition with mixed &&/|| conditions, which lost the required parentheses when inverting. (@bbatsov)
  • #15428: Fix an incorrect autocorrect for Style/TrivialAccessors when AllowPredicates: false is set and a trivial reader is defined as a predicate class method. (@koic)
  • #15402: Fix an infinite loop and file corruption for Layout/LineLength with SplitStrings when an over-long string is indented under a multi-line parent. (@bbatsov)
  • #15384: Fix a false positive and a false negative for Style/MissingRespondToMissing when method_missing is defined at the top level or alongside sibling classes. (@bbatsov)
  • #15432: Fix false positives in Layout/ElseAlignment when using else within a block that is part of a larger expression. (@koic)
  • #15423: Fix false positives in Layout/MultilineMethodCallIndentation when a method chain is nested inside a parenthesized argument list or a grouped expression within a hash pair value. (@koic)
  • #15424: Fix Style/StructInheritance autocorrect dropping leading indentation when class is inside a module or namespace. (@amckinnie)
  • #15325: Fix Style/DocumentationMethod ignoring AllowedMethods for inline modifier defs. (@bbatsov)
  • #15369: Fix a false positive for Style/LambdaCall when the argument list contains a comment, which the autocorrect would have dropped. (@bbatsov)

Changes

  • #15430: Improve performance of offense reporting by not allocating a new source range per offense outside of embedded sources. (@bbatsov)
  • #15430: Improve investigation performance by dispatching on_new_investigation, on_investigation_end, and on_other_file only to cops that refine them, and by skipping after_* dispatch when no cop needs it. (@bbatsov)
  • #15430: Improve performance of the per-file cop relevancy check by skipping gem requirement evaluation for cops without gem requirements. (@bbatsov)
  • #15430: Improve Lint/Debugger performance on code without debugger calls. (@bbatsov)
  • #15430: Improve autocorrection performance by keeping corrections in memory across inspection iterations and writing each corrected file only once. (@bbatsov)
  • #15415: Mark Lint/NumericOperationWithConstantResult autocorrect as unsafe because it drops the operands, discarding their side effects and silencing cases where the result is not actually constant (e.g. x / x raises when x is 0). (@bbatsov)
  • #15430: Improve performance of cops using AllowedPatterns, ForbiddenPatterns, and AllowedMethods by compiling the configured patterns only once. (@bbatsov)
  • #15430: Improve performance of Style/IfUnlessModifier and other modifier cops on files with many comments or conditionals. (@bbatsov)

Don't miss a new rubocop release

NewReleases is sending notifications on new releases.