relnotes/v0.35.0.md
Special thanks to Alex Dowad who contributed an amazing number of bug fixes and improvements for this release! Much appreciated!
And happy birthday to my beloved granny Vasilka, who turns today 78 years! This release is dedicated to her!
ExtraDetails supports addition of Details param to all cops to allow extra details on offense to be displayed. (@tansaku)Style/StabbyLambdaParentheses will find and correct cases where a stabby lambda's parameters are not wrapped in parentheses. (@hmadison)Style/TrailingUnderscoreVariable will now register an offense for *_. (@rrosenblum)Style/TrailingUnderscoreVariable now has a configuration to remove named underscore variables (Defaulted to false). (@rrosenblum)Performance/FixedSize will register an offense when calling length, size, or count on statically sized objected (strings, symbols, arrays, and hashes). (@rrosenblum)Style/NestedModifier checks for nested if, unless, while and until modifier statements. (@lumeet)inherit_gem configuration to inherit a config file from an installed gem (originally requested in #290). (@jhansche)StyleGuide parameters in local configuration for all cops, so users can add references to custom style guide documents. (@cornelius)UnusedMethodArgument cop allows configuration to skip keyword arguments. (@apiology)Lint/Debugger cop now checks for Pry.rescue. (@rrosenblum)Style/FirstArrayElementLineBreak checks for a line break before the first element in a multi-line array. (@panthomakos)Style/FirstHashElementLineBreak checks for a line break before the first element in a multi-line hash. (@panthomakos)Style/FirstMethodArgumentLineBreak checks for a line break before the first argument in a multi-line method call. (@panthomakos)Style/FirstMethodParameterLineBreak checks for a line break before the first parameter in a multi-line method parameter definition. (@panthomakos)Rails/PluralizationGrammar cop, checks for incorrect grammar when using methods like 3.day.ago, when you should write 3.days.ago. (@maxjacobson)Lint/Eval cop does not warn about "security risk" when eval argument is a string literal without interpolations. (@alexdowad)Style/VariableName cop checks naming style of method parameters. (@alexdowad)braces_for_chaining for Style/BlockDelimiters cop enforces braces on a multi-line block if its return value is being chained with another method. (@panthomakos)Lint/LiteralInCondition warns if a symbol or dynamic symbol is used as a condition. (@alexdowad)Style/TrailingComma doesn't add a trailing comma to a multiline method chain which is the only arg to a method call. (@alexdowad)CircularArgumentReference cop updated to lint for ordinal circular argument references on top of optional keyword arguments. (@maxjacobson)IgnoreEmptyMethods config parameter for Lint/UnusedMethodArgument and IgnoreEmptyBlocks config parameter for Lint/UnusedBlockArgument cops. (@alexdowad)Style/MethodDefParentheses supports new 'require_no_parentheses_except_multiline' style. (@alexdowad)Style/AlignParameters also checks parameter alignment for method definitions. (@alexdowad)NameWhitelist configuration parameter for Style/PredicateName can be used to suppress errors on known-good predicate names. (@alexdowad)Style/Documentation recognizes 'Constant = Class.new' as a class definition. (@alexdowad)Style/IndentHash. (@alexdowad)Style/Next can autocorrect. (@alexdowad)+ in ExtraSpacing cop. (@jonas054)Exclude into Exclude lists in .rubocop_todo.yml. (@jonas054)Style/IfUnlessModifier accepts blocks followed by a chained call. (@lumeet)Exclude paths in $HOME/.rubocop_todo.yml be relative to current directory. (@jonas054)AllowIfMethodIsEmpty is false in Style/SingleLineMethods. (@jonas054)Style/TrailingUnderscoreVariable when the underscore variable is preceded by a splat variable. (@rrosenblum)Style/ExtraSpacing. (@jonas054)ConfigurableNaming#class_emitter_method? error when handling singleton class methods. (@palkan)Performance/StringReplacement for regex with options. (@rrosenblum)Style/UnneededPercentQ condition for single-quoted literal containing interpolation-like string. (@eagletmt)--only Lint/Syntax and --except Lint/Syntax correctly. (@jonas054)case as an argument correctly in Lint/EndAlignment. (@lumeet)Style/IndentationWidth. (@lumeet)Performance/Size for count with an argument. (@rrosenblum)Style/SpaceAroundOperators. (@lumeet)Lint/FormatParameterMismatch, don't register an offense if either argument to % is not a literal. (@alexdowad)Style/Encoding will now place the encoding comment on the second line if the first line is a shebang. (@rrosenblum)Style/InitialIndentation cop doesn't error out when a line begins with an integer literal. (@alexdowad)Style/DotPosition, don't "correct" (and break) a method call which has a line comment (or blank line) between the dot and the selector. (@alexdowad)Lint/NonLocalExitFromIterator does not warn about return in a block which is passed to Module#define_method. (@alexdowad)Rainbow reference with Colorizable#yellow. (@minustehbare)Style/Copyright is misconfigured. (@alexdowad)Style/EachWithObject, don't replace reduce with each_with_object if the accumulator parameter is assigned to in the block. (@alexdowad)Lint/UselessAssignment doesn't erroneously identify assignments in identical if branches as useless. (@alexdowad)Style/IfUnlessModifier cop parenthesizes autocorrected code when necessary due to operator precedence, to avoid changing its meaning. (@alexdowad)Lint/UnneededDisable work with --auto-correct. (@jonas054)Style/MethodCallParentheses doesn't fail on obj.method ||= func(). (@alexdowad)Style/ParallelAssignment reorders assignment statements, if necessary, to avoid breaking code. (@alexdowad)Style/MultilineOperationAlignment does not try to align the receiver and selector of a method call if both are on the LHS of an assignment. (@alexdowad)