gems rubocop 1.91.0
RuboCop v1.91.0

4 hours ago

New features

  • #15631: Add a preview channel for unstable behavior. (@bbatsov)
  • #15627: Add a SARIF formatter. (@bbatsov)
  • #15686: Add AllCops: FailLevel, the configuration equivalent of --fail-level. (@bbatsov)
  • #15650: Add AllowedDirectives option to Style/DisableCopsWithinSourceCodeDirective, exempting directive kinds such as generated rubocop:todo comments. (@bbatsov)
  • #15629: Add --changed to inspect only the files git says changed. (@bbatsov)
  • #15628: Add --diff to preview autocorrection without writing files. (@bbatsov)
  • #15615: Add new Lint/MisplacedMagicComment cop to flag magic comments in positions where Ruby ignores them. (@bbatsov)
  • #15600: Add the rubocop:enable-next directive to re-enable cops for the next statement only. (@bbatsov)
  • #15600: Add the rubocop:next directive, combining push-style +/- arguments with disable-next's statement scope. (@bbatsov)
  • #15363: Let a cop's entry in the default configuration carry a Preview section with the defaults it is expected to adopt in the next major release, applied under Preview. (@bbatsov)

Bug fixes

  • #15349: Fix a false positive for Style/RedundantRegexpCharacterClass with \8/\9. (@bbatsov)
  • #15646: Fix an error for Layout/ElseAlignment when else is used with rescue in a class, module, or singleton class body. (@viralpraxis)
  • #15613: Fix an error for Layout/HashAlignment when a hash value starts on the line below its key. (@viralpraxis)
  • #15623: Fix an error for Layout/HashAlignment when the first pair of a hash omits its value, and an incorrect autocorrection when a later pair does. (@viralpraxis)
  • #15602: Fix an error for Layout/IndentationWidth on under-indented code with tab indentation. (@Starlexxx)
  • #15672: Fix an error for Lint/RedundantCopDisableDirective when a file contains more than one rubocop:push/rubocop:pop pair. (@koic)
  • #15625: Fix an error for Style/AccessModifierDeclarations when a body repeats the same access modifier. (@viralpraxis)
  • #15603: Fix an error for Style/AccessModifierDeclarations with EnforcedStyle: inline when an access modifier is the body of an if without an else branch. (@viralpraxis)
  • #15604: Fix an error for Style/ConstantVisibility when a visibility declaration splats anything other than an array literal, e.g. private_constant(*constants(false)). (@viralpraxis)
  • #15647: Fix an error for Style/DocumentationMethod when an inline module_function/ruby2_keywords def is preceded by another argument. (@viralpraxis)
  • #15680: Fix an error for Style/EndlessMethod when a method definition is nested inside another method definition. (@viralpraxis)
  • #15674: Fix an error for Style/FloatDivision when using EnforcedStyle: fdiv and one operand of a float division is itself a parenthesized float division. (@viralpraxis)
  • #15624: Fix an error for Style/HashLookupMethod when the looked-up key is itself a hash lookup. (@viralpraxis)
  • #15642: Fix an error for Style/HashSyntax when hash rockets are enforced and a hash value repeats its key. (@viralpraxis)
  • #15634: Fix an incorrect autocorrect for Lint/LiteralAsCondition when the other operand is a parenthesized return. (@Starlexxx)
  • #15648: Fix an incorrect autocorrect for Lint/ParenthesesAsGroupedExpression when the parentheses contain and, or, not, or a modifier expression. (@Starlexxx)
  • #15612: Fix an incorrect autocorrect for Naming/BlockForwarding with Style/MethodDefParentheses. (@Starlexxx)
  • #15680: Fix an incorrect autocorrect for Style/EndlessMethod when using EnforcedStyle: require_always and the method body has a rescue or ensure clause. (@viralpraxis)
  • #15669: Fix an incorrect autocorrect for Style/FloatDivision when using EnforcedStyle: fdiv and the divisor is a method call with parenthesized arguments. (@viralpraxis)
  • #15678: Fix an incorrect autocorrect for Style/For when using EnforcedStyle: for and the block body has a rescue or ensure clause. (@viralpraxis)
  • #15645: Fix an incorrect autocorrect for Style/GuardClause with Style/MissingElse. (@Starlexxx)
  • #15668: Fix an incorrect autocorrect for Style/MethodCallWithArgsParentheses when EnforcedStyle: omit_parentheses is used together with Style/TrailingCommaInArguments. (@viralpraxis)
  • #15347: Fix an incorrect autocorrect for Style/NestedModifier. (@bbatsov)
  • #15347: Fix an incorrect autocorrect for Style/NonNilCheck. (@bbatsov)
  • #15347: Fix an incorrect autocorrect for Style/Not with a flip-flop or assignment. (@bbatsov)
  • #15349: Fix an incorrect autocorrect for Style/RedundantDoubleSplatHashBraces with a braced merge argument. (@bbatsov)
  • #15349: Fix an incorrect autocorrect for Style/RedundantParentheses around and/or. (@bbatsov)
  • #15349: Fix an incorrect autocorrect for Style/RedundantRegexpConstructor with %r{} delimiters. (@bbatsov)
  • #15614: Fix an infinite loop between Layout/ArgumentAlignment and Layout/HashAlignment with separator style. (@Starlexxx)
  • #15599: Fix an infinite loop error for Layout/CommentIndentation when many comment blocks with the same indentation are separated by empty lines. (@Starlexxx)
  • #15597: Fix an infinite loop error for Layout/EmptyLinesAfterModuleInclusion when a module inclusion is directly before rescue. (@Starlexxx)
  • #15617: Fix an infinite loop between Layout/ExtraSpacing with ForceEqualSignAlignment and Layout/SpaceAroundOperators. (@Starlexxx)
  • #15638: Fix an infinite loop error for Layout/FirstArrayElementIndentation with Layout/ArrayAlignment when EnforcedStyle: with_fixed_indentation is configured. (@RedZapdos123)
  • #15639: Fix an infinite loop error for Layout/FirstParameterIndentation with Layout/ParameterAlignment when EnforcedStyle: with_fixed_indentation is configured. (@RedZapdos123)
  • #15619: Fix an infinite loop for Layout/LineLength with SplitStrings: true when the split point lands on a trailing space. (@Starlexxx)
  • #15675: Fix an infinite loop between Layout/SpaceAroundOperators and Layout/ExtraSpacing with ForceEqualSignAlignment: true for aligned operator assignments. (@Starlexxx)
  • #15598: Fix an infinite loop error for Lint/AssignmentInCondition when an assignment is inside defined?. (@Starlexxx)
  • #15665: Fix an infinite loop between Style/EmptyMethod and Style/SingleLineMethods with AllowIfMethodIsEmpty: false. (@Starlexxx)
  • #15644: Fix an infinite loop error for Style/EndlessMethod when an indented method definition would exceed Layout/LineLength once made endless. (@viralpraxis)
  • #15651: Fix an infinite loop error for Style/EndlessMethod when a method body is a block spread over several lines. (@viralpraxis)
  • #15618: Fix an infinite loop between Style/ParenthesesAroundCondition with AllowSafeAssignment: false and Lint/AssignmentInCondition. (@Starlexxx)
  • #15662: Fix an infinite loop between Layout/SpaceAroundBlockParameters and Layout/SpaceInsideParens when the two cops enforce conflicting styles for a lambda's parameter parentheses. (@viralpraxis)
  • #15670: Fix an infinite loop for Style/NumericLiteralPrefix with signed literals. (@dylanpulver)
  • #15636: Fix Lint/CopDirectiveSyntax falsely reporting multiple directives when valid reason text mentions another directive. (@RedZapdos123)
  • #15679: Fix false positives in Lint/DuplicateMethods for singleton methods in separate anonymous classes. (@rafaelfranca)
  • #15347: Fix incorrect autocorrects for Style/NilComparison with precedence-sensitive operands. (@bbatsov)
  • #15611: Fix Lint/ArgumentMismatch registering false positives for Foo.new calls, which are documented as out of scope but were checked against whichever new the project index could reach. (@HoneyryderChuck)
  • #15610: Fix Lint/ArgumentMismatch registering false positives for calls that resolve to a private method on Object, such as a bare def written at the top level of a DSL file. (@HoneyryderChuck)
  • #15600: Make rubocop:push +Cop arguments enable cops that are disabled in the configuration. (@bbatsov)
  • #9325: Merge Exclude with the default configuration and with inherited files under Preview. (@bbatsov)
  • #15626: Fix RemoteConfig failing to follow relative HTTP redirects for remote configuration files. (@RedZapdos123)
  • #15661: Fix the result cache reading and processing non-regular files. (@viralpraxis)
  • #15621: Fix incorrect analysis results when the result cache cannot compute a file checksum, which could serve one file's cached results for another file. (@koic)
  • #11696: Fix Style/DataInheritance to not register an offense when the class body defines constants, nested classes, or nested modules. (@MatheusRich)
  • #15655: Fix Style/StructInheritance to not register an offense when the class body defines constants, nested classes, or nested modules. (@MatheusRich)

Changes

  • #15363: Disable Metrics/MethodLength, Metrics/AbcSize, Metrics/ClassLength, Metrics/ModuleLength, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity, Metrics/BlockLength, Metrics/ParameterLists and Metrics/BlockNesting under Preview, ahead of them being disabled by default in RuboCop 2.0. (@bbatsov)
  • #15363: Disable Style/IfUnlessModifier, Style/GuardClause, Style/Next, Style/ClassAndModuleChildren, Style/DoubleNegation, Style/NumericPredicate, Style/SpecialGlobalVars, Style/PerlBackrefs, Style/FrozenStringLiteralComment, Style/FormatStringToken, Style/FormatString, Style/RegexpLiteral, Style/SignalException, Style/Lambda, Style/ParallelAssignment, Style/RaiseArgs, Style/ModuleFunction, Style/BlockDelimiters, Style/NumericLiterals, Style/NegatedIf, Naming/VariableNumber, Naming/HeredocDelimiterNaming, Layout/EmptyLineAfterGuardClause and Bundler/OrderedGems under Preview, ahead of them being disabled by default in RuboCop 2.0. (@bbatsov)
  • #15363: Set AllCops: FailLevel to warning under Preview, so that style offenses are reported without failing the build, ahead of it becoming the default in RuboCop 2.0. (@bbatsov)
  • #15363: Set the community-preferred EnforcedStyle of Style/StringLiterals, Style/StringLiteralsInInterpolation, Layout/CaseIndentation, Layout/EndAlignment, Layout/MultilineMethodCallIndentation, Layout/MultilineOperationIndentation, Layout/FirstHashElementIndentation, Layout/FirstArrayElementIndentation, Layout/ParameterAlignment, Layout/ArgumentAlignment, Style/EmptyMethod, Style/Alias, Style/RescueStandardError and Style/TernaryParentheses under Preview, ahead of them becoming the defaults in RuboCop 2.0. (@bbatsov)
  • #15363: Set the EnforcedStyle of Style/SymbolArray and Style/WordArray to brackets under Preview, ahead of it becoming the default in RuboCop 2.0. (@bbatsov)
  • #15686: Derive a cop's default severity from its department: Security cops now report as warning and Metrics cops as refactor. (@bbatsov)
  • #15363: Disable Style/Documentation under Preview, ahead of it being disabled by default in RuboCop 2.0. (@bbatsov)
  • #15616: Enable Lint/CopDirectiveSyntax by default, so directives that silently disable nothing are reported. (@bbatsov)
  • #15601: Make Style/DirectiveScope convert single-statement signed push/pop scopes and enable/disable pairs to the next, enable-next and disable-next forms. (@bbatsov)
  • #15650: Make AllowedCops and DisallowedCops of Style/DisableCopsWithinSourceCodeDirective match department names as well as cop names. (@bbatsov)
  • #15616: Remove Style/DoubleCopDisableDirective, superseded by Lint/CopDirectiveSyntax, which now reports and corrects more than one directive on a line. (@bbatsov)
  • #15607: Recognize warn_indent as a magic comment. This fixes a false positive for Layout/EmptyLineAfterMagicComment and makes Lint/OrderedMagicComments and Style/MagicCommentFormat aware of it. (@koic)
  • #15650: Rename the AllowTrailingComment option of Style/DisableCopsWithinSourceCodeDirective to AllowWithReason. (@bbatsov)

Don't miss a new rubocop release

NewReleases is sending notifications on new releases.