gitlab-styles 9.1.0 → 10.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitlab-ci.yml +14 -2
- data/.rubocop.yml +2 -1
- data/.rubocop_todo.yml +12 -0
- data/.tests_mapping.yml +10 -0
- data/Gemfile +9 -4
- data/README.md +9 -8
- data/gitlab-styles.gemspec +7 -7
- data/lefthook.yml +11 -3
- data/lib/gitlab/styles/version.rb +1 -1
- data/lib/rubocop/cop/active_record_dependent.rb +0 -5
- data/lib/rubocop/cop/active_record_serialize.rb +0 -6
- data/lib/rubocop/cop/avoid_return_from_blocks.rb +4 -4
- data/lib/rubocop/cop/gem_fetcher.rb +18 -20
- data/lib/rubocop/cop/gitlab_security/deep_munge.rb +36 -0
- data/lib/rubocop/cop/gitlab_security/json_serialization.rb +133 -0
- data/lib/rubocop/cop/gitlab_security/public_send.rb +47 -0
- data/lib/rubocop/cop/gitlab_security/redirect_to_params_update.rb +38 -0
- data/lib/rubocop/cop/gitlab_security/send_file_params.rb +40 -0
- data/lib/rubocop/cop/gitlab_security/sql_injection.rb +41 -0
- data/lib/rubocop/cop/gitlab_security/system_command_injection.rb +38 -0
- data/lib/rubocop/cop/in_batches.rb +0 -2
- data/lib/rubocop/cop/line_break_after_guard_clauses.rb +3 -5
- data/lib/rubocop/cop/line_break_around_conditional_block.rb +5 -0
- data/lib/rubocop/cop/migration/update_large_table.rb +1 -0
- data/lib/rubocop/cop/polymorphic_associations.rb +0 -5
- data/lib/rubocop/cop/rails/include_url_helper.rb +0 -2
- data/lib/rubocop/cop/redirect_with_status.rb +44 -30
- data/lib/rubocop/cop/rspec/empty_line_after_shared_example.rb +1 -1
- data/rubocop-bundler.yml +10 -0
- data/rubocop-capybara.yml +8 -0
- data/rubocop-default.yml +1 -1
- data/rubocop-layout.yml +48 -4
- data/rubocop-lint.yml +131 -3
- data/rubocop-naming.yml +5 -0
- data/rubocop-performance.yml +32 -0
- data/rubocop-rails.yml +25 -0
- data/rubocop-rspec.yml +1 -5
- data/rubocop-security.yml +19 -1
- data/rubocop-style.yml +18 -3
- metadata +38 -29
- data/lib/gitlab/styles/rubocop/model_helpers.rb +0 -19
| @@ -0,0 +1,38 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module RuboCop
         | 
| 4 | 
            +
              module Cop
         | 
| 5 | 
            +
                module GitlabSecurity
         | 
| 6 | 
            +
                  # Check for use of system("/bin/ls #{params[:file]}")
         | 
| 7 | 
            +
                  #
         | 
| 8 | 
            +
                  # Passing user input to system() without sanitization and parameterization can result in command injection
         | 
| 9 | 
            +
                  #
         | 
| 10 | 
            +
                  # @example
         | 
| 11 | 
            +
                  #
         | 
| 12 | 
            +
                  #   # bad
         | 
| 13 | 
            +
                  #   system("/bin/ls #{filename}")
         | 
| 14 | 
            +
                  #
         | 
| 15 | 
            +
                  #   # good (parameters)
         | 
| 16 | 
            +
                  #   system("/bin/ls", filename)
         | 
| 17 | 
            +
                  #   # even better
         | 
| 18 | 
            +
                  #   exec("/bin/ls", shell_escape(filename))
         | 
| 19 | 
            +
                  #
         | 
| 20 | 
            +
                  class SystemCommandInjection < RuboCop::Cop::Base
         | 
| 21 | 
            +
                    MSG = 'Do not include variables in the command name for system(). ' \
         | 
| 22 | 
            +
                          'Use parameters "system(cmd, params)" or exec() instead.'
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                    # @!method system_var?(node)
         | 
| 25 | 
            +
                    def_node_matcher :system_var?, <<-PATTERN
         | 
| 26 | 
            +
                      (dstr (str ...) (begin ...) ...)
         | 
| 27 | 
            +
                    PATTERN
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                    def on_send(node)
         | 
| 30 | 
            +
                      return unless node.command?(:system)
         | 
| 31 | 
            +
                      return unless node.arguments.any? { |e| system_var?(e) }
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                      add_offense(node.loc.selector)
         | 
| 34 | 
            +
                    end
         | 
| 35 | 
            +
                  end
         | 
| 36 | 
            +
                end
         | 
| 37 | 
            +
              end
         | 
| 38 | 
            +
            end
         | 
| @@ -56,6 +56,8 @@ module Rubocop | |
| 56 56 | 
             
                #
         | 
| 57 57 | 
             
                #   do_something_more
         | 
| 58 58 | 
             
                class LineBreakAfterGuardClauses < RuboCop::Cop::Base
         | 
| 59 | 
            +
                  extend RuboCop::Cop::AutoCorrector
         | 
| 60 | 
            +
             | 
| 59 61 | 
             
                  MSG = 'Add a line break after guard clauses'
         | 
| 60 62 |  | 
| 61 63 | 
             
                  # @!method guard_clause_node?(node)
         | 
| @@ -68,11 +70,7 @@ module Rubocop | |
| 68 70 | 
             
                    return unless guard_clause?(node)
         | 
| 69 71 | 
             
                    return if next_line(node).blank? || clause_last_line?(next_line(node)) || guard_clause?(next_sibling(node))
         | 
| 70 72 |  | 
| 71 | 
            -
                    add_offense(node)
         | 
| 72 | 
            -
                  end
         | 
| 73 | 
            -
             | 
| 74 | 
            -
                  def autocorrect(node)
         | 
| 75 | 
            -
                    lambda do |corrector|
         | 
| 73 | 
            +
                    add_offense(node) do |corrector|
         | 
| 76 74 | 
             
                      corrector.insert_after(node.loc.expression, "\n")
         | 
| 77 75 | 
             
                    end
         | 
| 78 76 | 
             
                  end
         | 
| @@ -70,6 +70,7 @@ module Rubocop | |
| 70 70 | 
             
                  def previous_line_valid?(node)
         | 
| 71 71 | 
             
                    previous_line(node).empty? ||
         | 
| 72 72 | 
             
                      start_clause_line?(previous_line(node)) ||
         | 
| 73 | 
            +
                      method_def_end?(node.parent, previous_line(node)) ||
         | 
| 73 74 | 
             
                      block_start?(previous_line(node)) ||
         | 
| 74 75 | 
             
                      begin_line?(previous_line(node)) ||
         | 
| 75 76 | 
             
                      assignment_line?(previous_line(node)) ||
         | 
| @@ -94,6 +95,10 @@ module Rubocop | |
| 94 95 | 
             
                    line =~ /^\s*(def|=end|#|module|class|if|unless|else|elsif|ensure|when)/
         | 
| 95 96 | 
             
                  end
         | 
| 96 97 |  | 
| 98 | 
            +
                  def method_def_end?(node, line)
         | 
| 99 | 
            +
                    node.def_type? && /\)\s*(#.*)?$/.match?(line)
         | 
| 100 | 
            +
                  end
         | 
| 101 | 
            +
             | 
| 97 102 | 
             
                  def end_clause_line?(line)
         | 
| 98 103 | 
             
                    line =~ /^\s*(#|rescue|else|elsif|when)/
         | 
| 99 104 | 
             
                  end
         | 
| @@ -1,17 +1,12 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 | 
            -
            require_relative '../../gitlab/styles/rubocop/model_helpers'
         | 
| 4 | 
            -
             | 
| 5 3 | 
             
            module Rubocop
         | 
| 6 4 | 
             
              module Cop
         | 
| 7 5 | 
             
                # Cop that prevents the use of polymorphic associations
         | 
| 8 6 | 
             
                class PolymorphicAssociations < RuboCop::Cop::Base
         | 
| 9 | 
            -
                  include Gitlab::Styles::Rubocop::ModelHelpers
         | 
| 10 | 
            -
             | 
| 11 7 | 
             
                  MSG = 'Do not use polymorphic associations, use separate tables instead'
         | 
| 12 8 |  | 
| 13 9 | 
             
                  def on_send(node)
         | 
| 14 | 
            -
                    return unless in_model?(node)
         | 
| 15 10 | 
             
                    return unless node.children[1] == :belongs_to
         | 
| 16 11 |  | 
| 17 12 | 
             
                    node.children.last.each_node(:pair) do |pair|
         | 
| @@ -2,44 +2,58 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            module Rubocop
         | 
| 4 4 | 
             
              module Cop
         | 
| 5 | 
            -
                # Prevents usage of 'redirect_to' in actions 'destroy'  | 
| 5 | 
            +
                # Prevents usage of 'redirect_to' in actions 'destroy' and 'destroy_all'
         | 
| 6 | 
            +
                # without specifying 'status'.
         | 
| 7 | 
            +
                #
         | 
| 8 | 
            +
                # @example
         | 
| 9 | 
            +
                #   # bad
         | 
| 10 | 
            +
                #
         | 
| 11 | 
            +
                #   def destroy
         | 
| 12 | 
            +
                #     redirect_to root_path
         | 
| 13 | 
            +
                #   end
         | 
| 14 | 
            +
                #
         | 
| 15 | 
            +
                #   def destroy_all
         | 
| 16 | 
            +
                #     redirect_to root_path, alert: 'Oh no!'
         | 
| 17 | 
            +
                #   end
         | 
| 18 | 
            +
                #
         | 
| 19 | 
            +
                #   # good
         | 
| 20 | 
            +
                #
         | 
| 21 | 
            +
                #   def destroy
         | 
| 22 | 
            +
                #     redirect_to root_path, status: 302
         | 
| 23 | 
            +
                #   end
         | 
| 24 | 
            +
                #
         | 
| 25 | 
            +
                #   def destroy_all
         | 
| 26 | 
            +
                #     redirect_to root_path, alert: 'Oh no!', status: 302
         | 
| 27 | 
            +
                #   end
         | 
| 28 | 
            +
                #
         | 
| 29 | 
            +
                #   def show
         | 
| 30 | 
            +
                #     redirect_to root_path
         | 
| 31 | 
            +
                #   end
         | 
| 32 | 
            +
                #
         | 
| 6 33 | 
             
                # See https://gitlab.com/gitlab-org/gitlab-ce/issues/31840
         | 
| 7 34 | 
             
                class RedirectWithStatus < RuboCop::Cop::Base
         | 
| 8 | 
            -
                  MSG = 'Do not use "redirect_to" without "status" in " | 
| 35 | 
            +
                  MSG = 'Do not use "redirect_to" without "status" in "%<name>s" action.'
         | 
| 9 36 |  | 
| 10 | 
            -
                   | 
| 11 | 
            -
                    return unless in_controller?(node)
         | 
| 12 | 
            -
                    return unless destroy?(node) || destroy_all?(node)
         | 
| 37 | 
            +
                  RESTRICT_ON_SEND = %i[redirect_to].freeze
         | 
| 13 38 |  | 
| 14 | 
            -
             | 
| 15 | 
            -
                      next unless redirect_to?(def_node)
         | 
| 39 | 
            +
                  ACTIONS = %i[destroy destroy_all].to_set.freeze
         | 
| 16 40 |  | 
| 17 | 
            -
             | 
| 41 | 
            +
                  # @!method redirect_to_with_status?(node)
         | 
| 42 | 
            +
                  def_node_matcher :redirect_to_with_status?, <<~PATTERN
         | 
| 43 | 
            +
                    (send nil? :redirect_to ...
         | 
| 44 | 
            +
                      (hash <(pair (sym :status) _) ...>)
         | 
| 45 | 
            +
                    )
         | 
| 46 | 
            +
                  PATTERN
         | 
| 18 47 |  | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 21 | 
            -
                      end
         | 
| 48 | 
            +
                  def on_send(node)
         | 
| 49 | 
            +
                    return if redirect_to_with_status?(node)
         | 
| 22 50 |  | 
| 23 | 
            -
             | 
| 24 | 
            -
             | 
| 25 | 
            -
                  end
         | 
| 26 | 
            -
             | 
| 27 | 
            -
                  private
         | 
| 28 | 
            -
             | 
| 29 | 
            -
                  def in_controller?(node)
         | 
| 30 | 
            -
                    node.location.expression.source_buffer.name.end_with?('_controller.rb')
         | 
| 31 | 
            -
                  end
         | 
| 51 | 
            +
                    node.each_ancestor(:def) do |def_node|
         | 
| 52 | 
            +
                      next unless ACTIONS.include?(def_node.method_name)
         | 
| 32 53 |  | 
| 33 | 
            -
             | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 36 | 
            -
             | 
| 37 | 
            -
                  def destroy_all?(node)
         | 
| 38 | 
            -
                    node.children.first == :destroy_all
         | 
| 39 | 
            -
                  end
         | 
| 40 | 
            -
             | 
| 41 | 
            -
                  def redirect_to?(node)
         | 
| 42 | 
            -
                    node.children[1] == :redirect_to
         | 
| 54 | 
            +
                      message = format(MSG, name: def_node.method_name)
         | 
| 55 | 
            +
                      add_offense(node.loc.selector, message: message)
         | 
| 56 | 
            +
                    end
         | 
| 43 57 | 
             
                  end
         | 
| 44 58 | 
             
                end
         | 
| 45 59 | 
             
              end
         | 
    
        data/rubocop-bundler.yml
    CHANGED
    
    | @@ -1,4 +1,14 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 | 
            +
            require:
         | 
| 3 | 
            +
              - ./lib/rubocop/cop/gem_fetcher
         | 
| 4 | 
            +
             | 
| 2 5 | 
             
            # Gems in consecutive lines should be alphabetically sorted
         | 
| 3 6 | 
             
            Bundler/OrderedGems:
         | 
| 4 7 | 
             
              Enabled: false
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            Cop/GemFetcher:
         | 
| 10 | 
            +
              Enabled: true
         | 
| 11 | 
            +
              Include:
         | 
| 12 | 
            +
                - '**/*.gemfile'
         | 
| 13 | 
            +
                - '**/Gemfile'
         | 
| 14 | 
            +
                - '**/gems.rb'
         | 
    
        data/rubocop-default.yml
    CHANGED
    
    | @@ -1,6 +1,5 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            require:
         | 
| 3 | 
            -
              - rubocop-gitlab-security
         | 
| 4 3 | 
             
              - rubocop-performance
         | 
| 5 4 | 
             
              - rubocop-rspec
         | 
| 6 5 | 
             
              - rubocop-rails
         | 
| @@ -10,6 +9,7 @@ require: | |
| 10 9 | 
             
            inherit_from:
         | 
| 11 10 | 
             
              - rubocop-all.yml
         | 
| 12 11 | 
             
              - rubocop-bundler.yml
         | 
| 12 | 
            +
              - rubocop-capybara.yml
         | 
| 13 13 | 
             
              - rubocop-fips.yml
         | 
| 14 14 | 
             
              - rubocop-gemspec.yml
         | 
| 15 15 | 
             
              - rubocop-graphql.yml
         | 
    
        data/rubocop-layout.yml
    CHANGED
    
    | @@ -3,9 +3,15 @@ | |
| 3 3 | 
             
            Layout/AccessModifierIndentation:
         | 
| 4 4 | 
             
              Enabled: true
         | 
| 5 5 |  | 
| 6 | 
            +
            # Check if the arguments on a multi-line method definition are aligned.
         | 
| 7 | 
            +
            Layout/ArgumentAlignment:
         | 
| 8 | 
            +
              # See https://gitlab.com/gitlab-org/ruby/gems/gitlab-styles/-/issues/42
         | 
| 9 | 
            +
              EnforcedStyle: with_fixed_indentation
         | 
| 10 | 
            +
             | 
| 6 11 | 
             
            # Align the elements of an array literal if they span more than one line.
         | 
| 7 12 | 
             
            Layout/ArrayAlignment:
         | 
| 8 | 
            -
               | 
| 13 | 
            +
              # See https://gitlab.com/gitlab-org/ruby/gems/gitlab-styles/-/issues/42
         | 
| 14 | 
            +
              EnforcedStyle: with_fixed_indentation
         | 
| 9 15 |  | 
| 10 16 | 
             
            # Checks the indentation of the first line of the right-hand-side of a
         | 
| 11 17 | 
             
            # multi-line assignment.
         | 
| @@ -48,9 +54,9 @@ Layout/DotPosition: | |
| 48 54 | 
             
            Layout/ElseAlignment:
         | 
| 49 55 | 
             
              Enabled: true
         | 
| 50 56 |  | 
| 51 | 
            -
            #  | 
| 57 | 
            +
            # Checks for a newline after the final magic comment.
         | 
| 52 58 | 
             
            Layout/EmptyLineAfterMagicComment:
         | 
| 53 | 
            -
              Enabled:  | 
| 59 | 
            +
              Enabled: true
         | 
| 54 60 |  | 
| 55 61 | 
             
            # Use empty lines between defs.
         | 
| 56 62 | 
             
            Layout/EmptyLineBetweenDefs:
         | 
| @@ -102,6 +108,23 @@ Layout/EndOfLine: | |
| 102 108 | 
             
            Layout/ExtraSpacing:
         | 
| 103 109 | 
             
              Enabled: true
         | 
| 104 110 |  | 
| 111 | 
            +
            # Checks the indentation of the first argument in a method call.
         | 
| 112 | 
            +
            Layout/FirstArgumentIndentation:
         | 
| 113 | 
            +
              # See https://gitlab.com/gitlab-org/ruby/gems/gitlab-styles/-/issues/42
         | 
| 114 | 
            +
              EnforcedStyle: consistent
         | 
| 115 | 
            +
             | 
| 116 | 
            +
            # Checks the indentation of the first element in an array literal where the
         | 
| 117 | 
            +
            # opening bracket and the first element are on separate lines.
         | 
| 118 | 
            +
            Layout/FirstArrayElementIndentation:
         | 
| 119 | 
            +
              # See https://gitlab.com/gitlab-org/ruby/gems/gitlab-styles/-/issues/42
         | 
| 120 | 
            +
              EnforcedStyle: consistent
         | 
| 121 | 
            +
             | 
| 122 | 
            +
            # Checks the indentation of the first key in a hash literal where the opening
         | 
| 123 | 
            +
            # brace and the first key are on separate lines.
         | 
| 124 | 
            +
            Layout/FirstHashElementIndentation:
         | 
| 125 | 
            +
              # See https://gitlab.com/gitlab-org/ruby/gems/gitlab-styles/-/issues/42
         | 
| 126 | 
            +
              EnforcedStyle: consistent
         | 
| 127 | 
            +
             | 
| 105 128 | 
             
            # Checks for a line break before the first parameter in a multi-line method
         | 
| 106 129 | 
             
            # parameter definition.
         | 
| 107 130 | 
             
            Layout/FirstMethodParameterLineBreak:
         | 
| @@ -137,6 +160,17 @@ Layout/LineLength: | |
| 137 160 | 
             
              Max: 120
         | 
| 138 161 | 
             
              AllowedPatterns: ['\s#\srubocop']
         | 
| 139 162 |  | 
| 163 | 
            +
            # Checks that strings broken over multiple lines (by a backslash) contain
         | 
| 164 | 
            +
            # trailing spaces instead of leading spaces (default) or leading spaces instead
         | 
| 165 | 
            +
            # of trailing spaces.
         | 
| 166 | 
            +
            Layout/LineContinuationLeadingSpace:
         | 
| 167 | 
            +
              Enabled: true
         | 
| 168 | 
            +
             | 
| 169 | 
            +
            # Checks that the backslash of a line continuation is separated from preceding
         | 
| 170 | 
            +
            # text by exactly one space (default) or zero spaces.
         | 
| 171 | 
            +
            Layout/LineContinuationSpacing:
         | 
| 172 | 
            +
              Enabled: true
         | 
| 173 | 
            +
             | 
| 140 174 | 
             
            # Checks that the closing brace in an array literal is either on the same line
         | 
| 141 175 | 
             
            # as the last array element, or a new line.
         | 
| 142 176 | 
             
            Layout/MultilineArrayBraceLayout:
         | 
| @@ -147,6 +181,11 @@ Layout/MultilineArrayBraceLayout: | |
| 147 181 | 
             
            Layout/MultilineBlockLayout:
         | 
| 148 182 | 
             
              Enabled: true
         | 
| 149 183 |  | 
| 184 | 
            +
            # Checks the indentation of the next line after a line that ends with a string
         | 
| 185 | 
            +
            # literal and a backslash.
         | 
| 186 | 
            +
            Layout/LineEndStringConcatenationIndentation:
         | 
| 187 | 
            +
              Enabled: true
         | 
| 188 | 
            +
             | 
| 150 189 | 
             
            # Checks that the closing brace in a hash literal is either on the same line as
         | 
| 151 190 | 
             
            # the last hash element, or a new line.
         | 
| 152 191 | 
             
            Layout/MultilineHashBraceLayout:
         | 
| @@ -177,7 +216,8 @@ Layout/MultilineOperationIndentation: | |
| 177 216 | 
             
            # Here we check if the parameters on a multi-line method call or
         | 
| 178 217 | 
             
            # definition are aligned.
         | 
| 179 218 | 
             
            Layout/ParameterAlignment:
         | 
| 180 | 
            -
               | 
| 219 | 
            +
              # See https://gitlab.com/gitlab-org/ruby/gems/gitlab-styles/-/issues/42
         | 
| 220 | 
            +
              EnforcedStyle: with_fixed_indentation
         | 
| 181 221 |  | 
| 182 222 | 
             
            # Use spaces after colons.
         | 
| 183 223 | 
             
            Layout/SpaceAfterColon:
         | 
| @@ -223,6 +263,10 @@ Layout/SpaceAroundOperators: | |
| 223 263 | 
             
            Layout/SpaceBeforeBlockBraces:
         | 
| 224 264 | 
             
              Enabled: true
         | 
| 225 265 |  | 
| 266 | 
            +
            # Checks for space between the name of a receiver and a left brackets.
         | 
| 267 | 
            +
            Layout/SpaceBeforeBrackets:
         | 
| 268 | 
            +
              Enabled: true
         | 
| 269 | 
            +
             | 
| 226 270 | 
             
            # No spaces before commas.
         | 
| 227 271 | 
             
            Layout/SpaceBeforeComma:
         | 
| 228 272 | 
             
              Enabled: true
         | 
    
        data/rubocop-lint.yml
    CHANGED
    
    | @@ -1,4 +1,8 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 | 
            +
            # Checks for mistyped shorthand assignments.
         | 
| 3 | 
            +
            Lint/AmbiguousAssignment:
         | 
| 4 | 
            +
              Enabled: true
         | 
| 5 | 
            +
             | 
| 2 6 | 
             
            # Checks for ambiguous block association with method when param passed without
         | 
| 3 7 | 
             
            # parentheses.
         | 
| 4 8 | 
             
            Lint/AmbiguousBlockAssociation:
         | 
| @@ -9,10 +13,19 @@ Lint/AmbiguousBlockAssociation: | |
| 9 13 | 
             
            Lint/AmbiguousOperator:
         | 
| 10 14 | 
             
              Enabled: true
         | 
| 11 15 |  | 
| 16 | 
            +
            # Looks for expressions containing multiple binary operators where precedence
         | 
| 17 | 
            +
            # is ambiguous due to lack of parentheses.
         | 
| 18 | 
            +
            Lint/AmbiguousOperatorPrecedence:
         | 
| 19 | 
            +
              Enabled: true
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            # Checks for ambiguous ranges.
         | 
| 22 | 
            +
            Lint/AmbiguousRange:
         | 
| 23 | 
            +
              Enabled: true
         | 
| 24 | 
            +
             | 
| 12 25 | 
             
            # This cop checks for ambiguous regexp literals in the first argument of
         | 
| 13 26 | 
             
            # a method invocation without parentheses.
         | 
| 14 27 | 
             
            Lint/AmbiguousRegexpLiteral:
         | 
| 15 | 
            -
              Enabled:  | 
| 28 | 
            +
              Enabled: true
         | 
| 16 29 |  | 
| 17 30 | 
             
            # This cop checks for assignments in the conditions of
         | 
| 18 31 | 
             
            # if/while/until.
         | 
| @@ -31,6 +44,10 @@ Lint/CircularArgumentReference: | |
| 31 44 | 
             
            Lint/ConstantDefinitionInBlock: # (new in 0.91)
         | 
| 32 45 | 
             
              Enabled: true
         | 
| 33 46 |  | 
| 47 | 
            +
            # Checks for overwriting an exception with an exception result by use rescue =>.
         | 
| 48 | 
            +
            Lint/ConstantOverwrittenInRescue:
         | 
| 49 | 
            +
              Enabled: true
         | 
| 50 | 
            +
             | 
| 34 51 | 
             
            # Check for debugger calls.
         | 
| 35 52 | 
             
            Lint/Debugger:
         | 
| 36 53 | 
             
              Enabled: true
         | 
| @@ -39,17 +56,36 @@ Lint/Debugger: | |
| 39 56 | 
             
            Lint/DeprecatedClassMethods:
         | 
| 40 57 | 
             
              Enabled: true
         | 
| 41 58 |  | 
| 59 | 
            +
            # Checks for deprecated constants.
         | 
| 60 | 
            +
            Lint/DeprecatedConstants:
         | 
| 61 | 
            +
              Enabled: true
         | 
| 62 | 
            +
             | 
| 42 63 | 
             
            # Algorithmic constants for OpenSSL::Cipher and OpenSSL::Digest deprecated since OpenSSL version 2.2.0.
         | 
| 43 64 | 
             
            # Prefer passing a string instead.
         | 
| 44 65 | 
             
            # https://docs.rubocop.org/rubocop/0.89/cops_lint.html#lintdeprecatedopensslconstant
         | 
| 45 66 | 
             
            Lint/DeprecatedOpenSSLConstant:
         | 
| 46 67 | 
             
              Enabled: true
         | 
| 47 68 |  | 
| 69 | 
            +
            # Checks that there are no repeated bodies within if/unless, case-when, case-in
         | 
| 70 | 
            +
            # and rescue constructs.
         | 
| 71 | 
            +
            Lint/DuplicateBranch:
         | 
| 72 | 
            +
              Enabled: true
         | 
| 73 | 
            +
              IgnoreLiteralBranches: true
         | 
| 74 | 
            +
              IgnoreConstantBranches: true
         | 
| 75 | 
            +
             | 
| 48 76 | 
             
            # Checks that there are no repeated conditions used in if 'elsif'.
         | 
| 49 77 | 
             
            # https://docs.rubocop.org/rubocop/0.89/cops_lint.html#lintduplicateelsifcondition
         | 
| 50 78 | 
             
            Lint/DuplicateElsifCondition:
         | 
| 51 79 | 
             
              Enabled: true
         | 
| 52 80 |  | 
| 81 | 
            +
            # Checks for duplicated magic comments.
         | 
| 82 | 
            +
            Lint/DuplicateMagicComment:
         | 
| 83 | 
            +
              Enabled: true
         | 
| 84 | 
            +
             | 
| 85 | 
            +
            # Checks for duplicate elements in Regexp character classes.
         | 
| 86 | 
            +
            Lint/DuplicateRegexpCharacterClassElement:
         | 
| 87 | 
            +
              Enabled: true
         | 
| 88 | 
            +
             | 
| 53 89 | 
             
            Lint/DuplicateRequire: # (new in 0.90)
         | 
| 54 90 | 
             
              Enabled: true
         | 
| 55 91 |  | 
| @@ -66,6 +102,17 @@ Lint/EachWithObjectArgument: | |
| 66 102 | 
             
            Lint/ElseLayout:
         | 
| 67 103 | 
             
              Enabled: true
         | 
| 68 104 |  | 
| 105 | 
            +
            # Checks for blocks without a body. Such empty blocks are typically an
         | 
| 106 | 
            +
            # oversight or we should provide a comment be clearer what we’re aiming for.
         | 
| 107 | 
            +
            Lint/EmptyBlock:
         | 
| 108 | 
            +
              Enabled: true
         | 
| 109 | 
            +
             | 
| 110 | 
            +
            # Checks for classes and metaclasses without a body. Such empty classes and
         | 
| 111 | 
            +
            # metaclasses are typically an oversight or we should provide a comment to be
         | 
| 112 | 
            +
            # clearer what we’re aiming for.
         | 
| 113 | 
            +
            Lint/EmptyClass:
         | 
| 114 | 
            +
              Enabled: true
         | 
| 115 | 
            +
             | 
| 69 116 | 
             
            # Checks for the presence of if, elsif and unless branches without a body.
         | 
| 70 117 | 
             
            # https://docs.rubocop.org/rubocop/0.89/cops_lint.html#lintemptyconditionalbody
         | 
| 71 118 | 
             
            Lint/EmptyConditionalBody:
         | 
| @@ -78,6 +125,10 @@ Lint/EmptyEnsure: | |
| 78 125 | 
             
            Lint/EmptyFile: # (new in 0.90)
         | 
| 79 126 | 
             
              Enabled: true
         | 
| 80 127 |  | 
| 128 | 
            +
            # Checks for the presence of in pattern branches without a body.
         | 
| 129 | 
            +
            Lint/EmptyInPattern:
         | 
| 130 | 
            +
              Enabled: true
         | 
| 131 | 
            +
             | 
| 81 132 | 
             
            # Checks for the presence of `when` branches without a body.
         | 
| 82 133 | 
             
            Lint/EmptyWhen:
         | 
| 83 134 | 
             
              Enabled: true
         | 
| @@ -111,11 +162,21 @@ Lint/IdentityComparison: # (new in 0.91) | |
| 111 162 | 
             
            Lint/ImplicitStringConcatenation:
         | 
| 112 163 | 
             
              Enabled: true
         | 
| 113 164 |  | 
| 165 | 
            +
            # This cop checks for IO.select that is incompatible with Fiber Scheduler since
         | 
| 166 | 
            +
            # Ruby 3.0.
         | 
| 167 | 
            +
            Lint/IncompatibleIoSelectWithFiberScheduler:
         | 
| 168 | 
            +
              Enabled: true
         | 
| 169 | 
            +
             | 
| 114 170 | 
             
            # Checks for attempts to use `private` or `protected` to set the visibility
         | 
| 115 171 | 
             
            # of a class method, which does not work.
         | 
| 116 172 | 
             
            Lint/IneffectiveAccessModifier:
         | 
| 117 173 | 
             
              Enabled: false
         | 
| 118 174 |  | 
| 175 | 
            +
            # Checks uses of lambda without a literal block. It emulates the following
         | 
| 176 | 
            +
            # warning in Ruby 3.0:
         | 
| 177 | 
            +
            Lint/LambdaWithoutLiteralBlock:
         | 
| 178 | 
            +
              Enabled: true
         | 
| 179 | 
            +
             | 
| 119 180 | 
             
            # Checks of literals used in conditions.
         | 
| 120 181 | 
             
            Lint/LiteralAsCondition:
         | 
| 121 182 | 
             
              Enabled: true
         | 
| @@ -147,11 +208,30 @@ Lint/NestedMethodDefinition: | |
| 147 208 | 
             
            Lint/NextWithoutAccumulator:
         | 
| 148 209 | 
             
              Enabled: true
         | 
| 149 210 |  | 
| 211 | 
            +
            # Checks for non-atomic file operation. And then replace it with a nearly
         | 
| 212 | 
            +
            # equivalent and atomic method.
         | 
| 213 | 
            +
            Lint/NonAtomicFileOperation:
         | 
| 214 | 
            +
              Enabled: true
         | 
| 215 | 
            +
             | 
| 216 | 
            +
            # Checks for the presence of a return inside a begin..end block in assignment
         | 
| 217 | 
            +
            # contexts.
         | 
| 218 | 
            +
            Lint/NoReturnInBeginEndBlocks:
         | 
| 219 | 
            +
              Enabled: true
         | 
| 220 | 
            +
             | 
| 221 | 
            +
            # Checks for uses of numbered parameter assignment.
         | 
| 222 | 
            +
            # Reason: Ruby >= 3.0 causes an error so no need to enable it.
         | 
| 223 | 
            +
            Lint/NumberedParameterAssignment:
         | 
| 224 | 
            +
              Enabled: false
         | 
| 225 | 
            +
             | 
| 150 226 | 
             
            # Looks for references of Regexp captures that are out of range and thus always returns nil.
         | 
| 151 227 | 
             
            # https://docs.rubocop.org/rubocop/0.89/cops_lint.html#lintoutofrangeregexpref
         | 
| 152 228 | 
             
            Lint/OutOfRangeRegexpRef:
         | 
| 153 229 | 
             
              Enabled: true
         | 
| 154 230 |  | 
| 231 | 
            +
            # Checks for unintended or-assignment to a constant.
         | 
| 232 | 
            +
            Lint/OrAssignmentToConstant:
         | 
| 233 | 
            +
              Enabled: true
         | 
| 234 | 
            +
             | 
| 155 235 | 
             
            # Checks for method calls with a space before the opening parenthesis.
         | 
| 156 236 | 
             
            Lint/ParenthesesAsGroupedExpression:
         | 
| 157 237 | 
             
              Enabled: true
         | 
| @@ -165,6 +245,11 @@ Lint/RaiseException: | |
| 165 245 | 
             
            Lint/RandOne:
         | 
| 166 246 | 
             
              Enabled: true
         | 
| 167 247 |  | 
| 248 | 
            +
            # This cop checks for redundant sort method to Dir.glob and Dir[]. Sort globbed
         | 
| 249 | 
            +
            # results by default in Ruby 3.0.
         | 
| 250 | 
            +
            Lint/RedundantDirGlobSort:
         | 
| 251 | 
            +
              Enabled: true
         | 
| 252 | 
            +
             | 
| 168 253 | 
             
            # This cop checks for unneeded usages of splat expansion
         | 
| 169 254 | 
             
            Lint/RedundantSplatExpansion:
         | 
| 170 255 | 
             
              Enabled: false
         | 
| @@ -173,10 +258,23 @@ Lint/RedundantSplatExpansion: | |
| 173 258 | 
             
            Lint/RedundantStringCoercion:
         | 
| 174 259 | 
             
              Enabled: true
         | 
| 175 260 |  | 
| 261 | 
            +
            # Checks if include or prepend is called in refine block.
         | 
| 262 | 
            +
            Lint/RefinementImportMethods:
         | 
| 263 | 
            +
              Enabled: true
         | 
| 264 | 
            +
             | 
| 176 265 | 
             
            # Use parentheses in the method call to avoid confusion about precedence.
         | 
| 177 266 | 
             
            Lint/RequireParentheses:
         | 
| 178 267 | 
             
              Enabled: true
         | 
| 179 268 |  | 
| 269 | 
            +
            # Checks that a range literal is enclosed in parentheses when the end of the
         | 
| 270 | 
            +
            # range is at a line break.
         | 
| 271 | 
            +
            Lint/RequireRangeParentheses:
         | 
| 272 | 
            +
              Enabled: true
         | 
| 273 | 
            +
             | 
| 274 | 
            +
            # Checks for uses a file requiring itself with require_relative.
         | 
| 275 | 
            +
            Lint/RequireRelativeSelfPath:
         | 
| 276 | 
            +
              Enabled: true
         | 
| 277 | 
            +
             | 
| 180 278 | 
             
            # Avoid rescuing the Exception class.
         | 
| 181 279 | 
             
            Lint/RescueException:
         | 
| 182 280 | 
             
              Enabled: true
         | 
| @@ -207,6 +305,17 @@ Lint/StructNewOverride: | |
| 207 305 | 
             
            Lint/SuppressedException:
         | 
| 208 306 | 
             
              Enabled: false
         | 
| 209 307 |  | 
| 308 | 
            +
            # Checks for uses of literal strings converted to a symbol where a literal
         | 
| 309 | 
            +
            # symbol could be used instead.
         | 
| 310 | 
            +
            Lint/SymbolConversion:
         | 
| 311 | 
            +
              Enabled: true
         | 
| 312 | 
            +
              EnforcedStyle: strict
         | 
| 313 | 
            +
             | 
| 314 | 
            +
            # Ensures that to_enum/enum_for, called for the current method, has correct
         | 
| 315 | 
            +
            # arguments.
         | 
| 316 | 
            +
            Lint/ToEnumArguments:
         | 
| 317 | 
            +
              Enabled: true
         | 
| 318 | 
            +
             | 
| 210 319 | 
             
            # Checks for top level return with arguments.
         | 
| 211 320 | 
             
            # https://docs.rubocop.org/rubocop/0.89/cops_lint.html#linttoplevelreturnwithargument
         | 
| 212 321 | 
             
            Lint/TopLevelReturnWithArgument:
         | 
| @@ -215,10 +324,25 @@ Lint/TopLevelReturnWithArgument: | |
| 215 324 | 
             
            Lint/TrailingCommaInAttributeDeclaration: # (new in 0.90)
         | 
| 216 325 | 
             
              Enabled: true
         | 
| 217 326 |  | 
| 327 | 
            +
            # Checks for "triple quotes" (strings delimited by any odd number of quotes
         | 
| 328 | 
            +
            # greater than 1).
         | 
| 329 | 
            +
            Lint/TripleQuotes:
         | 
| 330 | 
            +
              Enabled: true
         | 
| 331 | 
            +
             | 
| 218 332 | 
             
            # Do not use prefix `_` for a variable that is used.
         | 
| 219 333 | 
             
            Lint/UnderscorePrefixedVariableName:
         | 
| 220 334 | 
             
              Enabled: true
         | 
| 221 335 |  | 
| 336 | 
            +
            # Checks for a block that is known to need more positional block arguments than
         | 
| 337 | 
            +
            # are given.
         | 
| 338 | 
            +
            Lint/UnexpectedBlockArity:
         | 
| 339 | 
            +
              Enabled: true
         | 
| 340 | 
            +
             | 
| 341 | 
            +
            # Looks for reduce or inject blocks where the value returned (implicitly or
         | 
| 342 | 
            +
            # explicitly) does not include the accumulator.
         | 
| 343 | 
            +
            Lint/UnmodifiedReduceAccumulator:
         | 
| 344 | 
            +
              Enabled: true
         | 
| 345 | 
            +
             | 
| 222 346 | 
             
            # This cop checks for using Fixnum or Bignum constant
         | 
| 223 347 | 
             
            Lint/UnifiedInteger:
         | 
| 224 348 | 
             
              Enabled: true
         | 
| @@ -234,11 +358,11 @@ Lint/UnreachableLoop: | |
| 234 358 |  | 
| 235 359 | 
             
            # This cop checks for unused block arguments.
         | 
| 236 360 | 
             
            Lint/UnusedBlockArgument:
         | 
| 237 | 
            -
              Enabled:  | 
| 361 | 
            +
              Enabled: true
         | 
| 238 362 |  | 
| 239 363 | 
             
            # This cop checks for unused method arguments.
         | 
| 240 364 | 
             
            Lint/UnusedMethodArgument:
         | 
| 241 | 
            -
              Enabled:  | 
| 365 | 
            +
              Enabled: true
         | 
| 242 366 |  | 
| 243 367 | 
             
            # Checks for useless access modifiers.
         | 
| 244 368 | 
             
            Lint/UselessAccessModifier:
         | 
| @@ -263,6 +387,10 @@ Lint/UselessSetterCall: | |
| 263 387 | 
             
            Lint/UselessTimes: # (new in 0.91)
         | 
| 264 388 | 
             
              Enabled: true
         | 
| 265 389 |  | 
| 390 | 
            +
            # Looks for ruby2_keywords calls for methods that do not need it.
         | 
| 391 | 
            +
            Lint/UselessRuby2Keywords:
         | 
| 392 | 
            +
              Enabled: true
         | 
| 393 | 
            +
             | 
| 266 394 | 
             
            # Possible use of operator/literal/variable in void context.
         | 
| 267 395 | 
             
            Lint/Void:
         | 
| 268 396 | 
             
              Enabled: true
         | 
    
        data/rubocop-naming.yml
    CHANGED
    
    | @@ -27,6 +27,11 @@ Naming/FileName: | |
| 27 27 | 
             
            Naming/MemoizedInstanceVariableName:
         | 
| 28 28 | 
             
              Enabled: false
         | 
| 29 29 |  | 
| 30 | 
            +
            # Recommends the use of inclusive language instead of problematic terms.
         | 
| 31 | 
            +
            Naming/InclusiveLanguage:
         | 
| 32 | 
            +
              Enabled: true
         | 
| 33 | 
            +
              CheckStrings: true
         | 
| 34 | 
            +
             | 
| 30 35 | 
             
            # Use the configured style when naming methods.
         | 
| 31 36 | 
             
            Naming/MethodName:
         | 
| 32 37 | 
             
              Enabled: true
         |