relnotes/v0.20.0.md
There aren't many exciting new features this time around - our focus in 0.20 has been fixing most of the problems we introduced in 0.19. Apart from that we've added a few new cops and implemented auto-correct for a bunch of the existing cops. You'll also notice that the messages produced by most formatters a bit more colorful (and hopefully more readable as well).
You should also note that AllCops/Includes and AllCops/Excludes have been renamed, so you'll have to update your config files
accordingly.
Below is the list of all the gory details. Enjoy!
GuardClause checks for conditionals that can be replaced by guard clauses. (@bbatsov)EmptyInterpolation checks for empty interpolation in double-quoted strings. (@bbatsov)LineEndConcatenation cop << aware. (@mockdeep)--fail-level changes minimum severity for exit with error code. (@hiroponz)--force-exclusion forces excluding files specified in the configuration Exclude even if they are explicitly passed as arguments. (@yujinakayama)VariableInterpolation cop does auto-correction. (@bbatsov)Not cop does auto-correction. (@bbatsov)ClassMethods cop does auto-correction. (@bbatsov)StringConversionInInterpolation cop does auto-correction. (@bbatsov)NilComparison cop does auto-correction. (@bbatsov)NonNilComparison cop does auto-correction. (@bbatsov)NegatedIf cop does auto-correction. (@bbatsov)NegatedWhile cop does auto-correction. (@bbatsov)SpaceBeforeFirstArg checks for space between the method name and the first argument in method calls without parentheses. (@jonas054)SingleSpaceBeforeFirstArg checks that no more than one space is used between the method name and the first argument in method calls without parentheses. (@jonas054)disabled_lines displays cops and line ranges disabled by inline comments. (@fshowalter)UselessAccessModifiers checks for access modifiers that have no effect. (@fshowalter)FileName accepts multiple extensions. (@tamird)AllCops/Excludes and AllCops/Includes were renamed to AllCops/Exclude and AllCops/Include for consistency with standard cop params. (@bbatsov)NonNilCheck cop from NilComparison. (@bbatsov)FavorJoin to ArrayJoin. (@bbatsov)FavorUnlessOverNegatedIf to NegatedIf. (@bbatsov)FavorUntilOverNegatedWhileto NegatedWhile. (@bbatsov)HashMethods to DeprecatedHashMethods. (@bbatsov)ReadAttribute to ReadWriteAttribute and extended it to check for uses of write_attribute. (@bbatsov)BlockNesting not auto-generating correctly. (@tmorris-fiksu)LiteralInInterpolation. (@bbatsov)StringConversionInInterpolation. (@bbatsov)Include and Exclude paths in a .rubocop.yml are interpreted as relative to the directory of that file. (@jonas054)LiteralInInterpolation. (@bbatsov)rescue clauses in SignalException. (@bbatsov).rubocop.yml file. (@jonas054)LineEndConcatenation for % string literals. (@bbatsov)DeprecatedClassMethods (e.g. ::File.exists?). (@bbatsov)--only option now enables the given cop in case it is disabled in configuration. (@jonas054)vendor directories works. (@jonas054)SpaceAfterComma and SpaceInsideBrackets. (@hiroponz)HashSyntax when there is missing space around operator. (@jonas054)NumericLiterals. (@bbatsov)--auto-gen-config overwrite an existing rubocop-todo.yml file instead of asking the user to remove it. (@jonas054)_other as well as other in OpMethod. (@bbatsov)