Hello community, here is the log from the commit of package rubygem-rubocop for openSUSE:Factory checked in at 2020-11-29 12:28:58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rubygem-rubocop (Old) and /work/SRC/openSUSE:Factory/.rubygem-rubocop.new.5913 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rubygem-rubocop" Sun Nov 29 12:28:58 2020 rev:19 rq:851250 version:1.4.2 Changes: -------- --- /work/SRC/openSUSE:Factory/rubygem-rubocop/rubygem-rubocop.changes 2020-11-24 22:09:37.431336763 +0100 +++ /work/SRC/openSUSE:Factory/.rubygem-rubocop.new.5913/rubygem-rubocop.changes 2020-11-29 12:28:58.886035748 +0100 @@ -1,0 +2,75 @@ +Fri Nov 27 07:05:19 UTC 2020 - Dan Čermák <dcer...@suse.com> + +- New upstream release 1.4.2 + +### Bug fixes + +* [#9083](https://github.com/rubocop-hq/rubocop/pull/9083): Fix `Style/RedundantArgument` cop raising offense for more than one argument. ([@tejasbubane][]) +* [#9089](https://github.com/rubocop-hq/rubocop/issues/9089): Fix an incorrect auto-correct for `Style/FormatString` when using springf with second argument that uses an operator. ([@koic][]) +* [#7670](https://github.com/rubocop-hq/rubocop/issues/7670): Handle offenses inside heredocs for `-a --disable-uncorrectable`. ([@jonas054][]) +* [#9070](https://github.com/rubocop-hq/rubocop/issues/9070): Fix `Lint/UnmodifiedReduceAccumulator` error when the block does not have enough arguments. ([@dvandersluis][]) + +### Changes + +* [#9091](https://github.com/rubocop-hq/rubocop/pull/9091): Have `Naming/VariableNumber` accept _1, _2, ... ([@marcandre][]) +* [#9087](https://github.com/rubocop-hq/rubocop/pull/9087): Deprecate `EnforceSuperclass` module. ([@koic][]) + +[@tejasbubane]: https://github.com/tejasbubane +[@koic]: https://github.com/koic +[@jonas054]: https://github.com/jonas054 +[@dvandersluis]: https://github.com/dvandersluis +[@marcandre]: https://github.com/marcandre + +- New upstream release 1.4.1 + +### Bug fixes + +* [#9082](https://github.com/rubocop-hq/rubocop/pull/9082): Fix gemspec to include assets directory. ([@javierav][]) + +[@javierav]: https://github.com/javierav + +------------------------------------------------------------------- +Mon Nov 23 11:26:33 UTC 2020 - Dan Čermák <dcer...@suse.com> + +- New upstream release 1.4.0 + + Drop patch: + * 0001-Use-usr-bin-bash-instead-of-env-as-the-shebang.patch + (file no longer in the gem) + +### New features + +* [#7737](https://github.com/rubocop-hq/rubocop/issues/7737): Add new `Style/RedundantArgument` cop. ([@tejasbubane][]) +* [#9064](https://github.com/rubocop-hq/rubocop/issues/9064): Add `EmptyLineBetweenMethodDefs`, `EmptyLineBetweenClassDefs` and `EmptyLineBetweenModuleDefs` config options for `Layout/EmptyLineBetweenDefs` cop. ([@tejasbubane][]) +* [#9043](https://github.com/rubocop-hq/rubocop/pull/9043): Add `--stderr` to write all output to stderr except for the autocorrected source. ([@knu][]) + +### Bug fixes + +* [#9067](https://github.com/rubocop-hq/rubocop/pull/9067): Fix an incorrect auto-correct for `Lint::AmbiguousRegexpLiteral` when passing in a regexp to a method with no receiver. ([@amatsuda][]) +* [#9060](https://github.com/rubocop-hq/rubocop/issues/9060): Fix an error for `Layout/SpaceAroundMethodCallOperator` when using `__ENCODING__`. ([@koic][]) +* [#7338](https://github.com/rubocop-hq/rubocop/issues/7338): Handle assignment with `[]=` in `MultilineMethodCallIndentation`. ([@jonas054][]) + +* [#7726](https://github.com/rubocop-hq/rubocop/issues/7726): Fix `MultilineMethodCallIndentation` indentation inside square brackets. ([@jonas054][]) +* [#8857](https://github.com/rubocop-hq/rubocop/issues/8857): Improve how `Exclude` properties are generated by `--auto-gen-config`. ([@jonas054][]) + +### Changes + +* [#8788](https://github.com/rubocop-hq/rubocop/issues/8788): Change `Style/Documentation` to not trigger offense with only macros. ([@tejasbubane][]) +* [#8993](https://github.com/rubocop-hq/rubocop/issues/8993): Allow `ExcludedMethods` config of `Metrics/MethodLength` cop to contain regex. ([@tejasbubane][]) +* [#9073](https://github.com/rubocop-hq/rubocop/issues/9073): Enable `Layout/LineLength`'s auto-correct by default. ([@bbatsov][]) +* [#9079](https://github.com/rubocop-hq/rubocop/pull/9079): Improve the gemspec to load only the necessary files without the git utility. ([@piotrmurach][]) +* [#9059](https://github.com/rubocop-hq/rubocop/pull/9059): Update `Lint/UnmodifiedReduceAccumulator` to accept blocks which return in the form `accumulator[element]`. ([@dvandersluis][]) +* [#9072](https://github.com/rubocop-hq/rubocop/pull/9072): `Lint/MissingSuper`: exclude `method_missing` and `respond_to_missing?`. ([@marcandre][]) +* [#9074](https://github.com/rubocop-hq/rubocop/pull/9074): Allow specifying a pull request ID when calling `rake changelog:*`. ([@marcandre][]) + +[@tejasbubane]: https://github.com/tejasbubane +[@knu]: https://github.com/knu +[@amatsuda]: https://github.com/amatsuda +[@koic]: https://github.com/koic +[@jonas054]: https://github.com/jonas054 +[@bbatsov]: https://github.com/bbatsov +[@piotrmurach]: https://github.com/piotrmurach +[@dvandersluis]: https://github.com/dvandersluis +[@marcandre]: https://github.com/marcandre + +------------------------------------------------------------------- Old: ---- 0001-Use-usr-bin-bash-instead-of-env-as-the-shebang.patch rubocop-1.3.1.gem New: ---- rubocop-1.4.2.gem ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rubygem-rubocop.spec ++++++ --- /var/tmp/diff_new_pack.lpvvEu/_old 2020-11-29 12:28:59.378036245 +0100 +++ /var/tmp/diff_new_pack.lpvvEu/_new 2020-11-29 12:28:59.382036249 +0100 @@ -25,7 +25,7 @@ # of those fields # Name: rubygem-rubocop -Version: 1.3.1 +Version: 1.4.2 Release: 0 Summary: Automatic Ruby code style checking tool License: MIT @@ -39,19 +39,12 @@ BuildRequires: update-alternatives # FIXME: use proper Requires(pre/post/preun/...) PreReq: update-alternatives -# MANUAL -Patch0: 0001-Use-usr-bin-bash-instead-of-env-as-the-shebang.patch -# /MANUAL %description RuboCop is a Ruby code style checking and code formatting tool. It aims to enforce the community-driven Ruby Style Guide. %prep -%gem_unpack -%patch0 -p1 -find -type f -print0 | xargs -0 touch -r %{SOURCE0} -%{gem_build} %build ++++++ gem2rpm.yml ++++++ --- /var/tmp/diff_new_pack.lpvvEu/_old 2020-11-29 12:28:59.406036274 +0100 +++ /var/tmp/diff_new_pack.lpvvEu/_new 2020-11-29 12:28:59.406036274 +0100 @@ -19,8 +19,8 @@ # BuildRequires: foobar # Requires: foobar # ## used by gem2rpm -:patches: - 0001-Use-usr-bin-bash-instead-of-env-as-the-shebang.patch: -p1 +# :patches: +# 0001-Use-usr-bin-bash-instead-of-env-as-the-shebang.patch: -p1 # ## used by gem2rpm :sources: # - foo.desktop ++++++ rubocop-1.3.1.gem -> rubocop-1.4.2.gem ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/README.md new/README.md --- old/README.md 2020-11-16 09:54:10.000000000 +0100 +++ new/README.md 2020-11-25 09:13:21.000000000 +0100 @@ -51,7 +51,7 @@ in your `Gemfile`: ```rb -gem 'rubocop', '~> 1.3', require: false +gem 'rubocop', '~> 1.4', require: false ``` See [versioning](https://docs.rubocop.org/rubocop/1.0/versioning.html) for further details. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bin/console new/bin/console --- old/bin/console 2020-11-16 09:54:10.000000000 +0100 +++ new/bin/console 1970-01-01 01:00:00.000000000 +0100 @@ -1,10 +0,0 @@ -#!/usr/bin/env ruby -# frozen_string_literal: true - -require 'bundler/setup' -require 'pry' -require 'rubocop' - -ARGV.clear - -RuboCop.pry diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bin/rubocop-profile new/bin/rubocop-profile --- old/bin/rubocop-profile 2020-11-16 09:54:10.000000000 +0100 +++ new/bin/rubocop-profile 1970-01-01 01:00:00.000000000 +0100 @@ -1,32 +0,0 @@ -#!/usr/bin/env ruby -# frozen_string_literal: true - -if ARGV.include?('-h') || ARGV.include?('--help') - puts "Usage: same as main `rubocop` command but gathers profiling info" - puts "Additional option: `--memory` to print memory usage" - exit(0) -end -with_mem = ARGV.delete('--memory') -ARGV.unshift '--cache', 'false' unless ARGV.include?('--cache') - -require 'stackprof' -if with_mem - require 'memory_profiler' - MemoryProfiler.start -end -StackProf.start -start = Process.clock_gettime(Process::CLOCK_MONOTONIC) -begin - load "#{__dir__}/../exe/rubocop" -ensure - delta = Process.clock_gettime(Process::CLOCK_MONOTONIC) - start - puts "Finished in #{delta.round(1)} seconds" - StackProf.stop - if with_mem - puts "Building memory report..." - report = MemoryProfiler.stop - end - Dir.mkdir('tmp') unless File.exist?('tmp') - StackProf.results('tmp/stackprof.dump') - report&.pretty_print(scale_bytes: true) -end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bin/setup new/bin/setup --- old/bin/setup 2020-11-16 09:54:10.000000000 +0100 +++ new/bin/setup 1970-01-01 01:00:00.000000000 +0100 @@ -1,7 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail -IFS=$'\n\t' -set -vx - -bundle install 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 2020-11-16 09:54:10.000000000 +0100 +++ new/config/default.yml 2020-11-25 09:13:21.000000000 +0100 @@ -459,10 +459,14 @@ - https://github.com/airbnb/ruby#multiline-if-newline Layout/EmptyLineBetweenDefs: - Description: 'Use empty lines between defs.' + Description: 'Use empty lines between class/module/method defs.' StyleGuide: '#empty-lines-between-methods' Enabled: true VersionAdded: '0.49' + VersionChanged: '1.4' + EmptyLineBetweenMethodDefs: true + EmptyLineBetweenClassDefs: true + EmptyLineBetweenModuleDefs: true # If `true`, this parameter means that single line method definitions don't # need an empty line between them. AllowAdjacentOneLineDefs: false @@ -891,8 +895,8 @@ StyleGuide: '#max-line-length' Enabled: true VersionAdded: '0.25' - VersionChanged: '1.3' - AutoCorrect: false + VersionChanged: '1.4' + AutoCorrect: true Max: 120 # To make it possible to copy or click on URIs in the code, we allow lines # containing a URI to be longer than Max. @@ -1684,6 +1688,7 @@ without calls to `super`'. Enabled: true VersionAdded: '0.89' + VersionChanged: '1.4' Lint/MixedRegexpCaptureTypes: Description: 'Do not mix named captures and numbered captures in a Regexp literal.' @@ -2451,7 +2456,7 @@ StyleGuide: '#snake-case-symbols-methods-vars-with-numbers' Enabled: true VersionAdded: '0.50' - VersionChanged: '1.3' + VersionChanged: '1.4' EnforcedStyle: normalcase SupportedStyles: - snake_case @@ -3976,6 +3981,17 @@ Enabled: true VersionAdded: '0.52' +Style/RedundantArgument: + Description: 'Check for a redundant argument passed to certain methods.' + Enabled: pending + Safe: false + VersionAdded: '1.4' + Methods: + # Array#join + join: '' + # String#split + split: ' ' + Style/RedundantAssignment: Description: 'Checks for redundant assignment before returning.' Enabled: true diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/cli/command/execute_runner.rb new/lib/rubocop/cli/command/execute_runner.rb --- old/lib/rubocop/cli/command/execute_runner.rb 2020-11-16 09:54:10.000000000 +0100 +++ new/lib/rubocop/cli/command/execute_runner.rb 2020-11-25 09:13:21.000000000 +0100 @@ -22,12 +22,13 @@ def execute_runner(paths) runner = Runner.new(@options, @config_store) - all_passed = runner.run(paths) - display_warning_summary(runner.warnings) - display_error_summary(runner.errors) - maybe_print_corrected_source + all_pass_or_excluded = with_redirect do + all_passed = runner.run(paths) + display_summary(runner) + all_passed || @options[:auto_gen_config] + end - all_pass_or_excluded = all_passed || @options[:auto_gen_config] + maybe_print_corrected_source if runner.aborting? STATUS_INTERRUPTED @@ -38,6 +39,25 @@ end end + def with_redirect + if @options[:stderr] + orig_stdout = $stdout.dup + $stdout.reopen($stderr) + + result = yield + + $stdout.reopen(orig_stdout) + result + else + yield + end + end + + def display_summary(runner) + display_warning_summary(runner.warnings) + display_error_summary(runner.errors) + end + def display_warning_summary(warnings) return if warnings.empty? @@ -69,14 +89,9 @@ # See: https://github.com/rubocop-hq/rubocop/issues/8673 return if INTEGRATION_FORMATTERS.include?(@options[:format]) - # If we are asked to autocorrect source code read from stdin, the only - # reasonable place to write it is to stdout - # Unfortunately, we also write other information to stdout - # So a delimiter is needed for tools to easily identify where the - # autocorrected source begins return unless @options[:stdin] && @options[:auto_correct] - puts '=' * 20 + (@options[:stderr] ? $stderr : $stdout).puts '=' * 20 print @options[:stdin] end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/config_regeneration.rb new/lib/rubocop/config_regeneration.rb --- old/lib/rubocop/config_regeneration.rb 2020-11-16 09:54:10.000000000 +0100 +++ new/lib/rubocop/config_regeneration.rb 2020-11-25 09:13:21.000000000 +0100 @@ -16,7 +16,7 @@ match = generation_command.match(COMMAND_REGEX) return DEFAULT_OPTIONS unless match - options = match[1].split(' ') + options = match[1].split Options.new.parse(options).first end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/cop/autocorrect_logic.rb new/lib/rubocop/cop/autocorrect_logic.rb --- old/lib/rubocop/cop/autocorrect_logic.rb 2020-11-16 09:54:10.000000000 +0100 +++ new/lib/rubocop/cop/autocorrect_logic.rb 2020-11-25 09:13:21.000000000 +0100 @@ -39,16 +39,31 @@ private def disable_offense(range) - eol_comment = " # rubocop:todo #{cop_name}" - needed_line_length = (range.source_line + eol_comment).length - if needed_line_length <= max_line_length - disable_offense_at_end_of_line(range_of_first_line(range), - eol_comment) + heredoc_range = surrounding_heredoc(range) + if heredoc_range + disable_offense_before_and_after(range_by_lines(heredoc_range)) else - disable_offense_before_and_after(range_by_lines(range)) + eol_comment = " # rubocop:todo #{cop_name}" + needed_line_length = (range.source_line + eol_comment).length + if needed_line_length <= max_line_length + disable_offense_at_end_of_line(range_of_first_line(range), eol_comment) + else + disable_offense_before_and_after(range_by_lines(range)) + end end end + def surrounding_heredoc(offense_range) + # The empty offense range is an edge case that can be reached from the Lint/Syntax cop. + return nil if offense_range.empty? + + heredoc_nodes = processed_source.ast.each_descendant.select do |node| + node.respond_to?(:heredoc?) && node.heredoc? + end + heredoc_nodes.map { |node| node.loc.expression.join(node.loc.heredoc_end) } + .find { |range| range.contains?(offense_range) } + end + def range_of_first_line(range) begin_of_first_line = range.begin_pos - range.column end_of_first_line = begin_of_first_line + range.source_line.length 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 2020-11-16 09:54:10.000000000 +0100 +++ new/lib/rubocop/cop/correctors/percent_literal_corrector.rb 2020-11-25 09:13:21.000000000 +0100 @@ -48,7 +48,7 @@ def autocorrect_multiline_words(node, escape, delimiters) contents = process_multiline_words(node, escape, delimiters) contents << end_content(node.source) - contents.join('') + contents.join end def autocorrect_words(node, escape, delimiters) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb new/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb --- old/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb 2020-11-16 09:54:10.000000000 +0100 +++ new/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb 2020-11-25 09:13:21.000000000 +0100 @@ -38,7 +38,7 @@ def assertions_using_described_class_msg described_class_msg(processed_source.ast).reject do |node| - node.ancestors.any?(&method(:rspec_expectation_on_msg?)) + node.ancestors.any? { |ancestor| rspec_expectation_on_msg?(ancestor) } end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/cop/layout/empty_line_between_defs.rb new/lib/rubocop/cop/layout/empty_line_between_defs.rb --- old/lib/rubocop/cop/layout/empty_line_between_defs.rb 2020-11-16 09:54:10.000000000 +0100 +++ new/lib/rubocop/cop/layout/empty_line_between_defs.rb 2020-11-25 09:13:21.000000000 +0100 @@ -3,17 +3,18 @@ module RuboCop module Cop module Layout - # This cop checks whether method definitions are - # separated by one empty line. + # This cop checks whether class/module/method definitions are + # separated by one or more empty lines. # # `NumberOfEmptyLines` can be an integer (default is 1) or # an array (e.g. [1, 2]) to specify a minimum and maximum # number of empty lines permitted. # # `AllowAdjacentOneLineDefs` configures whether adjacent - # one-line method definitions are considered an offense. + # one-line definitions are considered an offense. # - # @example + # @example EmptyLineBetweenMethodDefs: true (default) + # # checks for empty lines between method definitions. # # # bad # def a @@ -29,11 +30,57 @@ # # def b # end + # + # @example EmptyLineBetweenClassDefs: true (default) + # # checks for empty lines between class definitions. + # + # # bad + # class A + # end + # class B + # end + # def b + # end + # + # @example + # + # # good + # class A + # end + # + # class B + # end + # + # def b + # end + # + # @example EmptyLineBetweenModuleDefs: true (default) + # # checks for empty lines between module definitions. + # + # # bad + # module A + # end + # module B + # end + # def b + # end + # + # @example + # + # # good + # module A + # end + # + # module B + # end + # + # def b + # end class EmptyLineBetweenDefs < Base include RangeHelp extend AutoCorrector - MSG = 'Use empty lines between method definitions.' + MSG = 'Use empty lines between %<type>s definitions.' def self.autocorrect_incompatible_with [Layout::EmptyLines] @@ -47,7 +94,7 @@ def on_begin(node) node.children.each_cons(2) do |prev, n| nodes = [prev, n] - check_defs(nodes) if nodes.all?(&method(:def_node?)) + check_defs(nodes) if nodes.all? { |def_candidate| candidate?(def_candidate) } end end @@ -57,8 +104,9 @@ return if nodes.all?(&:single_line?) && cop_config['AllowAdjacentOneLineDefs'] - location = nodes.last.loc.keyword.join(nodes.last.loc.name) - add_offense(location) do |corrector| + correction_node = nodes.last + location = correction_node.loc.keyword.join(correction_node.loc.name) + add_offense(location, message: message(correction_node)) do |corrector| autocorrect(corrector, *nodes) end end @@ -83,10 +131,32 @@ private - def def_node?(node) + def candidate?(node) return unless node - node.def_type? || node.defs_type? + method_candidate?(node) || class_candidate?(node) || module_candidate?(node) + end + + def method_candidate?(node) + cop_config['EmptyLineBetweenMethodDefs'] && (node.def_type? || node.defs_type?) + end + + def class_candidate?(node) + cop_config['EmptyLineBetweenClassDefs'] && node.class_type? + end + + def module_candidate?(node) + cop_config['EmptyLineBetweenModuleDefs'] && node.module_type? + end + + def message(node) + type = case node.type + when :def, :defs + :method + else + node.type + end + format(MSG, type: type) end def multiple_blank_lines_groups?(first_def_node, second_def_node) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/cop/layout/space_around_method_call_operator.rb new/lib/rubocop/cop/layout/space_around_method_call_operator.rb --- old/lib/rubocop/cop/layout/space_around_method_call_operator.rb 2020-11-16 09:54:10.000000000 +0100 +++ new/lib/rubocop/cop/layout/space_around_method_call_operator.rb 2020-11-25 09:13:21.000000000 +0100 @@ -51,7 +51,7 @@ alias on_csend on_send def on_const(node) - return unless node.loc.double_colon + return unless node.loc.respond_to?(:double_colon) && node.loc.double_colon check_space_after_double_colon(node) end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb new/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb --- old/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb 2020-11-16 09:54:10.000000000 +0100 +++ new/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb 2020-11-25 09:13:21.000000000 +0100 @@ -53,7 +53,8 @@ def find_offense_node(node, regexp_receiver) return node unless node.parent - if node.parent.send_type? || method_chain_to_regexp_receiver?(node, regexp_receiver) + if (node.parent.send_type? && node.receiver) || + method_chain_to_regexp_receiver?(node, regexp_receiver) node = find_offense_node(node.parent, regexp_receiver) end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/cop/lint/literal_in_interpolation.rb new/lib/rubocop/cop/lint/literal_in_interpolation.rb --- old/lib/rubocop/cop/lint/literal_in_interpolation.rb 2020-11-16 09:54:10.000000000 +0100 +++ new/lib/rubocop/cop/lint/literal_in_interpolation.rb 2020-11-25 09:13:21.000000000 +0100 @@ -95,7 +95,7 @@ def autocorrected_value_for_array(node) return node.source.gsub('"', '\"') unless node.percent_literal? - contents_range(node).source.split(' ').to_s.gsub('"', '\"') + contents_range(node).source.split.to_s.gsub('"', '\"') end # Does node print its own source when converted to a string? diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/cop/lint/missing_super.rb new/lib/rubocop/cop/lint/missing_super.rb --- old/lib/rubocop/cop/lint/missing_super.rb 2020-11-16 09:54:10.000000000 +0100 +++ new/lib/rubocop/cop/lint/missing_super.rb 2020-11-25 09:13:21.000000000 +0100 @@ -6,6 +6,11 @@ # This cop checks for the presence of constructors and lifecycle callbacks # without calls to `super`. # + # This cop does not consider `method_missing` (and `respond_to_missing?`) + # because in some cases it makes sense to overtake what is considered a + # missing method. In other cases, the theoretical ideal handling could be + # challenging or verbose for no actual gain. + # # @example # # bad # class Employee < Person @@ -43,15 +48,13 @@ STATELESS_CLASSES = %w[BasicObject Object].freeze - OBJECT_LIFECYCLE_CALLBACKS = %i[method_missing respond_to_missing?].freeze CLASS_LIFECYCLE_CALLBACKS = %i[inherited].freeze METHOD_LIFECYCLE_CALLBACKS = %i[method_added method_removed method_undefined singleton_method_added singleton_method_removed singleton_method_undefined].freeze - CALLBACKS = (OBJECT_LIFECYCLE_CALLBACKS + - CLASS_LIFECYCLE_CALLBACKS + - METHOD_LIFECYCLE_CALLBACKS).to_set.freeze + CALLBACKS = (CLASS_LIFECYCLE_CALLBACKS + + METHOD_LIFECYCLE_CALLBACKS).to_set.freeze def on_def(node) return unless offender?(node) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/cop/lint/unmodified_reduce_accumulator.rb new/lib/rubocop/cop/lint/unmodified_reduce_accumulator.rb --- old/lib/rubocop/cop/lint/unmodified_reduce_accumulator.rb 2020-11-16 09:54:10.000000000 +0100 +++ new/lib/rubocop/cop/lint/unmodified_reduce_accumulator.rb 2020-11-25 09:13:21.000000000 +0100 @@ -12,7 +12,8 @@ # could be rewritten as such without a loop. # # Also catches instances where an index of the accumulator is returned, as - # this may change the type of object being retained. + # this may change the type of object being retained. As well, detects when + # fewer than 2 block arguments are specified. # # NOTE: For the purpose of reducing false positives, this cop only flags # returns in `reduce` blocks where the element is the only variable in @@ -54,6 +55,9 @@ # value # end # + # # good, recursive + # keys.reduce(self) { |result, key| result[key] } + # # # ignored as the return value cannot be determined # enum.reduce do |acc, el| # x = foo(acc, el) @@ -64,7 +68,7 @@ MSG_INDEX = 'Do not return an element of the accumulator in `%<method>s`.' def_node_matcher :reduce_with_block?, <<~PATTERN - (block (send _recv {:reduce :inject} ...) (args arg+) ...) + (block (send _recv {:reduce :inject} ...) args ...) PATTERN def_node_matcher :accumulator_index?, <<~PATTERN @@ -103,6 +107,7 @@ def on_block(node) return unless reduce_with_block?(node) + return unless node.arguments.length >= 2 check_return_values(node) end @@ -131,7 +136,7 @@ element_name = block_arg_name(block_node, 1) message_opts = { method: block_node.method_name, accum: accumulator_name } - if (node = returned_accumulator_index(return_values, accumulator_name)) + if (node = returned_accumulator_index(return_values, accumulator_name, element_name)) add_offense(node, message: format(MSG_INDEX, message_opts)) elsif potential_offense?(return_values, block_node.body, element_name, accumulator_name) return_values.each do |return_val| @@ -146,11 +151,17 @@ node.arguments[index].node_parts[0] end - # Look for an index of the accumulator being returned + # Look for an index of the accumulator being returned, except where the index + # is the element. # This is always an offense, in order to try to catch potential exceptions # due to type mismatches - def returned_accumulator_index(return_values, accumulator_name) - return_values.detect { |val| accumulator_index?(val, accumulator_name) } + def returned_accumulator_index(return_values, accumulator_name, element_name) + return_values.detect do |val| + next unless accumulator_index?(val, accumulator_name) + next true if val.method?(:[]=) + + val.arguments.none? { |arg| lvar_used?(arg, element_name) } + end end def potential_offense?(return_values, block_body, element_name, accumulator_name) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/cop/metrics/method_length.rb new/lib/rubocop/cop/metrics/method_length.rb --- old/lib/rubocop/cop/metrics/method_length.rb 2020-11-16 09:54:10.000000000 +0100 +++ new/lib/rubocop/cop/metrics/method_length.rb 2020-11-25 09:13:21.000000000 +0100 @@ -36,7 +36,7 @@ def on_def(node) excluded_methods = cop_config['ExcludedMethods'] - return if excluded_methods.include?(String(node.method_name)) + return if excluded_methods.any? { |m| m.match? String(node.method_name) } check_code_length(node) end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/cop/mixin/configurable_numbering.rb new/lib/rubocop/cop/mixin/configurable_numbering.rb --- old/lib/rubocop/cop/mixin/configurable_numbering.rb 2020-11-16 09:54:10.000000000 +0100 +++ new/lib/rubocop/cop/mixin/configurable_numbering.rb 2020-11-25 09:13:21.000000000 +0100 @@ -7,10 +7,11 @@ module ConfigurableNumbering include ConfigurableFormatting + implicit_param = /\A_\d+\z/ FORMATS = { snake_case: /(?:\D|_\d+|\A\d+)\z/, - normalcase: /(?:\D|[^_\d]\d+|\A\d+)\z/, - non_integer: /(\D|\A\d+)\z/ + normalcase: /(?:\D|[^_\d]\d+|\A\d+)\z|#{implicit_param}/, + non_integer: /(\D|\A\d+)\z|#{implicit_param}/ }.freeze end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/cop/mixin/enforce_superclass.rb new/lib/rubocop/cop/mixin/enforce_superclass.rb --- old/lib/rubocop/cop/mixin/enforce_superclass.rb 2020-11-16 09:54:10.000000000 +0100 +++ new/lib/rubocop/cop/mixin/enforce_superclass.rb 2020-11-25 09:13:21.000000000 +0100 @@ -2,7 +2,15 @@ module RuboCop module Cop - # Common functionality for enforcing a specific superclass + # Common functionality for enforcing a specific superclass. + # + # IMPORTANT: RuboCop core depended on this module when it supported Rails department. + # Rails department has been extracted to RuboCop Rails gem. + # This module is deprecated and will be removed by RuboCop 2.0. + # It will not be updated to `RuboCop::Cop::Base` v1 API to maintain compatibility + # with existing RuboCop Rails 2.8 or lower. + # + # @api private module EnforceSuperclass def self.included(base) base.def_node_matcher :class_definition, <<~PATTERN diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/cop/mixin/multiline_expression_indentation.rb new/lib/rubocop/cop/mixin/multiline_expression_indentation.rb --- old/lib/rubocop/cop/mixin/multiline_expression_indentation.rb 2020-11-16 09:54:10.000000000 +0100 +++ new/lib/rubocop/cop/mixin/multiline_expression_indentation.rb 2020-11-25 09:13:21.000000000 +0100 @@ -31,7 +31,7 @@ # b c { block }. <-- b is indented relative to a # d <-- d is indented relative to a def left_hand_side(lhs) - lhs = lhs.parent while lhs.parent&.send_type? + lhs = lhs.parent while lhs.parent&.send_type? && lhs.parent.loc.dot lhs end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/cop/mixin/visibility_help.rb new/lib/rubocop/cop/mixin/visibility_help.rb --- old/lib/rubocop/cop/mixin/visibility_help.rb 2020-11-16 09:54:10.000000000 +0100 +++ new/lib/rubocop/cop/mixin/visibility_help.rb 2020-11-25 09:13:21.000000000 +0100 @@ -16,9 +16,7 @@ end def find_visibility_start(node) - node.left_siblings - .reverse - .find(&method(:visibility_block?)) + node.left_siblings.reverse.find { |sibling| visibility_block?(sibling) } end # Navigate to find the last protected method diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/cop/style/documentation.rb new/lib/rubocop/cop/style/documentation.rb --- old/lib/rubocop/cop/style/documentation.rb 2020-11-16 09:54:10.000000000 +0100 +++ new/lib/rubocop/cop/style/documentation.rb 2020-11-25 09:13:21.000000000 +0100 @@ -55,6 +55,11 @@ # Public = Class.new # end # + # # Macro calls + # module Namespace + # extend Foo + # end + # class Documentation < Base include DocumentationComment @@ -83,15 +88,21 @@ return if documentation_comment?(node) || nodoc_comment?(node) return if compact_namespace?(node) && nodoc_comment?(outer_module(node).first) + return if macro_only?(body) add_offense(node.loc.keyword, message: format(MSG, type: type)) end + def macro_only?(body) + body.respond_to?(:macro?) && body.macro? || + body.respond_to?(:children) && body.children&.all? { |child| macro_only?(child) } + end + def namespace?(node) return false unless node if node.begin_type? - node.children.all?(&method(:constant_declaration?)) + node.children.all? { |child| constant_declaration?(child) } else constant_definition?(node) end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/cop/style/format_string.rb new/lib/rubocop/cop/style/format_string.rb --- old/lib/rubocop/cop/style/format_string.rb 2020-11-16 09:54:10.000000000 +0100 +++ new/lib/rubocop/cop/style/format_string.rb 2020-11-25 09:13:21.000000000 +0100 @@ -111,15 +111,20 @@ format = format_arg.source args = if param_args.one? - arg = param_args.last - - arg.hash_type? ? "{ #{arg.source} }" : arg.source + format_single_parameter(param_args.last) else "[#{param_args.map(&:source).join(', ')}]" end corrector.replace(node, "#{format} % #{args}") end + + def format_single_parameter(arg) + source = arg.source + return "{ #{source} }" if arg.hash_type? + + arg.send_type? && arg.operator_method? && !arg.parenthesized? ? "(#{source})" : source + end end end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb new/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb --- old/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb 2020-11-16 09:54:10.000000000 +0100 +++ new/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb 2020-11-25 09:13:21.000000000 +0100 @@ -74,7 +74,7 @@ parent && (logical_operator?(parent) || parent.send_type? && - parent.arguments.any?(&method(:logical_operator?))) + parent.arguments.any? { |argument| logical_operator?(argument) }) end def call_in_optional_arguments?(node) @@ -110,7 +110,7 @@ def hash_literal_in_arguments?(node) node.arguments.any? do |n| hash_literal?(n) || - n.send_type? && node.descendants.any?(&method(:hash_literal?)) + n.send_type? && node.descendants.any? { |descendant| hash_literal?(descendant) } end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/cop/style/redundant_argument.rb new/lib/rubocop/cop/style/redundant_argument.rb --- old/lib/rubocop/cop/style/redundant_argument.rb 1970-01-01 01:00:00.000000000 +0100 +++ new/lib/rubocop/cop/style/redundant_argument.rb 2020-11-25 09:13:21.000000000 +0100 @@ -0,0 +1,75 @@ +# frozen_string_literal: true + +require 'parser/current' + +module RuboCop + module Cop + module Style + # This cop checks for a redundant argument passed to certain methods. + # + # Limitations: + # + # 1. This cop matches for method names only and hence cannot tell apart + # methods with same name in different classes. + # 2. This cop is limited to methods with single parameter. + # 3. This cop is unsafe if certain special global variables (e.g. `$;`) are set. + # That depends on the nature of the target methods, of course. + # + # Method names and their redundant arguments can be configured like this: + # + # Methods: + # join: '' + # split: ' ' + # foo: 2 + # + # @example + # # bad + # array.join('') + # [1, 2, 3].join("") + # string.split(" ") + # "first\nsecond".split(" ") + # A.foo(2) + # + # # good + # array.join + # [1, 2, 3].join + # string.split + # "first second".split + # A.foo + class RedundantArgument < Cop + MSG = 'Argument %<arg>s is redundant because it is implied by default.' + + def on_send(node) + return if node.receiver.nil? + return if node.arguments.count != 1 + return unless redundant_argument?(node) + + add_offense(node, message: format(MSG, arg: node.arguments.first.source)) + end + + private + + def redundant_argument?(node) + redundant_argument = redundant_arg_for_method(node.method_name.to_s) + return false if redundant_argument.nil? + + node.arguments.first == redundant_argument + end + + def redundant_arg_for_method(method_name) + return nil unless cop_config['Methods'].key?(method_name) + + @mem ||= {} + @mem[method_name] ||= + begin + arg = cop_config['Methods'].fetch(method_name) + buffer = Parser::Source::Buffer.new('(string)', 1) + buffer.source = arg.inspect + builder = RuboCop::AST::Builder.new + Parser::CurrentRuby.new(builder).parse(buffer) + end + end + end + end + end +end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/cop/util.rb new/lib/rubocop/cop/util.rb --- old/lib/rubocop/cop/util.rb 2020-11-16 09:54:10.000000000 +0100 +++ new/lib/rubocop/cop/util.rb 2020-11-25 09:13:21.000000000 +0100 @@ -53,7 +53,7 @@ end def on_node(syms, sexp, excludes = [], &block) - return to_enum(:on_node, syms, sexp, excludes) unless block_given? + return to_enum(:on_node, syms, sexp, excludes) unless block yield sexp if Array(syms).include?(sexp.type) return if Array(excludes).include?(sexp.type) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/cop/variable_force/branch.rb new/lib/rubocop/cop/variable_force/branch.rb --- old/lib/rubocop/cop/variable_force/branch.rb 2020-11-16 09:54:10.000000000 +0100 +++ new/lib/rubocop/cop/variable_force/branch.rb 2020-11-25 09:13:21.000000000 +0100 @@ -78,7 +78,7 @@ end def each_ancestor(include_self: false, &block) - return to_enum(__method__, include_self: include_self) unless block_given? + return to_enum(__method__, include_self: include_self) unless block yield self if include_self scan_ancestors(&block) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/cop/variable_force/scope.rb new/lib/rubocop/cop/variable_force/scope.rb --- old/lib/rubocop/cop/variable_force/scope.rb 2020-11-16 09:54:10.000000000 +0100 +++ new/lib/rubocop/cop/variable_force/scope.rb 2020-11-25 09:13:21.000000000 +0100 @@ -61,7 +61,7 @@ end def each_node(&block) - return to_enum(__method__) unless block_given? + return to_enum(__method__) unless block yield node if naked_top_level? scan_node(node, &block) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/formatter/disabled_config_formatter.rb new/lib/rubocop/formatter/disabled_config_formatter.rb --- old/lib/rubocop/formatter/disabled_config_formatter.rb 2020-11-16 09:54:10.000000000 +0100 +++ new/lib/rubocop/formatter/disabled_config_formatter.rb 2020-11-25 09:13:21.000000000 +0100 @@ -5,6 +5,8 @@ # This formatter displays a YAML configuration file where all cops that # detected any offenses are configured to not detect the offense. class DisabledConfigFormatter < BaseFormatter + include PathUtil + HEADING = <<~COMMENTS # This configuration was generated by # `%<command>s` @@ -195,15 +197,28 @@ end def excludes(offending_files, cop_name, parent) - # Exclude properties in .rubocop_todo.yml override default ones, as well - # as any custom excludes in .rubocop.yml, so in order to retain those - # excludes we must copy them. - # There can be multiple .rubocop.yml files in subdirectories, but we - # just look at the current working directory + # Exclude properties in .rubocop_todo.yml override default ones, as well as any custom + # excludes in .rubocop.yml, so in order to retain those excludes we must copy them. + # There can be multiple .rubocop.yml files in subdirectories, but we just look at the + # current working directory. config = ConfigStore.new.for(parent) cfg = config[cop_name] || {} - ((cfg['Exclude'] || []) + offending_files).uniq + if merge_mode_for_exclude?(config) || merge_mode_for_exclude?(cfg) + offending_files + else + cop_exclude = cfg['Exclude'] + if cop_exclude && cop_exclude != default_config(cop_name)['Exclude'] + warn "`#{cop_name}: Exclude` in `#{smart_path(config.loaded_path)}` overrides a " \ + 'generated `Exclude` in `.rubocop_todo.yml`. Either remove ' \ + "`#{cop_name}: Exclude` or add `inherit_mode: merge: - Exclude`." + end + ((cop_exclude || []) + offending_files).uniq + end + end + + def merge_mode_for_exclude?(cfg) + Array(cfg.to_h.dig('inherit_mode', 'merge')).include?('Exclude') end def output_exclude_path(output_buffer, exclude_path, parent) 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 2020-11-16 09:54:10.000000000 +0100 +++ new/lib/rubocop/options.rb 2020-11-25 09:13:21.000000000 +0100 @@ -5,6 +5,7 @@ module RuboCop class IncorrectCopNameError < StandardError; end + class OptionArgumentError < StandardError; end # This class handles command line options. @@ -195,6 +196,7 @@ option(opts, '--safe') + option(opts, '--stderr') option(opts, '--[no-]color') option(opts, '-v', '--version') @@ -498,6 +500,9 @@ extra_details: 'Display extra details in offense messages.', lint: 'Run only lint cops.', safe: 'Run only safe cops.', + stderr: ['Write all output to stderr except for the', + 'autocorrected source. This is especially useful', + 'when combined with --auto-correct and --stdin.'], list_target_files: 'List all files RuboCop will inspect.', auto_correct: 'Auto-correct offenses (only when it\'s safe).', safe_auto_correct: '(same, deprecated)', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/rake_task.rb new/lib/rubocop/rake_task.rb --- old/lib/rubocop/rake_task.rb 2020-11-16 09:54:10.000000000 +0100 +++ new/lib/rubocop/rake_task.rb 2020-11-25 09:13:21.000000000 +0100 @@ -22,7 +22,7 @@ task(name, *args) do |_, task_args| RakeFileUtils.verbose(verbose) do - yield(*[self, task_args].slice(0, task_block.arity)) if block_given? + yield(*[self, task_args].slice(0, task_block.arity)) if task_block run_cli(verbose, full_options) end end @@ -66,7 +66,7 @@ task(:auto_correct, *args) do |_, task_args| RakeFileUtils.verbose(verbose) do - yield(*[self, task_args].slice(0, task_block.arity)) if block_given? + yield(*[self, task_args].slice(0, task_block.arity)) if task_block options = full_options.unshift('--auto-correct-all') options.delete('--parallel') run_cli(verbose, options) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop/runner.rb new/lib/rubocop/runner.rb --- old/lib/rubocop/runner.rb 2020-11-16 09:54:10.000000000 +0100 +++ new/lib/rubocop/runner.rb 2020-11-25 09:13:21.000000000 +0100 @@ -64,7 +64,7 @@ # instances that each inspects its allotted group of files. def warm_cache(target_files) puts 'Running parallel inspection' if @options[:debug] - Parallel.each(target_files, &method(:file_offenses)) + Parallel.each(target_files) { |target_file| file_offenses(target_file) } end def find_target_files(paths) 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 2020-11-16 09:54:10.000000000 +0100 +++ new/lib/rubocop/version.rb 2020-11-25 09:13:21.000000000 +0100 @@ -3,7 +3,7 @@ module RuboCop # This module holds the RuboCop version information. module Version - STRING = '1.3.1' + STRING = '1.4.2' MSG = '%<version>s (using Parser %<parser_version>s, '\ 'rubocop-ast %<rubocop_ast_version>s, ' \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rubocop.rb new/lib/rubocop.rb --- old/lib/rubocop.rb 2020-11-16 09:54:10.000000000 +0100 +++ new/lib/rubocop.rb 2020-11-25 09:13:21.000000000 +0100 @@ -529,6 +529,7 @@ require_relative 'rubocop/cop/style/proc' require_relative 'rubocop/cop/style/raise_args' require_relative 'rubocop/cop/style/random_with_offset' +require_relative 'rubocop/cop/style/redundant_argument' require_relative 'rubocop/cop/style/redundant_begin' require_relative 'rubocop/cop/style/redundant_capital_w' require_relative 'rubocop/cop/style/redundant_condition' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/metadata new/metadata --- old/metadata 2020-11-16 09:54:10.000000000 +0100 +++ new/metadata 2020-11-25 09:13:21.000000000 +0100 @@ -1,7 +1,7 @@ --- !ruby/object:Gem::Specification name: rubocop version: !ruby/object:Gem::Version - version: 1.3.1 + version: 1.4.2 platform: ruby authors: - Bozhidar Batsov @@ -10,7 +10,7 @@ autorequire: bindir: exe cert_chain: [] -date: 2020-11-16 00:00:00.000000000 Z +date: 2020-11-25 00:00:00.000000000 Z dependencies: - !ruby/object:Gem::Dependency name: parallel @@ -171,9 +171,6 @@ - README.md - assets/logo.png - assets/output.html.erb -- bin/console -- bin/rubocop-profile -- bin/setup - config/default.yml - exe/rubocop - lib/rubocop.rb @@ -685,6 +682,7 @@ - lib/rubocop/cop/style/proc.rb - lib/rubocop/cop/style/raise_args.rb - lib/rubocop/cop/style/random_with_offset.rb +- lib/rubocop/cop/style/redundant_argument.rb - lib/rubocop/cop/style/redundant_assignment.rb - lib/rubocop/cop/style/redundant_begin.rb - lib/rubocop/cop/style/redundant_capital_w.rb @@ -821,7 +819,7 @@ homepage_uri: https://rubocop.org/ changelog_uri: https://github.com/rubocop-hq/rubocop/blob/master/CHANGELOG.md source_code_uri: https://github.com/rubocop-hq/rubocop/ - documentation_uri: https://docs.rubocop.org/rubocop/1.3/ + documentation_uri: https://docs.rubocop.org/rubocop/1.4/ bug_tracker_uri: https://github.com/rubocop-hq/rubocop/issues post_install_message: rdoc_options: [] _______________________________________________ openSUSE Commits mailing list -- commit@lists.opensuse.org To unsubscribe, email commit-le...@lists.opensuse.org List Netiquette: https://en.opensuse.org/openSUSE:Mailing_list_netiquette List Archives: https://lists.opensuse.org/archives/list/commit@lists.opensuse.org