Hello community, here is the log from the commit of package rubygem-rubocop for openSUSE:Factory checked in at 2019-10-16 09:18:03 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rubygem-rubocop (Old) and /work/SRC/openSUSE:Factory/.rubygem-rubocop.new.2352 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rubygem-rubocop" Wed Oct 16 09:18:03 2019 rev:2 rq:738562 version:0.75.1 Changes: -------- --- /work/SRC/openSUSE:Factory/rubygem-rubocop/rubygem-rubocop.changes 2019-10-12 22:30:20.531676378 +0200 +++ /work/SRC/openSUSE:Factory/.rubygem-rubocop.new.2352/rubygem-rubocop.changes 2019-10-16 09:18:20.134995889 +0200 @@ -1,0 +2,39 @@ +Tue Oct 15 08:31:57 UTC 2019 - Dan Čermák <dcer...@suse.com> + +- Update to 0.75.1 + + ### Bug fixes + + * [#7391](https://github.com/rubocop-hq/rubocop/issues/7391): Support pacman + formatter on Windows. ([@laurenball][]) + * [#7407](https://github.com/rubocop-hq/rubocop/issues/7407): Make + `Style/FormatStringToken` work inside hashes. ([@buehmann][]) + * [#7389](https://github.com/rubocop-hq/rubocop/issues/7389): Fix an issue + where passing a formatter might result in an error depending on what + character it started with. ([@jfhinchcliffe][]) + * [#7397](https://github.com/rubocop-hq/rubocop/issues/7397): Fix extra + comments being added to the correction of + `Style/SafeNavigation`. ([@rrosenblum][]) + * [#7378](https://github.com/rubocop-hq/rubocop/pull/7378): Fix heredoc edge + cases in `Layout/EmptyLineAfterGuardClause`. ([@gsamokovarov][]) + * [#7404](https://github.com/rubocop-hq/rubocop/issues/7404): Fix a false + negative for `Layout/IndentAssignment` when multiple assignment with line + breaks on each line. ([@koic][]) + + ### Changes + + * [#7410](https://github.com/rubocop-hq/rubocop/issues/7410): + `Style/FormatStringToken` now finds unannotated format sequences in `printf` + arguments. ([@buehmann][]) + * [#6964](https://github.com/rubocop-hq/rubocop/issues/6964): Set default + `IgnoreCopDirectives` to `true` for `Metrics/LineLength`. ([@jdkaplan][]) + + [@laurenball]: https://github.com/laurenball + [@buehmann]: https://github.com/buehmann + [@jfhinchcliffe]: https://github.com/jfhinchcliffe + [@rrosenblum]: https://github.com/rrosenblum + [@gsamokovarov]: https://github.com/gsamokovarov + [@koic]: https://github.com/koic + [@jdkaplan]: https://github.com/jdkaplan + +------------------------------------------------------------------- Old: ---- rubocop-0.75.0.gem New: ---- rubocop-0.75.1.gem ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rubygem-rubocop.spec ++++++ --- /var/tmp/diff_new_pack.LV57Gm/_old 2019-10-16 09:18:21.018993610 +0200 +++ /var/tmp/diff_new_pack.LV57Gm/_new 2019-10-16 09:18:21.022993600 +0200 @@ -12,7 +12,7 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # @@ -24,14 +24,14 @@ # Name: rubygem-rubocop -Version: 0.75.0 +Version: 0.75.1 Release: 0 %define mod_name rubocop %define mod_full_name %{mod_name}-%{version} BuildRoot: %{_tmppath}/%{name}-%{version}-build -BuildRequires: ruby-macros >= 5 BuildRequires: %{ruby >= 2.3.0} BuildRequires: %{rubygem gem2rpm} +BuildRequires: ruby-macros >= 5 BuildRequires: update-alternatives Url: https://github.com/rubocop-hq/rubocop Source: https://rubygems.org/gems/%{mod_full_name}.gem ++++++ rubocop-0.75.0.gem -> rubocop-0.75.1.gem ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/README.md new/README.md --- old/README.md 2019-09-30 19:05:10.000000000 +0200 +++ new/README.md 2019-10-14 18:57:49.000000000 +0200 @@ -53,7 +53,7 @@ might want to use a conservative version lock in your `Gemfile`: ```rb -gem 'rubocop', '~> 0.75.0', require: false +gem 'rubocop', '~> 0.75.1', require: false ``` ## Quickstart Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/default.yml new/config/default.yml --- old/config/default.yml 2019-09-30 19:05:10.000000000 +0200 +++ new/config/default.yml 2019-10-14 18:57:49.000000000 +0200 @@ -1815,7 +1815,7 @@ - https # The IgnoreCopDirectives option causes the LineLength rule to ignore cop # directives like '# rubocop: enable ...' when calculating a line's length. - IgnoreCopDirectives: false + IgnoreCopDirectives: true # The IgnoredPatterns option is a list of !ruby/regexp and/or string # elements. Strings will be converted to Regexp objects. A line that matches # any regular expression listed in this option will be ignored by LineLength. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/cop/correctors/percent_literal_corrector.rb new/lib/rubocop/cop/correctors/percent_literal_corrector.rb --- old/lib/rubocop/cop/correctors/percent_literal_corrector.rb 2019-09-30 19:05:10.000000000 +0200 +++ new/lib/rubocop/cop/correctors/percent_literal_corrector.rb 2019-10-14 18:57:49.000000000 +0200 @@ -98,7 +98,7 @@ end def fix_escaped_content(word_node, escape, delimiters) - content = word_node.children.first.to_s + content = +word_node.children.first.to_s content = escape_string(content) if escape substitute_escaped_delimiters(content, delimiters) content diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb new/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb --- old/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb 2019-09-30 19:05:10.000000000 +0200 +++ new/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb 2019-10-14 18:57:49.000000000 +0200 @@ -45,7 +45,7 @@ return if correct_style?(node) if node.modifier_form? && last_argument_is_heredoc?(node) - heredoc_node = last_argument(node) + heredoc_node = last_heredoc_argument(node) return if next_line_empty?(heredoc_line(node, heredoc_node)) @@ -109,16 +109,27 @@ def last_argument_is_heredoc?(node) last_children = node.if_branch - return false unless last_children&.send_type? - last_argument = last_argument(node) - - last_argument.respond_to?(:heredoc?) && last_argument.heredoc? + heredoc?(last_heredoc_argument(node)) end - def last_argument(node) - node.if_branch.children.last + def last_heredoc_argument(node) + n = if node.respond_to?(:if_branch) + node.if_branch.children.last + else + node + end + + return n if heredoc?(n) + return unless n.respond_to?(:arguments) + + n.arguments.each do |argument| + node = last_heredoc_argument(argument) + return node if node + end + + return last_heredoc_argument(n.receiver) if n.respond_to?(:receiver) end def heredoc_line(node, heredoc_node) @@ -129,6 +140,10 @@ node.last_line + num_of_heredoc_lines + END_OF_HEREDOC_LINE end + def heredoc?(node) + node.respond_to?(:heredoc?) && node.heredoc? + end + def offense_location(node) if node.loc.respond_to?(:end) && node.loc.end :end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/cop/layout/empty_line_after_magic_comment.rb new/lib/rubocop/cop/layout/empty_line_after_magic_comment.rb --- old/lib/rubocop/cop/layout/empty_line_after_magic_comment.rb 2019-09-30 19:05:10.000000000 +0200 +++ new/lib/rubocop/cop/layout/empty_line_after_magic_comment.rb 2019-10-14 18:57:49.000000000 +0200 @@ -55,8 +55,8 @@ source .comments .take_while { |comment| comment.loc.line < source.ast.loc.line } - .select { |comment| MagicComment.parse(comment.text).any? } - .last + .reverse + .find { |comment| MagicComment.parse(comment.text).any? } end end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/cop/layout/empty_lines_around_class_body.rb new/lib/rubocop/cop/layout/empty_lines_around_class_body.rb --- old/lib/rubocop/cop/layout/empty_lines_around_class_body.rb 2019-09-30 19:05:10.000000000 +0200 +++ new/lib/rubocop/cop/layout/empty_lines_around_class_body.rb 2019-10-14 18:57:49.000000000 +0200 @@ -36,7 +36,7 @@ # # end # - # @example Enforcedstyle: beginning_only + # @example EnforcedStyle: beginning_only # # good # # class Foo @@ -46,7 +46,7 @@ # end # end # - # @example Enforcedstyle: ending_only + # @example EnforcedStyle: ending_only # # good # # class Foo diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/cop/layout/indent_assignment.rb new/lib/rubocop/cop/layout/indent_assignment.rb --- old/lib/rubocop/cop/layout/indent_assignment.rb 2019-09-30 19:05:10.000000000 +0200 +++ new/lib/rubocop/cop/layout/indent_assignment.rb 2019-10-14 18:57:49.000000000 +0200 @@ -42,7 +42,8 @@ end def leftmost_multiple_assignment(node) - return node unless node.parent&.assignment? + return node unless same_line?(node, node.parent) && + node.parent.assignment? leftmost_multiple_assignment(node.parent) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/cop/lint/unused_block_argument.rb new/lib/rubocop/cop/lint/unused_block_argument.rb --- old/lib/rubocop/cop/lint/unused_block_argument.rb 2019-09-30 19:05:10.000000000 +0200 +++ new/lib/rubocop/cop/lint/unused_block_argument.rb 2019-10-14 18:57:49.000000000 +0200 @@ -6,9 +6,7 @@ # This cop checks for unused block arguments. # # @example - # # # bad - # # do_something do |used, unused| # puts used # end @@ -21,10 +19,7 @@ # puts :baz # end # - # @example - # - # #good - # + # # good # do_something do |used, _unused| # puts used # end @@ -36,6 +31,27 @@ # define_method(:foo) do |_bar| # puts :baz # end + # + # @example IgnoreEmptyBlocks: true (default) + # # good + # do_something { |unused| } + # + # @example IgnoreEmptyBlocks: false + # # bad + # do_something { |unused| } + # + # @example AllowUnusedKeywordArguments: false (default) + # # bad + # do_something do |unused: 42| + # foo + # end + # + # @example AllowUnusedKeywordArguments: true + # # good + # do_something do |unused: 42| + # foo + # end + # class UnusedBlockArgument < Cop include UnusedArgument diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/cop/lint/unused_method_argument.rb new/lib/rubocop/cop/lint/unused_method_argument.rb --- old/lib/rubocop/cop/lint/unused_method_argument.rb 2019-09-30 19:05:10.000000000 +0200 +++ new/lib/rubocop/cop/lint/unused_method_argument.rb 2019-10-14 18:57:49.000000000 +0200 @@ -6,20 +6,38 @@ # This cop checks for unused method arguments. # # @example - # # # bad - # # def some_method(used, unused, _unused_but_allowed) # puts used # end # - # @example - # # # good - # # def some_method(used, _unused, _unused_but_allowed) # puts used # end + # + # @example AllowUnusedKeywordArguments: false (default) + # # bad + # def do_something(used, unused: 42) + # used + # end + # + # @example AllowUnusedKeywordArguments: true + # # good + # def do_something(used, unused: 42) + # used + # end + # + # @example IgnoreEmptyMethods: true (default) + # # good + # def do_something(unused) + # end + # + # @example IgnoreEmptyMethods: false + # # bad + # def do_something(unused) + # end + # class UnusedMethodArgument < Cop include UnusedArgument diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/cop/lint/void.rb new/lib/rubocop/cop/lint/void.rb --- old/lib/rubocop/cop/lint/void.rb 2019-09-30 19:05:10.000000000 +0200 +++ new/lib/rubocop/cop/lint/void.rb 2019-10-14 18:57:49.000000000 +0200 @@ -6,55 +6,36 @@ # This cop checks for operators, variables, literals, and nonmutating # methods used in void context. # - # @example - # + # @example CheckForMethodsWithNoSideEffects: false (default) # # bad - # # def some_method # some_num * 10 # do_something # end # - # @example - # - # # bad - # # def some_method(some_var) # some_var # do_something # end # - # @example - # - # # bad, when CheckForMethodsWithNoSideEffects is set true - # + # @example CheckForMethodsWithNoSideEffects: true + # # bad # def some_method(some_array) # some_array.sort # do_something(some_array) # end # - # @example - # # # good - # # def some_method # do_something # some_num * 10 # end # - # @example - # - # # good - # # def some_method(some_var) # do_something # some_var # end # - # @example - # - # # good, when CheckForMethodsWithNoSideEffects is set true - # # def some_method(some_array) # some_array.sort! # do_something(some_array) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/cop/style/documentation_method.rb new/lib/rubocop/cop/style/documentation_method.rb --- old/lib/rubocop/cop/style/documentation_method.rb 2019-09-30 19:05:10.000000000 +0200 +++ new/lib/rubocop/cop/style/documentation_method.rb 2019-10-14 18:57:49.000000000 +0200 @@ -47,6 +47,50 @@ # def foo.bar # puts baz # end + # + # @example RequireForNonPublicMethods: false (default) + # # good + # class Foo + # protected + # def do_something + # end + # end + # + # class Foo + # private + # def do_something + # end + # end + # + # @example RequireForNonPublicMethods: true + # # bad + # class Foo + # protected + # def do_something + # end + # end + # + # class Foo + # private + # def do_something + # end + # end + # + # # good + # class Foo + # protected + # # Documentation + # def do_something + # end + # end + # + # class Foo + # private + # # Documentation + # def do_something + # end + # end + # class DocumentationMethod < Cop include DocumentationComment include DefNode diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/cop/style/expand_path_arguments.rb new/lib/rubocop/cop/style/expand_path_arguments.rb --- old/lib/rubocop/cop/style/expand_path_arguments.rb 2019-09-30 19:05:10.000000000 +0200 +++ new/lib/rubocop/cop/style/expand_path_arguments.rb 2019-10-14 18:57:49.000000000 +0200 @@ -160,7 +160,7 @@ def depth(current_path) paths = current_path.split(File::SEPARATOR) - paths.reject { |path| path == '.' }.count + paths.count { |path| path != '.' } end def parent_path(current_path) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/cop/style/format_string_token.rb new/lib/rubocop/cop/style/format_string_token.rb --- old/lib/rubocop/cop/style/format_string_token.rb 2019-09-30 19:05:10.000000000 +0200 +++ new/lib/rubocop/cop/style/format_string_token.rb 2019-10-14 18:57:49.000000000 +0200 @@ -8,7 +8,7 @@ # **Note:** # `unannotated` style cop only works for strings # which are passed as arguments to those methods: - # `sprintf`, `format`, `%`. + # `printf`, `sprintf`, `format`, `%`. # The reason is that *unannotated* format is very similar # to encoded URLs or Date/Time formatting strings. # @@ -41,10 +41,7 @@ class FormatStringToken < Cop include ConfigurableEnforcedStyle - FORMAT_STRING_METHODS = %i[sprintf format %].freeze - def on_str(node) - return if placeholder_argument?(node) return if node.each_ancestor(:xstr, :regexp).any? tokens(node) do |detected_style, token_range| @@ -61,14 +58,16 @@ private - def includes_format_methods?(node) - node.each_ancestor(:send).any? do |ancestor| - FORMAT_STRING_METHODS.include?(ancestor.method_name) - end - end + def_node_matcher :format_string_in_typical_context?, <<~PATTERN + { + ^(send _ {:format :sprintf :printf} %0 ...) + ^(send %0 :% _) + } + PATTERN def unannotated_format?(node, detected_style) - detected_style == :unannotated && !includes_format_methods?(node) + detected_style == :unannotated && + !format_string_in_typical_context?(node) end def message(detected_style) @@ -95,11 +94,7 @@ if source_map.is_a?(Parser::Source::Map::Heredoc) source_map.heredoc_body elsif source_map.begin - slice_source( - source_map.expression, - source_map.expression.begin_pos + 1, - source_map.expression.end_pos - 1 - ) + source_map.expression.adjust(begin_pos: +1, end_pos: -1) else source_map.expression end @@ -110,30 +105,14 @@ format_string.format_sequences.each do |seq| detected_style = seq.style - token = slice_source( - contents, - contents.begin_pos + seq.begin_pos, - contents.begin_pos + seq.end_pos + token = contents.begin.adjust( + begin_pos: seq.begin_pos, + end_pos: seq.end_pos ) yield(detected_style, token) end end - - def slice_source(source_range, new_begin, new_end) - Parser::Source::Range.new( - source_range.source_buffer, - new_begin, - new_end - ) - end - - def placeholder_argument?(node) - return false unless node.parent - return true if node.parent.pair_type? - - placeholder_argument?(node.parent) - end end end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/cop/style/method_call_with_args_parentheses.rb new/lib/rubocop/cop/style/method_call_with_args_parentheses.rb --- old/lib/rubocop/cop/style/method_call_with_args_parentheses.rb 2019-09-30 19:05:10.000000000 +0200 +++ new/lib/rubocop/cop/style/method_call_with_args_parentheses.rb 2019-10-14 18:57:49.000000000 +0200 @@ -64,20 +64,6 @@ # # okay with `^assert` listed in `IgnoredPatterns` # assert_equal 'test', x # - # # IgnoreMacros: true (default) - # - # # good - # class Foo - # bar :baz - # end - # - # # IgnoreMacros: false - # - # # bad - # class Foo - # bar :baz - # end - # # @example EnforcedStyle: omit_parentheses # # # bad @@ -92,7 +78,21 @@ # # good # foo.enforce strict: true # - # # AllowParenthesesInMultilineCall: false (default) + # @example IgnoreMacros: true (default) + # + # # good + # class Foo + # bar :baz + # end + # + # @example IgnoreMacros: false + # + # # bad + # class Foo + # bar :baz + # end + # + # @example AllowParenthesesInMultilineCall: false (default) # # # bad # foo.enforce( @@ -103,7 +103,7 @@ # foo.enforce \ # strict: true # - # # AllowParenthesesInMultilineCall: true + # @example AllowParenthesesInMultilineCall: true # # # good # foo.enforce( @@ -114,7 +114,7 @@ # foo.enforce \ # strict: true # - # # AllowParenthesesInChaining: false (default) + # @example AllowParenthesesInChaining: false (default) # # # bad # foo().bar(1) @@ -122,7 +122,7 @@ # # good # foo().bar 1 # - # # AllowParenthesesInChaining: true + # @example AllowParenthesesInChaining: true # # # good # foo().bar(1) @@ -130,7 +130,7 @@ # # good # foo().bar 1 # - # # AllowParenthesesInCamelCaseMethod: false (default) + # @example AllowParenthesesInCamelCaseMethod: false (default) # # # bad # Array(1) @@ -138,7 +138,7 @@ # # good # Array 1 # - # # AllowParenthesesInCamelCaseMethod: true + # @example AllowParenthesesInCamelCaseMethod: true # # # good # Array(1) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/cop/style/redundant_return.rb new/lib/rubocop/cop/style/redundant_return.rb --- old/lib/rubocop/cop/style/redundant_return.rb 2019-09-30 19:05:10.000000000 +0200 +++ new/lib/rubocop/cop/style/redundant_return.rb 2019-10-14 18:57:49.000000000 +0200 @@ -35,6 +35,18 @@ # end # end # + # @example AllowMultipleReturnValues: false (default) + # # bad + # def test + # return x, y + # end + # + # @example AllowMultipleReturnValues: true + # # good + # def test + # return x, y + # end + # class RedundantReturn < Cop include RangeHelp diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/cop/style/safe_navigation.rb new/lib/rubocop/cop/style/safe_navigation.rb --- old/lib/rubocop/cop/style/safe_navigation.rb 2019-09-30 19:05:10.000000000 +0200 +++ new/lib/rubocop/cop/style/safe_navigation.rb 2019-10-14 18:57:49.000000000 +0200 @@ -120,7 +120,7 @@ corrector.remove(begin_range(node, body)) corrector.remove(end_range(node, body)) corrector.insert_before(method_call.loc.dot, '&') - handle_comments(corrector, method_call) + handle_comments(corrector, node, method_call) add_safe_nav_to_all_methods_in_chain(corrector, method_call, body) end @@ -128,12 +128,20 @@ private - def handle_comments(corrector, method_call) + def handle_comments(corrector, node, method_call) return if processed_source.comments.empty? - comments = processed_source.comments.map(&:text).join("\n") corrector.insert_before(method_call.loc.expression, - comments + "\n") + "#{comments(node).join("\n")}\n") + end + + def comments(node) + comments = processed_source.comments.select do |comment| + comment.loc.first_line >= node.loc.first_line && + comment.loc.last_line <= node.loc.last_line + end + + comments.map(&:text) end def allowed_if_condition?(node) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/cop/style/semicolon.rb new/lib/rubocop/cop/style/semicolon.rb --- old/lib/rubocop/cop/style/semicolon.rb 2019-09-30 19:05:10.000000000 +0200 +++ new/lib/rubocop/cop/style/semicolon.rb 2019-10-14 18:57:49.000000000 +0200 @@ -6,6 +6,9 @@ # This cop checks for multiple expressions placed on the same line. # It also checks for lines terminated with a semicolon. # + # This cop has `AllowAsExpressionSeparator` configuration option. + # It allows `;` to separate several expressions on the same line. + # # @example # # bad # foo = 1; bar = 2; @@ -15,6 +18,14 @@ # foo = 1 # bar = 2 # baz = 3 + # + # @example AllowAsExpressionSeparator: false (default) + # # bad + # foo = 1; bar = 2 + # + # @example AllowAsExpressionSeparator: true + # # good + # foo = 1; bar = 2 class Semicolon < Cop include RangeHelp diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/formatter/clang_style_formatter.rb new/lib/rubocop/formatter/clang_style_formatter.rb --- old/lib/rubocop/formatter/clang_style_formatter.rb 2019-09-30 19:05:10.000000000 +0200 +++ new/lib/rubocop/formatter/clang_style_formatter.rb 2019-10-14 18:57:49.000000000 +0200 @@ -15,9 +15,14 @@ private def report_offense(file, offense) - output.printf("%s:%d:%d: %s: %s\n", - cyan(smart_path(file)), offense.line, offense.real_column, - colored_severity_code(offense), message(offense)) + output.printf( + "%<path>s:%<line>d:%<column>d: %<severity>s: %<message>s\n", + path: cyan(smart_path(file)), + line: offense.line, + column: offense.real_column, + severity: colored_severity_code(offense), + message: message(offense) + ) # rubocop:disable Lint/HandleExceptions begin diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/formatter/emacs_style_formatter.rb new/lib/rubocop/formatter/emacs_style_formatter.rb --- old/lib/rubocop/formatter/emacs_style_formatter.rb 2019-09-30 19:05:10.000000000 +0200 +++ new/lib/rubocop/formatter/emacs_style_formatter.rb 2019-10-14 18:57:49.000000000 +0200 @@ -8,20 +8,30 @@ class EmacsStyleFormatter < BaseFormatter def file_finished(file, offenses) offenses.each do |o| - message = - if o.corrected_with_todo? - "[Todo] #{o.message}" - elsif o.corrected? - "[Corrected] #{o.message}" - else - o.message - end - - output.printf("%s:%d:%d: %s: %s\n", - file, o.line, o.real_column, o.severity.code, - message.tr("\n", ' ')) + output.printf( + "%<path>s:%<line>d:%<column>d: %<severity>s: %<message>s\n", + path: file, + line: o.line, + column: o.real_column, + severity: o.severity.code, + message: message(o) + ) end end + + private + + def message(offense) + message = + if offense.corrected_with_todo? + "[Todo] #{offense.message}" + elsif offense.corrected? + "[Corrected] #{offense.message}" + else + offense.message + end + message.tr("\n", ' ') + end end end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/formatter/file_list_formatter.rb new/lib/rubocop/formatter/file_list_formatter.rb --- old/lib/rubocop/formatter/file_list_formatter.rb 2019-09-30 19:05:10.000000000 +0200 +++ new/lib/rubocop/formatter/file_list_formatter.rb 2019-10-14 18:57:49.000000000 +0200 @@ -13,7 +13,7 @@ def file_finished(file, offenses) return if offenses.empty? - output.printf("%s\n", file) + output.printf("%<path>s\n", path: file) end end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/formatter/formatter_set.rb new/lib/rubocop/formatter/formatter_set.rb --- old/lib/rubocop/formatter/formatter_set.rb 2019-09-30 19:05:10.000000000 +0200 +++ new/lib/rubocop/formatter/formatter_set.rb 2019-10-14 18:57:49.000000000 +0200 @@ -9,21 +9,21 @@ # which invoke same method of each formatters. class FormatterSet < Array BUILTIN_FORMATTERS_FOR_KEYS = { - 'progress' => ProgressFormatter, - 'simple' => SimpleTextFormatter, - 'clang' => ClangStyleFormatter, - 'fuubar' => FuubarStyleFormatter, - 'emacs' => EmacsStyleFormatter, - 'json' => JSONFormatter, - 'html' => HTMLFormatter, - 'files' => FileListFormatter, - 'offenses' => OffenseCountFormatter, - 'disabled' => DisabledLinesFormatter, - 'worst' => WorstOffendersFormatter, - 'tap' => TapFormatter, - 'quiet' => QuietFormatter, - 'autogenconf' => AutoGenConfigFormatter, - 'pacman' => PacmanFormatter + '[a]utogenconf' => AutoGenConfigFormatter, + '[c]lang' => ClangStyleFormatter, + '[d]isabled' => DisabledLinesFormatter, + '[e]macs' => EmacsStyleFormatter, + '[fi]les' => FileListFormatter, + '[fu]ubar' => FuubarStyleFormatter, + '[h]tml' => HTMLFormatter, + '[j]son' => JSONFormatter, + '[o]ffenses' => OffenseCountFormatter, + '[pa]cman' => PacmanFormatter, + '[p]rogress' => ProgressFormatter, + '[q]uiet' => QuietFormatter, + '[s]imple' => SimpleTextFormatter, + '[t]ap' => TapFormatter, + '[w]orst' => WorstOffendersFormatter }.freeze FORMATTER_APIS = %i[started finished].freeze @@ -82,7 +82,7 @@ def builtin_formatter_class(specified_key) matching_keys = BUILTIN_FORMATTERS_FOR_KEYS.keys.select do |key| - key.start_with?(specified_key) + key =~ /^\[#{specified_key}\]/ || specified_key == key.delete('[]') end raise %(No formatter for "#{specified_key}") if matching_keys.empty? diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/formatter/pacman_formatter.rb new/lib/rubocop/formatter/pacman_formatter.rb --- old/lib/rubocop/formatter/pacman_formatter.rb 2019-09-30 19:05:10.000000000 +0200 +++ new/lib/rubocop/formatter/pacman_formatter.rb 2019-10-14 18:57:49.000000000 +0200 @@ -2,7 +2,7 @@ module RuboCop module Formatter - # This formatter prints a PACDOT per every file to be analized. + # This formatter prints a PACDOT per every file to be analyzed. # Pacman will "eat" one PACDOT per file when no offense is detected. # Otherwise it will print a Ghost. # This is inspired by the Pacman formatter for RSpec by Carlos Rojas. @@ -49,7 +49,7 @@ def cols @cols ||= begin - width = `tput cols`.chomp.to_i + _height, width = $stdout.winsize width.nil? || width.zero? ? FALLBACK_TERMINAL_WIDTH : width end end @@ -68,7 +68,7 @@ def step(character) regex = /#{Regexp.quote(PACMAN)}|#{Regexp.quote(PACDOT)}/ @progress_line = @progress_line.sub(regex, character) - output.printf("%s\r", @progress_line) + output.printf("%<line>s\r", line: @progress_line) return unless @progress_line[-1] =~ /ᗣ|\./ @repetitions += 1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/formatter/simple_text_formatter.rb new/lib/rubocop/formatter/simple_text_formatter.rb --- old/lib/rubocop/formatter/simple_text_formatter.rb 2019-09-30 19:05:10.000000000 +0200 +++ new/lib/rubocop/formatter/simple_text_formatter.rb 2019-10-14 18:57:49.000000000 +0200 @@ -42,9 +42,13 @@ output.puts yellow("== #{smart_path(file)} ==") offenses.each do |o| - output.printf("%s:%3d:%3d: %s\n", - colored_severity_code(o), - o.line, o.real_column, message(o)) + output.printf( + "%<severity>s:%3<line>d:%3<column>d: %<message>s\n", + severity: colored_severity_code(o), + line: o.line, + column: o.real_column, + message: message(o) + ) end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/formatter/tap_formatter.rb new/lib/rubocop/formatter/tap_formatter.rb --- old/lib/rubocop/formatter/tap_formatter.rb 2019-09-30 19:05:10.000000000 +0200 +++ new/lib/rubocop/formatter/tap_formatter.rb 2019-10-14 18:57:49.000000000 +0200 @@ -42,9 +42,14 @@ end def report_offense(file, offense) - output.printf("# %s:%d:%d: %s: %s\n", - cyan(smart_path(file)), offense.line, offense.real_column, - colored_severity_code(offense), message(offense)) + output.printf( + "# %<path>s:%<line>d:%<column>d: %<severity>s: %<message>s\n", + path: cyan(smart_path(file)), + line: offense.line, + column: offense.real_column, + severity: colored_severity_code(offense), + message: message(offense) + ) # rubocop:disable Lint/HandleExceptions begin diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/options.rb new/lib/rubocop/options.rb --- old/lib/rubocop/options.rb 2019-09-30 19:05:10.000000000 +0200 +++ new/lib/rubocop/options.rb 2019-10-14 18:57:49.000000000 +0200 @@ -367,8 +367,9 @@ # This module contains help texts for command line options. module OptionsHelp MAX_EXCL = RuboCop::Options::DEFAULT_MAXIMUM_EXCLUSION_ITEMS.to_s - # rubocop:disable Metrics/LineLength + FORMATTER_OPTION_LIST = RuboCop::Formatter::FormatterSet::BUILTIN_FORMATTERS_FOR_KEYS.keys + TEXT = { only: 'Run only the given cop(s).', only_guide_cops: ['Run only cops for rules that link to a', @@ -407,21 +408,8 @@ format: ['Choose an output formatter. This option', 'can be specified multiple times to enable', 'multiple formatters at the same time.', - ' [p]rogress (default)', - ' [s]imple', - ' [c]lang', - ' [d]isabled cops via inline comments', - ' [fu]ubar', - ' [pa]cman', - ' [e]macs', - ' [j]son', - ' [h]tml', - ' [fi]les', - ' [o]ffenses', - ' [w]orst', - ' [t]ap', - ' [q]uiet', - ' [a]utogenconf', + '[p]rogress is used by default', + *FORMATTER_OPTION_LIST.map { |item| " #{item}" }, ' custom formatter class name'], out: ['Write output to a file instead of STDOUT.', 'This option applies to the previously', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/version.rb new/lib/rubocop/version.rb --- old/lib/rubocop/version.rb 2019-09-30 19:05:10.000000000 +0200 +++ new/lib/rubocop/version.rb 2019-10-14 18:57:49.000000000 +0200 @@ -3,7 +3,7 @@ module RuboCop # This module holds the RuboCop version information. module Version - STRING = '0.75.0' + STRING = '0.75.1' MSG = '%<version>s (using Parser %<parser_version>s, running on ' \ '%<ruby_engine>s %<ruby_version>s %<ruby_platform>s)' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/metadata new/metadata --- old/metadata 2019-09-30 19:05:10.000000000 +0200 +++ new/metadata 2019-10-14 18:57:49.000000000 +0200 @@ -1,7 +1,7 @@ --- !ruby/object:Gem::Specification name: rubocop version: !ruby/object:Gem::Version - version: 0.75.0 + version: 0.75.1 platform: ruby authors: - Bozhidar Batsov @@ -10,7 +10,7 @@ autorequire: bindir: exe cert_chain: [] -date: 2019-09-30 00:00:00.000000000 Z +date: 2019-10-14 00:00:00.000000000 Z dependencies: - !ruby/object:Gem::Dependency name: jaro_winkler