Skip to content

Upgrading rubocop 0.35 to 0.36

Breaking0.35.1 → 0.36.0Breaking6Security1New59Changed17Fixed58Other1

BreakingUpgrade verdict

6 breaking changes and a security fix.

  • The Lint/SpaceBeforeFirstArg check is gone; use the Style cop instead.
  • The Style/SingleSpaceBeforeFirstArg cop is now called Style/SpaceBeforeFirstArg.
  • The MultiSpaceAllowedForOperators setting is gone because AllowForAlignment covers it; leaving it in your config causes a validation error.
  • The Rails/DefaultScope check is no longer available.
Top 4 of 7 that need code or config changes
Breaking6
Removes the Lint/SpaceBeforeFirstArg cop because it duplicates Style/SingleSpaceBeforeFirstArg.
Lint/SpaceBeforeFirstArgStyle/SingleSpaceBeforeFirstArg
Renames Style/SingleSpaceBeforeFirstArg to Style/SpaceBeforeFirstArg to reflect what it now does.
Style/SingleSpaceBeforeFirstArgStyle/SpaceBeforeFirstArg
Removes the MultiSpaceAllowedForOperators parameter for Style/SpaceAroundOperators; using it now fails config validation.
MultiSpaceAllowedForOperatorsStyle/SpaceAroundOperatorsAllowForAlignment
Removes the Rails/DefaultScope cop.
Rails/DefaultScope
The RunRailsCops parameter in .rubocop.yml is obsolete; using it now fails config validation.
RunRailsCops
Splits Style/TrailingComma into Style/TrailingCommaInArguments and Style/TrailingCommaInLiteral.
Style/TrailingCommaStyle/TrailingCommaInArgumentsStyle/TrailingCommaInLiteral
Security1
Removes two vulnerabilities in cache handling.

Generated by DepDelta from published Ruby source. Not mixed with prose notes.

  • removed: module Astrolabe
  • removed: class Node
  • removed: method Node.asgn_method_call?()
  • removed: method Node.multiline?()
  • removed: method Node.single_line?()
  • removed: static method Node.def_matcher(_, _)
  • removed: const Options.DEFAULT_FORMATTER
  • removed: method Config.to_s()
  • removed: method Config.warn_unless_valid()
  • removed: static property ConfigLoader.exclude_limit: accessor
  • changed: class Config < DelegateClass(Hash) → class Config < Hash
  • changed: constructor ProcessedSource(_, _ = …) → constructor ProcessedSource(_, _, _ = …)
  • changed: method ResultCache.save(_, _, _) → method ResultCache.save(_)
  • changed: static method ProcessedSource.from_file(_) → static method ProcessedSource.from_file(_, _)
  • added: class CachedData
  • added: class Error < StandardError
  • added: class Node < Parser::AST::Node
  • added: class ValidationError < Error
  • added: const Config.KNOWN_RUBIES
  • added: const NameSimilarity.MINIMUM_SIMILARITY_TO_SUGGEST
  • added: const Node.BASIC_LITERALS
  • added: const Node.COMPARISON_OPERATORS
  • added: const Node.FALSEY_LITERALS
  • added: const Node.IMMUTABLE_LITERALS
  • added: const Node.KEYWORDS
  • added: const Node.LITERALS
  • added: const Node.MUTABLE_LITERALS
  • added: const Node.OPERATOR_KEYWORDS
  • added: const Node.REFERENCES
  • added: const Node.SPECIAL_KEYWORDS
  • added: const Node.TRUTHY_LITERALS
  • added: const Node.VARIABLES
  • added: constructor CachedData(_)
  • added: constructor Node(_, _ = …, _ = …)
  • added: method CachedData.from_json(_)
  • added: method CachedData.to_json(_)
  • added: method NameSimilarity.find_similar_name(_, _)
  • added: method Node.ancestors()
  • added: method Node.asgn_method_call?()
  • added: method Node.basic_literal?()
  • added: method Node.child_nodes()
  • added: method Node.const_name()
  • added: method Node.defined_module()
  • added: method Node.defined_module_name()
  • added: method Node.descendants()
  • added: method Node.each_ancestor(*)
  • added: method Node.each_child_node(*)
  • added: method Node.each_descendant(*)
  • added: method Node.each_node(*)
  • added: method Node.falsey_literal?()
  • added: method Node.immutable_literal?()
  • added: method Node.keyword?()
  • added: method Node.keyword_not?()
  • added: method Node.literal?()
  • added: method Node.multiline?()
  • added: method Node.mutable_literal?()
  • added: method Node.parent_module_name()
  • added: method Node.pure?()
  • added: method Node.reference?()
  • added: method Node.sibling_index()
  • added: method Node.single_line?()
  • added: method Node.source()
  • added: method Node.source_range()
  • added: method Node.special_keyword?()
  • added: method Node.truthy_literal?()
  • added: method Node.value_used?()
  • added: method Node.variable?()
  • added: method Sexp.s(_, *)
  • added: module NameSimilarity
  • added: module Sexp
  • added: property ProcessedSource.ruby_version: reader
  • added: protected method Node.parent()
  • added: protected method Node.visit_descendants()
  • added: protected method Node.visit_descendants_with_types(_)
  • added: protected set Node.parent(_)
  • added: static method ConfigLoader.clear_options()
  • added: static method Node.def_matcher(_, _)
  • added: static method ResultCache.cache_root(_)
  • added: class Finished < Exception
  • removed: class ValidationError < StandardError
  • removed: const CheckAssignment.TYPES
  • removed: const StringHelp.ESCAPED_CHAR_REGEXP
  • removed: const Util.BASIC_LITERALS
  • removed: const Util.LITERALS
  • removed: const Util.PROC_NEW_NODE
  • removed: method AccessModifierNode.class_constructor?(_)
  • removed: method ArraySyntax.array_of?(_, _)
  • removed: method AutocorrectAlignment.start_of_line?(_)
  • removed: method CheckAssignment.on_casgn(_)
  • removed: method CheckAssignment.on_op_asgn(_)
  • removed: static method Cop.rails?()
  • removed: static method Util.command?(_, _)
  • removed: static method Util.const_name(_)
  • removed: static method Util.lambda?(_)
  • removed: static method Util.lambda_or_proc?(_)
  • removed: static method Util.proc?(_)
  • changed: class AmbiguousCopName < Exception → class AmbiguousCopName < RuboCop::Error
  • changed: method StringLiteralsHelp.wrong_quotes?(_, _) → method StringLiteralsHelp.wrong_quotes?(_)
  • added: const TrailingComma.MSG
  • added: const Util.LITERAL_REGEX
  • added: const Util.STRING_ESCAPES
  • added: const Util.STRING_ESCAPE_REGEX
  • added: method ArrayHashIndentation.base_column(_, _)
  • added: method ArrayHashIndentation.check_first(_, _, _, _)
  • added: method ArrayHashIndentation.detected_styles(_, _, _)
  • added: method ArrayHashIndentation.each_argument_node(_, _)
  • added: method ArrayHashIndentation.incorrect_style_detected(_, _, _, _, _)
  • added: method ArraySyntax.bracketed_array_of?(_, _)
  • added: method ConfigurableEnforcedStyle.supported_styles()
  • added: method Cop.parse(_, _ = …)
  • added: method Cop.target_ruby_version()
  • added: method Corrector.remove_leading(_, _)
  • added: method Corrector.remove_preceding(_, _)
  • added: method HashNode.any_pairs_on_the_same_line?(_)
  • added: method MultilineExpressionIndentation.argument_in_method_call(_)
  • added: method MultilineExpressionIndentation.assignment_call?(_)
  • added: method MultilineExpressionIndentation.assignment_rhs(_)
  • added: method MultilineExpressionIndentation.check(_, _, _, _)
  • added: method MultilineExpressionIndentation.correct_indentation(_)
  • added: method MultilineExpressionIndentation.grouped_expression?(_)
  • added: method MultilineExpressionIndentation.incorrect_style_detected(_, _, _, _)
  • added: method MultilineExpressionIndentation.indentation(_)
  • added: method MultilineExpressionIndentation.inside_arg_list_parentheses?(_, _)
  • added: method MultilineExpressionIndentation.kw_node_with_special_indentation(_)
  • added: method MultilineExpressionIndentation.left_hand_side(_)
  • added: method MultilineExpressionIndentation.not_for_this_cop?(_)
  • added: method MultilineExpressionIndentation.on_send(_)
  • added: method MultilineExpressionIndentation.operation_description(_, _)
  • added: method MultilineExpressionIndentation.part_of_assignment_rhs(_, _)
  • added: method MultilineExpressionIndentation.part_of_block_body?(_, _)
  • added: method MultilineExpressionIndentation.right_hand_side(_)
  • added: method Parentheses.autocorrect(_)
  • added: method Parentheses.parens_required?(_)
  • added: method PrecedingFollowingAlignment.aligned_assignment?(_, _)
  • added: method PrecedingFollowingAlignment.aligned_char?(_, _)
  • added: method PrecedingFollowingAlignment.aligned_identical?(_, _)
  • added: method PrecedingFollowingAlignment.aligned_operator?(_, _)
  • added: method PrecedingFollowingAlignment.aligned_token?(_, _)
  • added: method PrecedingFollowingAlignment.aligned_with_adjacent_line?(_, _)
  • added: method PrecedingFollowingAlignment.aligned_with_line?(_, _, _ = …)
  • added: method PrecedingFollowingAlignment.aligned_with_operator?(_)
  • added: method PrecedingFollowingAlignment.aligned_with_something?(_)
  • added: method PrecedingFollowingAlignment.aligned_words?(_, _)
  • added: method PrecedingFollowingAlignment.allow_for_alignment?()
  • added: method PrecedingFollowingAlignment.comment_lines()
  • added: method TrailingComma.autocorrect(_)
  • added: method TrailingComma.avoid_comma(_, _, _, _)
  • added: method TrailingComma.brackets?(_)
  • added: method TrailingComma.check(_, _, _, _, _)
  • added: method TrailingComma.heredoc?(_)
  • added: method TrailingComma.inside_comment?(_, _)
  • added: method TrailingComma.multiline?(_)
  • added: method TrailingComma.on_same_line?(_, _)
  • added: method TrailingComma.parameter_name()
  • added: method TrailingComma.put_comma(_, _, _)
  • added: method TrailingComma.should_have_comma?(_, _)
  • added: module ArrayHashIndentation
  • added: module HashNode
  • added: module MultilineExpressionIndentation
  • added: module Parentheses
  • added: module PrecedingFollowingAlignment
  • added: module TrailingComma
  • added: property Offense.status: reader
  • added: static method Util.double_quotes_acceptable?(_)
  • added: static method Util.double_quotes_required?(_)
  • added: static method Util.ends_its_line?(_)
  • added: static method Util.interpret_string_escapes(_)
  • added: static method Util.to_string_literal(_)
  • added: static method Util.to_symbol_literal(_)
  • removed: class SpaceBeforeFirstArg < Cop
  • removed: const FormatParameterMismatch.SPLAT
  • removed: const LiteralInInterpolation.LITERALS
  • removed: const SpaceBeforeFirstArg.MSG
  • removed: const UselessAssignment.MINIMUM_SIMILARITY_TO_SUGGEST
  • removed: const UselessSetterCall.LITERAL_TYPES
  • removed: const Void.LITERALS
  • removed: const Void.VARS
  • removed: method BlockAlignment.on_and(_)
  • removed: method BlockAlignment.on_masgn(_)
  • removed: method BlockAlignment.on_op_asgn(_)
  • removed: method BlockAlignment.on_or(_)
  • removed: method BlockAlignment.on_send(_)
  • removed: method DuplicateMethods.on_class(_)
  • removed: method DuplicateMethods.on_module(_)
  • removed: method NonLocalExitFromIterator.lambda?(_)
  • removed: method SpaceBeforeFirstArg.autocorrect(_)
  • removed: method SpaceBeforeFirstArg.on_send(_)
  • removed: method UselessAssignment.find_similar_name(_, _)
  • changed: static method Syntax.offense_from_diagnostic(_) → static method Syntax.offense_from_diagnostic(_, _)
  • added: class FloatOutOfRange < Cop
  • added: class ImplicitStringConcatenation < Cop
  • added: class IneffectiveAccessModifier < Cop
  • added: class NextWithoutAccumulator < Cop
  • added: class RandOne < Cop
  • added: const FloatOutOfRange.MSG
  • added: const FormatParameterMismatch.NAMED_INTERPOLATION
  • added: const ImplicitStringConcatenation.FOR_ARRAY
  • added: const ImplicitStringConcatenation.FOR_METHOD
  • added: const ImplicitStringConcatenation.MSG
  • added: const IneffectiveAccessModifier.ALTERNATIVE_PRIVATE
  • added: const IneffectiveAccessModifier.ALTERNATIVE_PROTECTED
  • added: const IneffectiveAccessModifier.MSG
  • added: const NextWithoutAccumulator.MSG
  • added: const RandOne.MSG
  • added: constructor DuplicateMethods(_ = …, _ = …)
  • added: method Debugger.autocorrect(_)
  • added: method DuplicateMethods.on_def(_)
  • added: method DuplicateMethods.on_defs(_)
  • added: method FloatOutOfRange.on_float(_)
  • added: method ImplicitStringConcatenation.on_dstr(_)
  • added: method IneffectiveAccessModifier.on_class(_)
  • added: method IneffectiveAccessModifier.on_module(_)
  • added: method NestedMethodDefinition.find_nested_defs(_)
  • added: method NextWithoutAccumulator.on_block(_)
  • added: method RandOne.on_send(_)
  • added: method UnneededDisable.autocorrect(_)
  • added: method UselessAccessModifier.on_module(_)
  • changed: class ERROR_SOURCE_RANGE < PseudoSourceRange.new(1, 0, '') → class ERROR_SOURCE_RANGE < PseudoSourceRange.new(1, 0, '', 0, 1)
  • changed: class PseudoSourceRange < Struct.new(:line, :column, :source_line) → class PseudoSourceRange < Struct.new(:line, :column, :source_line, :begin_pos, :end_pos)
  • added: method LineLength.allow_heredoc?()
  • added: method LineLength.allowed_heredoc()
  • added: method LineLength.extract_heredocs(_)
  • added: method LineLength.line_in_whitelisted_heredoc?(_, _)
  • added: class Casecmp < Cop
  • added: class DoubleStartEndWith < Cop
  • added: class EndWith < Cop
  • added: class HashEachMethods < Cop
  • added: class LstripRstrip < Cop
  • added: class RangeInclude < Cop
  • added: class RedundantBlockCall < Cop
  • added: class RedundantMatch < Cop
  • added: class RedundantMerge < Cop
  • added: class RedundantSortBy < Cop
  • added: class StartWith < Cop
  • added: class TimesMap < Cop
  • added: const Casecmp.MSG
  • added: const DoubleStartEndWith.MSG
  • added: const EndWith.MSG
  • added: const EndWith.SINGLE_QUOTE
  • added: const HashEachMethods.MSG
  • added: const LstripRstrip.MSG
  • added: const RangeInclude.MSG
  • added: const RedundantBlockCall.MSG
  • added: const RedundantMatch.MSG
  • added: const RedundantMerge.AREF_ASGN
  • added: const RedundantMerge.MSG
  • added: const RedundantSortBy.MSG
  • added: const StartWith.MSG
  • added: const StartWith.SINGLE_QUOTE
  • added: const TimesMap.MSG
  • added: method Casecmp.autocorrect(_)
  • added: method Casecmp.on_send(_)
  • added: method DoubleStartEndWith.on_or(_)
  • added: method EndWith.autocorrect(_)
  • added: method EndWith.literal_at_end?(_)
  • added: method EndWith.on_send(_)
  • added: method HashEachMethods.autocorrect(_)
  • added: method HashEachMethods.check_argument(_)
  • added: method HashEachMethods.on_block(_)
  • added: method LstripRstrip.autocorrect(_)
  • added: method LstripRstrip.on_send(_)
  • added: method RangeInclude.autocorrect(_)
  • added: method RangeInclude.on_send(_)
  • added: method RedundantBlockCall.autocorrect(_)
  • added: method RedundantBlockCall.on_def(_)
  • added: method RedundantMatch.autocorrect(_)
  • added: method RedundantMatch.on_send(_)
  • added: method RedundantMerge.autocorrect(_)
  • added: method RedundantMerge.on_send(_)
  • added: method RedundantSortBy.autocorrect(_)
  • added: method RedundantSortBy.on_block(_)
  • added: method StartWith.autocorrect(_)
  • added: method StartWith.literal_at_start?(_)
  • added: method StartWith.on_send(_)
  • added: method TimesMap.on_block(_)
  • added: method TimesMap.on_send(_)
  • removed: class DefaultScope < Cop
  • removed: const DefaultScope.MSG
  • removed: method DefaultScope.on_send(_)
  • removed: class SingleSpaceBeforeFirstArg < Cop
  • removed: class TrailingComma < Cop
  • removed: const Alias.MSG
  • removed: const Attr.MSG
  • removed: const ExtraSpacing.MSG
  • removed: const FileName.MSG
  • removed: const InfiniteLoop.FALSEY_LITERALS
  • removed: const InfiniteLoop.TRUTHY_LITERALS
  • removed: const MutableConstant.MUTABLE_TYPES
  • removed: const RedundantFreeze.TARGET_NODES
  • removed: const SingleSpaceBeforeFirstArg.MSG
  • removed: const SpaceAroundOperators.TYPES
  • removed: const SpecialGlobalVars.PREFERRED_VARS
  • removed: const SymbolArray.MSG
  • removed: const TrailingComma.MSG
  • removed: const WordArray.MSG
  • removed: method Alias.on_block(_)
  • removed: method EmptyLiteral.first_arg_in_method_call_without_parentheses?(_)
  • removed: method IndentArray.check_first_pair(_, _)
  • removed: method IndentArray.check_right_bracket(_, _, _)
  • removed: method MultilineOperationIndentation.on_send(_)
  • removed: method SingleSpaceBeforeFirstArg.autocorrect(_)
  • removed: method SingleSpaceBeforeFirstArg.on_send(_)
  • removed: method SpecialGlobalVars.autocorrect(_)
  • removed: method SpecialGlobalVars.message(_)
  • removed: method SpecialGlobalVars.on_gvar(_)
  • removed: method TrailingComma.on_array(_)
  • removed: method TrailingComma.on_hash(_)
  • removed: method TrailingComma.on_send(_)
  • added: class CaseCorrector
  • added: class ConditionalAssignment < Cop
  • added: class FrozenStringLiteralComment < Cop
  • added: class IdenticalConditionalBranches < Cop
  • added: class IfCorrector
  • added: class IfInsideElse < Cop
  • added: class IndentAssignment < Cop
  • added: class MultilineArrayBraceLayout < Cop
  • added: class MultilineAssignmentLayout < Cop
  • added: class MultilineMethodCallIndentation < Cop
  • added: class NestedParenthesizedCalls < Cop
  • added: class RedundantParentheses < Cop
  • added: class SpaceBeforeFirstArg < Cop
  • added: class TernaryCorrector
  • added: class TrailingCommaInArguments < Cop
  • added: class TrailingCommaInLiteral < Cop
  • added: class UnlessCorrector
  • added: class UnneededInterpolation < Cop
  • added: const Alias.MSG_ALIAS
  • added: const Alias.MSG_ALIAS_METHOD
  • added: const Alias.MSG_SYMBOL_ARGS
  • added: const ConditionalAssignment.ASSIGNMENT_TYPES
  • added: const ConditionalAssignment.ENABLED
  • added: const ConditionalAssignment.IF
  • added: const ConditionalAssignment.INDENTATION_WIDTH
  • added: const ConditionalAssignment.LINE_LENGTH
  • added: const ConditionalAssignment.MAX
  • added: const ConditionalAssignment.METHODS
  • added: const ConditionalAssignment.MSG
  • added: const ConditionalAssignment.SINGLE_LINE_CONDITIONS_ONLY
  • added: const ConditionalAssignment.UNLESS
  • added: const ConditionalAssignment.VARIABLE_ASSIGNMENT_TYPES
  • added: const ConditionalAssignment.WIDTH
  • added: const ConditionalAssignmentHelper.EQUAL
  • added: const ExtraSpacing.MSG_UNALIGNED_ASGN
  • added: const ExtraSpacing.MSG_UNNECESSARY
  • added: const FileName.MSG_NO_DEFINITION
  • added: const FileName.MSG_REGEX
  • added: const FileName.MSG_SNAKE_CASE
  • added: const FrozenStringLiteralComment.FROZEN_STRING_LITERAL
  • added: const FrozenStringLiteralComment.FROZEN_STRING_LITERAL_ENABLED
  • added: const FrozenStringLiteralComment.MSG
  • added: const FrozenStringLiteralComment.SHEBANG
  • added: const IdenticalConditionalBranches.MSG
  • added: const IfInsideElse.MSG
  • added: const IndentAssignment.MSG
  • added: const MultilineArrayBraceLayout.NEW_LINE_MESSAGE
  • added: const MultilineArrayBraceLayout.SAME_LINE_MESSAGE
  • added: const MultilineAssignmentLayout.NEW_LINE_OFFENSE
  • added: const MultilineAssignmentLayout.SAME_LINE_OFFENSE
  • added: const NestedParenthesizedCalls.MSG
  • added: const NestedParenthesizedCalls.RSPEC_MATCHERS
  • added: const RedundantParentheses.ALLOWED_LITERALS
  • added: const SpaceBeforeFirstArg.MSG
  • added: const SpecialGlobalVars.ENGLISH_VARS
  • added: const StabbyLambdaParentheses.ARROW
  • added: const StringLiterals.MSG_INCONSISTENT
  • added: const SymbolArray.ARRAY_MSG
  • added: const SymbolArray.PERCENT_MSG
  • added: const UnneededInterpolation.MSG
  • added: const WordArray.ARRAY_MSG
  • added: const WordArray.PERCENT_MSG
  • added: method Alias.on_send(_)
  • added: method ConditionalAssignment.autocorrect(_)
  • added: method ConditionalAssignment.lhs_all_match?(_)
  • added: method ConditionalAssignment.on_case(_)
  • added: method ConditionalAssignment.on_if(_)
  • added: method ConditionalAssignmentHelper.correct_branches(_, _)
  • added: method ConditionalAssignmentHelper.expand_elses(_)
  • added: method ConditionalAssignmentHelper.expand_when_branches(_)
  • added: method ConditionalAssignmentHelper.lhs(_)
  • added: method ConditionalAssignmentHelper.tail(_)
  • added: method FrozenStringLiteralComment.autocorrect(_)
  • added: method FrozenStringLiteralComment.investigate(_)
  • added: method FrozenStringLiteralComment.on_send(_)
  • added: method GuardClause.on_if(_)
  • added: method IdenticalConditionalBranches.on_case(_)
  • added: method IdenticalConditionalBranches.on_if(_)
  • added: method IfInsideElse.on_if(_)
  • added: method IndentArray.on_send(_)
  • added: method IndentAssignment.check_assignment(_, _)
  • added: method MultilineArrayBraceLayout.autocorrect(_)
  • added: method MultilineArrayBraceLayout.on_array(_)
  • added: method MultilineAssignmentLayout.autocorrect(_)
  • added: method MultilineAssignmentLayout.check_assignment(_, _)
  • added: method MultilineAssignmentLayout.check_new_line_offense(_, _)
  • added: method MultilineAssignmentLayout.check_same_line_offense(_, _)
  • added: method MultilineMethodCallIndentation.validate_config()
  • added: method MultilineOperationIndentation.validate_config()
  • added: method NestedParenthesizedCalls.on_send(_)
  • added: method Next.investigate(_)
  • added: method OptionHash.validate_config()
  • added: method RedundantParentheses.disallowed_literal?(_)
  • added: method RedundantParentheses.keyword_ancestor?(_)
  • added: method RedundantParentheses.keyword_with_redundant_parentheses?(_)
  • added: method RedundantParentheses.method_call_with_redundant_parentheses?(_)
  • added: method RedundantParentheses.offense(_, _)
  • added: method RedundantParentheses.on_begin(_)
  • added: method SpaceAroundOperators.on_and(_)
  • added: method SpaceAroundOperators.on_and_asgn(_)
  • added: method SpaceAroundOperators.on_binary(_)
  • added: method SpaceAroundOperators.on_casgn(_)
  • added: method SpaceAroundOperators.on_class(_)
  • added: method SpaceAroundOperators.on_cvasgn(_)
  • added: method SpaceAroundOperators.on_gvasgn(_)
  • added: method SpaceAroundOperators.on_ivasgn(_)
  • added: method SpaceAroundOperators.on_lvasgn(_)
  • added: method SpaceAroundOperators.on_masgn(_)
  • added: method SpaceAroundOperators.on_op_asgn(_)
  • added: method SpaceAroundOperators.on_or(_)
  • added: method SpaceAroundOperators.on_or_asgn(_)
  • added: method SpaceAroundOperators.on_special_asgn(_)
  • added: method SpaceBeforeFirstArg.autocorrect(_)
  • added: method SpaceBeforeFirstArg.on_send(_)
  • added: method StringLiterals.on_dstr(_)
  • added: method SymbolArray.validate_config()
  • added: method TrailingCommaInArguments.on_send(_)
  • added: method TrailingCommaInLiteral.on_array(_)
  • added: method TrailingCommaInLiteral.on_hash(_)
  • added: method UnneededInterpolation.on_dstr(_)
  • added: method WordArray.autocorrect(_)
  • added: module ConditionalAssignmentHelper
  • added: static method CaseCorrector.correct(_)
  • added: static method IfCorrector.correct(_)
  • added: static method TernaryCorrector.correct(_)
  • added: static method UnlessCorrector.correct(_)
  • added: method AssignmentSorter.accesses?(_, _)
  • removed: class NON_ENGLISH_VARS < Set.new(['$LOAD_PATH', '$LOADED_FEATURES', '$PROGRAM_NAME', 'ARGV'])
  • removed: const ProgressFormatter.GREEN_DOT
  • changed: constructor BaseFormatter(_) → constructor BaseFormatter(_, _ = …)
  • changed: constructor HTMLFormatter(_) → constructor HTMLFormatter(_, _ = …)
  • changed: constructor JSONFormatter(_) → constructor JSONFormatter(_, _ = …)
  • changed: constructor ProgressFormatter(_) → constructor ProgressFormatter(_, _ = …)
  • added: class WorstOffendersFormatter < BaseFormatter
  • added: constructor FormatterSet(_ = …)
  • added: method WorstOffendersFormatter.file_finished(_, _)
  • added: method WorstOffendersFormatter.finished(_)
  • added: method WorstOffendersFormatter.ordered_offense_counts(_)
  • added: method WorstOffendersFormatter.report_summary(_)
  • added: method WorstOffendersFormatter.started(_)
  • added: method WorstOffendersFormatter.total_offense_count(_)
  • added: property BaseFormatter.options: reader
  • added: property WorstOffendersFormatter.offense_counts: reader
  • added: static property DisabledConfigFormatter.detected_styles: accessor
  • added: class Report
  • added: constructor Report(_, _, _, _)
  • added: method Report.summary()
  • added: class Builder < Parser::Builders::Default
  • added: method Builder.n(_, _, _)
  • removed: const Compiler.META_CHAR
  • removed: method Compiler.emit_trailing_param_list()
  • changed: method Compiler.compile_predicate(_, _, _) → method Compiler.compile_predicate(_, _, _, _)
  • added: const Compiler.FUNCALL
  • added: const Compiler.META
  • added: const Compiler.NUMBER
  • added: method Compiler.compile_arg(_)
  • added: method Compiler.compile_args(_)
  • added: method Compiler.compile_funcall(_, _, _, _)
  • added: method Compiler.emit_trailing_params()
  • added: method Compiler.get_param(_)
  • added: method Macros.node_search_body(_, _, _, _, _)