rspec/rspec-core

View on GitHub

Showing 94 of 94 total issues

Similar blocks of code found in 4 locations. Consider refactoring.

      def append_after(scope=nil, *meta, &block)
        handle_suite_hook(scope, meta) do
          @after_suite_hooks << Hooks::AfterHook.new(block, {})
        end || begin
          # defeat Ruby 2.5 lazy proc allocation to ensure
Severity: Major
Found in lib/rspec/core/configuration.rb and 3 other locations - About 40 mins to fix
lib/rspec/core/configuration.rb on lines 1941..1954
lib/rspec/core/configuration.rb on lines 1971..1984
lib/rspec/core/configuration.rb on lines 1996..2009

Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

Tuning

This issue has a mass of 38.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

Refactorings

Further Reading

Method create has 5 arguments (exceeds 4 allowed). Consider refactoring.

        def self.create(parent_group_metadata, user_metadata, example_group_index, *args, &block)
Severity: Minor
Found in lib/rspec/core/metadata.rb - About 35 mins to fix

    Method find_and_eval_shared has 5 arguments (exceeds 4 allowed). Consider refactoring.

          def self.find_and_eval_shared(label, name, inclusion_location, *args, &customization_block)
    Severity: Minor
    Found in lib/rspec/core/example_group.rb - About 35 mins to fix

      Method subclass has 5 arguments (exceeds 4 allowed). Consider refactoring.

            def self.subclass(parent, description, args, registration_collection, &example_group_block)
      Severity: Minor
      Found in lib/rspec/core/example_group.rb - About 35 mins to fix

        Method create has 5 arguments (exceeds 4 allowed). Consider refactoring.

                def self.create(group_metadata, user_metadata, index_provider, description, block)
        Severity: Minor
        Found in lib/rspec/core/metadata.rb - About 35 mins to fix

          Method define_mixed_in_module has 5 arguments (exceeds 4 allowed). Consider refactoring.

                def define_mixed_in_module(mod, filters, mod_list, config_method, &block)
          Severity: Minor
          Found in lib/rspec/core/configuration.rb - About 35 mins to fix

            Method process has 5 arguments (exceeds 4 allowed). Consider refactoring.

                    def process(host, parent_groups, globals, position, scope)
            Severity: Minor
            Found in lib/rspec/core/hooks.rb - About 35 mins to fix

              Method initialize has 5 arguments (exceeds 4 allowed). Consider refactoring.

                      def initialize(metadata, user_metadata, index_provider, description_args, block)
              Severity: Minor
              Found in lib/rspec/core/metadata.rb - About 35 mins to fix

                Method for has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.

                      def self.for(example)
                        execution_result = example.execution_result
                
                        return SkippedExampleNotification.new(example) if execution_result.example_skipped?
                        return new(example) unless execution_result.status == :pending || execution_result.status == :failed
                Severity: Minor
                Found in lib/rspec/core/notifications.rb - About 35 mins to fix

                Cognitive Complexity

                Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                A method's cognitive complexity is based on a few simple rules:

                • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                • Code is considered more complex for each "break in the linear flow of the code"
                • Code is considered more complex when "flow breaking structures are nested"

                Further reading

                Method run has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.

                      def self.run(reporter=RSpec::Core::NullReporter)
                        return if RSpec.world.wants_to_quit
                        reporter.example_group_started(self)
                
                        should_run_context_hooks = descendant_filtered_examples.any?
                Severity: Minor
                Found in lib/rspec/core/example_group.rb - About 35 mins to fix

                Cognitive Complexity

                Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                A method's cognitive complexity is based on a few simple rules:

                • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                • Code is considered more complex for each "break in the linear flow of the code"
                • Code is considered more complex when "flow breaking structures are nested"

                Further reading

                Method read_failed_lines has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.

                        def read_failed_lines
                          matching_line = find_failed_line
                          unless matching_line
                            return ["Unable to find matching line from backtrace"]
                          end
                Severity: Minor
                Found in lib/rspec/core/formatters/exception_presenter.rb - About 35 mins to fix

                Cognitive Complexity

                Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                A method's cognitive complexity is based on a few simple rules:

                • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                • Code is considered more complex for each "break in the linear flow of the code"
                • Code is considered more complex when "flow breaking structures are nested"

                Further reading

                Method add has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.

                    def add(formatter_to_use, *paths)
                      # If a formatter instance was passed, we can register it directly,
                      # with no need for any of the further processing that happens below.
                      if Loader.formatters.key?(formatter_to_use.class)
                        register formatter_to_use, notifications_for(formatter_to_use.class)
                Severity: Minor
                Found in lib/rspec/core/formatters.rb - About 35 mins to fix

                Cognitive Complexity

                Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                A method's cognitive complexity is based on a few simple rules:

                • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                • Code is considered more complex for each "break in the linear flow of the code"
                • Code is considered more complex when "flow breaking structures are nested"

                Further reading

                Method running_in_drb? has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.

                      def self.running_in_drb?
                        return false unless defined?(DRb)
                
                        server = begin
                                   DRb.current_server
                Severity: Minor
                Found in lib/rspec/core/runner.rb - About 35 mins to fix

                Cognitive Complexity

                Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                A method's cognitive complexity is based on a few simple rules:

                • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                • Code is considered more complex for each "break in the linear flow of the code"
                • Code is considered more complex when "flow breaking structures are nested"

                Further reading

                Method example_failed has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.

                        def example_failed(failure)
                          @failed_examples << failure.example
                          unless @header_red
                            @header_red = true
                            @printer.make_header_red
                Severity: Minor
                Found in lib/rspec/core/formatters/html_formatter.rb - About 35 mins to fix

                Cognitive Complexity

                Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                A method's cognitive complexity is based on a few simple rules:

                • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                • Code is considered more complex for each "break in the linear flow of the code"
                • Code is considered more complex when "flow breaking structures are nested"

                Further reading

                Method multiple_exception_summarizer has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.

                          def multiple_exception_summarizer(exception, prior_detail_formatter, color)
                            lambda do |example, colorizer|
                              summary = if exception.aggregation_metadata[:hide_backtrace]
                                          # Since the backtrace is hidden, the subfailures will come
                                          # immediately after this, and using `:` will read well.
                Severity: Minor
                Found in lib/rspec/core/formatters/exception_presenter.rb - About 35 mins to fix

                Cognitive Complexity

                Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                A method's cognitive complexity is based on a few simple rules:

                • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                • Code is considered more complex for each "break in the linear flow of the code"
                • Code is considered more complex when "flow breaking structures are nested"

                Further reading

                Avoid too many return statements within this method.

                            return filter_applies_to_any_value?(key, filter_value, metadata) if Array === meta_value
                Severity: Major
                Found in lib/rspec/core/metadata_filter.rb - About 30 mins to fix

                  Avoid too many return statements within this method.

                              return proc_filter_applies?(key, filter_value, metadata) if Proc === filter_value
                  Severity: Major
                  Found in lib/rspec/core/metadata_filter.rb - About 30 mins to fix

                    Avoid too many return statements within this method.

                                return true if TrueClass === filter_value && meta_value
                    Severity: Major
                    Found in lib/rspec/core/metadata_filter.rb - About 30 mins to fix

                      Method run_specs has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.

                            def run_specs(example_groups)
                              examples_count = @world.example_count(example_groups)
                              success = @configuration.reporter.report(examples_count) do |reporter|
                                @configuration.with_suite_hooks do
                                  if examples_count == 0 && @configuration.fail_if_no_examples
                      Severity: Minor
                      Found in lib/rspec/core/runner.rb - About 25 mins to fix

                      Cognitive Complexity

                      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                      A method's cognitive complexity is based on a few simple rules:

                      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                      • Code is considered more complex for each "break in the linear flow of the code"
                      • Code is considered more complex when "flow breaking structures are nested"

                      Further reading

                      Method let has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.

                              def let(name, &block)
                                # We have to pass the block directly to `define_method` to
                                # allow it to use method constructs like `super` and `return`.
                                raise "#let or #subject called without a block" if block.nil?
                                raise(
                      Severity: Minor
                      Found in lib/rspec/core/memoized_helpers.rb - About 25 mins to fix

                      Cognitive Complexity

                      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                      A method's cognitive complexity is based on a few simple rules:

                      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                      • Code is considered more complex for each "break in the linear flow of the code"
                      • Code is considered more complex when "flow breaking structures are nested"

                      Further reading

                      Method run_examples has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.

                            def self.run_examples(reporter)
                              ordering_strategy.order(filtered_examples).map do |example|
                                next if RSpec.world.wants_to_quit
                                instance = new(example.inspect_output)
                                set_ivars(instance, before_context_ivars)
                      Severity: Minor
                      Found in lib/rspec/core/example_group.rb - About 25 mins to fix

                      Cognitive Complexity

                      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                      A method's cognitive complexity is based on a few simple rules:

                      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                      • Code is considered more complex for each "break in the linear flow of the code"
                      • Code is considered more complex when "flow breaking structures are nested"

                      Further reading

                      Method expression_lines has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.

                                def expression_lines
                                  line_range = line_range_of_expression
                      
                                  if max_line_count && line_range.count > max_line_count
                                    line_range = (line_range.begin)..(line_range.begin + max_line_count - 1)
                      Severity: Minor
                      Found in lib/rspec/core/formatters/snippet_extractor.rb - About 25 mins to fix

                      Cognitive Complexity

                      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                      A method's cognitive complexity is based on a few simple rules:

                      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                      • Code is considered more complex for each "break in the linear flow of the code"
                      • Code is considered more complex when "flow breaking structures are nested"

                      Further reading

                      Method expression_outmost_node? has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.

                                def expression_outmost_node?(node)
                                  return true unless node.parent
                                  return false if node.type.to_s.start_with?('@')
                                  ![node, node.parent].all? do |n|
                                    # See `Ripper::PARSER_EVENTS` for the complete list of sexp types.
                      Severity: Minor
                      Found in lib/rspec/core/formatters/snippet_extractor.rb - About 25 mins to fix

                      Cognitive Complexity

                      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                      A method's cognitive complexity is based on a few simple rules:

                      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                      • Code is considered more complex for each "break in the linear flow of the code"
                      • Code is considered more complex when "flow breaking structures are nested"

                      Further reading

                      Method ascending has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.

                            def self.ascending(metadata)
                              yield metadata
                              return unless (group_metadata = metadata.fetch(:example_group) { metadata[:parent_example_group] })
                      
                              loop do
                      Severity: Minor
                      Found in lib/rspec/core/metadata.rb - About 25 mins to fix

                      Cognitive Complexity

                      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                      A method's cognitive complexity is based on a few simple rules:

                      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                      • Code is considered more complex for each "break in the linear flow of the code"
                      • Code is considered more complex when "flow breaking structures are nested"

                      Further reading

                      Method warn_with has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.

                            def warn_with(message, options={})
                              if options[:use_spec_location_as_call_site]
                                message += "." unless message.end_with?(".")
                      
                                if RSpec.current_example
                      Severity: Minor
                      Found in lib/rspec/core/warnings.rb - About 25 mins to fix

                      Cognitive Complexity

                      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                      A method's cognitive complexity is based on a few simple rules:

                      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                      • Code is considered more complex for each "break in the linear flow of the code"
                      • Code is considered more complex when "flow breaking structures are nested"

                      Further reading

                      Method file_inclusion_specification has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.

                            def file_inclusion_specification
                              if ENV['SPEC']
                                FileList[ENV['SPEC']].sort
                              elsif String === pattern && !File.exist?(pattern)
                                return if [*rspec_opts].any? { |opt| opt =~ /--pattern/ }
                      Severity: Minor
                      Found in lib/rspec/core/rake_task.rb - About 25 mins to fix

                      Cognitive Complexity

                      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                      A method's cognitive complexity is based on a few simple rules:

                      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                      • Code is considered more complex for each "break in the linear flow of the code"
                      • Code is considered more complex when "flow breaking structures are nested"

                      Further reading

                      Method format_backtrace has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.

                            def format_backtrace(backtrace, options={})
                              return [] unless backtrace
                              return backtrace if options[:full_backtrace] || backtrace.empty?
                      
                              backtrace.map { |l| backtrace_line(l) }.compact.
                      Severity: Minor
                      Found in lib/rspec/core/backtrace_formatter.rb - About 25 mins to fix

                      Cognitive Complexity

                      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                      A method's cognitive complexity is based on a few simple rules:

                      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                      • Code is considered more complex for each "break in the linear flow of the code"
                      • Code is considered more complex when "flow breaking structures are nested"

                      Further reading

                      Method persist_example_statuses has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.

                            def persist_example_statuses
                              return if @configuration.dry_run
                              return unless (path = @configuration.example_status_persistence_file_path)
                      
                              ExampleStatusPersister.persist(@world.all_examples, path)
                      Severity: Minor
                      Found in lib/rspec/core/runner.rb - About 25 mins to fix

                      Cognitive Complexity

                      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                      A method's cognitive complexity is based on a few simple rules:

                      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                      • Code is considered more complex for each "break in the linear flow of the code"
                      • Code is considered more complex when "flow breaking structures are nested"

                      Further reading

                      Method parse has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.

                          def parse(source=nil)
                            return { :files_or_directories_to_run => [] } if original_args.empty?
                            args = original_args.dup
                      
                            options = args.delete('--tty') ? { :tty => true } : {}
                      Severity: Minor
                      Found in lib/rspec/core/option_parser.rb - About 25 mins to fix

                      Cognitive Complexity

                      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                      A method's cognitive complexity is based on a few simple rules:

                      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                      • Code is considered more complex for each "break in the linear flow of the code"
                      • Code is considered more complex when "flow breaking structures are nested"

                      Further reading

                      Method statuses_from_this_run has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.

                            def statuses_from_this_run
                              @examples.map do |ex|
                                result = ex.execution_result
                      
                                {
                      Severity: Minor
                      Found in lib/rspec/core/example_status_persister.rb - About 25 mins to fix

                      Cognitive Complexity

                      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                      A method's cognitive complexity is based on a few simple rules:

                      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                      • Code is considered more complex for each "break in the linear flow of the code"
                      • Code is considered more complex when "flow breaking structures are nested"

                      Further reading

                      Method bisect_over has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.

                              def bisect_over(candidate_ids)
                                return if candidate_ids.one?
                      
                                notify(
                                  :bisect_round_started,
                      Severity: Minor
                      Found in lib/rspec/core/bisect/example_minimizer.rb - About 25 mins to fix

                      Cognitive Complexity

                      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                      A method's cognitive complexity is based on a few simple rules:

                      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                      • Code is considered more complex for each "break in the linear flow of the code"
                      • Code is considered more complex when "flow breaking structures are nested"

                      Further reading

                      Method run_suite_hooks has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.

                            def run_suite_hooks(hook_description, hooks)
                              context = SuiteHookContext.new(hook_description, reporter)
                      
                              hooks.each do |hook|
                                begin
                      Severity: Minor
                      Found in lib/rspec/core/configuration.rb - About 25 mins to fix

                      Cognitive Complexity

                      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                      A method's cognitive complexity is based on a few simple rules:

                      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                      • Code is considered more complex for each "break in the linear flow of the code"
                      • Code is considered more complex when "flow breaking structures are nested"

                      Further reading

                      Similar blocks of code found in 3 locations. Consider refactoring.

                        x.report("non-threadsafe (config)  ") do
                          i = ConfigNonThreadSafeHost::Subclass.new
                          i.name; i.name; i.name; i.name; i.name
                          i.name; i.name; i.name; i.name; i.name
                      Severity: Minor
                      Found in benchmarks/threadsafe_let_block.rb and 2 other locations - About 25 mins to fix
                      benchmarks/threadsafe_let_block.rb on lines 179..182
                      benchmarks/threadsafe_let_block.rb on lines 191..194

                      Duplicated Code

                      Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                      Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                      When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                      Tuning

                      This issue has a mass of 29.

                      We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                      The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                      If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                      See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                      Refactorings

                      Further Reading

                      Similar blocks of code found in 3 locations. Consider refactoring.

                        x.report("non-threadsafe (original)") do
                          i = OriginalNonThreadSafeHost::Subclass.new
                          i.name; i.name; i.name; i.name; i.name
                          i.name; i.name; i.name; i.name; i.name
                      Severity: Minor
                      Found in benchmarks/threadsafe_let_block.rb and 2 other locations - About 25 mins to fix
                      benchmarks/threadsafe_let_block.rb on lines 185..188
                      benchmarks/threadsafe_let_block.rb on lines 191..194

                      Duplicated Code

                      Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                      Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                      When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                      Tuning

                      This issue has a mass of 29.

                      We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                      The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                      If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                      See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                      Refactorings

                      Further Reading

                      Similar blocks of code found in 3 locations. Consider refactoring.

                        x.report("threadsafe               ") do
                          i = ThreadSafeHost::Subclass.new
                          i.name; i.name; i.name; i.name; i.name
                          i.name; i.name; i.name; i.name; i.name
                      Severity: Minor
                      Found in benchmarks/threadsafe_let_block.rb and 2 other locations - About 25 mins to fix
                      benchmarks/threadsafe_let_block.rb on lines 179..182
                      benchmarks/threadsafe_let_block.rb on lines 185..188

                      Duplicated Code

                      Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                      Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                      When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                      Tuning

                      This issue has a mass of 29.

                      We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                      The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                      If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                      See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                      Refactorings

                      Further Reading

                      Similar blocks of code found in 3 locations. Consider refactoring.

                        x.report("non-threadsafe (original)") do
                          i = OriginalNonThreadSafeHost.new
                          i.name; i.name; i.name; i.name; i.name
                          i.name; i.name; i.name; i.name; i.name
                      Severity: Minor
                      Found in benchmarks/threadsafe_let_block.rb and 2 other locations - About 20 mins to fix
                      benchmarks/threadsafe_let_block.rb on lines 153..156
                      benchmarks/threadsafe_let_block.rb on lines 159..162

                      Duplicated Code

                      Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                      Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                      When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                      Tuning

                      This issue has a mass of 28.

                      We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                      The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                      If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                      See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                      Refactorings

                      Further Reading

                      Similar blocks of code found in 3 locations. Consider refactoring.

                        x.report("non-threadsafe (config)  ") do
                          i = ConfigNonThreadSafeHost.new
                          i.name; i.name; i.name; i.name; i.name
                          i.name; i.name; i.name; i.name; i.name
                      Severity: Minor
                      Found in benchmarks/threadsafe_let_block.rb and 2 other locations - About 20 mins to fix
                      benchmarks/threadsafe_let_block.rb on lines 147..150
                      benchmarks/threadsafe_let_block.rb on lines 159..162

                      Duplicated Code

                      Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                      Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                      When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                      Tuning

                      This issue has a mass of 28.

                      We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                      The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                      If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                      See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                      Refactorings

                      Further Reading

                      Similar blocks of code found in 3 locations. Consider refactoring.

                        x.report("threadsafe               ") do
                          i = ThreadSafeHost.new
                          i.name; i.name; i.name; i.name; i.name
                          i.name; i.name; i.name; i.name; i.name
                      Severity: Minor
                      Found in benchmarks/threadsafe_let_block.rb and 2 other locations - About 20 mins to fix
                      benchmarks/threadsafe_let_block.rb on lines 147..150
                      benchmarks/threadsafe_let_block.rb on lines 153..156

                      Duplicated Code

                      Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                      Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                      When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                      Tuning

                      This issue has a mass of 28.

                      We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                      The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                      If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                      See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                      Refactorings

                      Further Reading

                      Similar blocks of code found in 2 locations. Consider refactoring.

                      class ThreadSafeHost < HostBase
                        Subclass = prepare_using RSpec::Core::MemoizedHelpers,
                          :initialize => lambda { |*| @__memoized = ThreadsafeMemoized.new },
                          :verify     => lambda { |*| expect(__memoized).to be_a_kind_of RSpec::Core::MemoizedHelpers::ThreadsafeMemoized }
                      end
                      Severity: Minor
                      Found in benchmarks/threadsafe_let_block.rb and 1 other location - About 20 mins to fix
                      benchmarks/threadsafe_let_block.rb on lines 114..118

                      Duplicated Code

                      Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                      Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                      When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                      Tuning

                      This issue has a mass of 27.

                      We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                      The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                      If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                      See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                      Refactorings

                      Further Reading

                      Similar blocks of code found in 2 locations. Consider refactoring.

                      class ConfigNonThreadSafeHost < HostBase
                        Subclass = prepare_using RSpec::Core::MemoizedHelpers,
                          :initialize => lambda { |*| @__memoized = NonThreadSafeMemoized.new },
                          :verify     => lambda { |*| expect(__memoized).to be_a_kind_of RSpec::Core::MemoizedHelpers::NonThreadSafeMemoized }
                      end
                      Severity: Minor
                      Found in benchmarks/threadsafe_let_block.rb and 1 other location - About 20 mins to fix
                      benchmarks/threadsafe_let_block.rb on lines 108..112

                      Duplicated Code

                      Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                      Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                      When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                      Tuning

                      This issue has a mass of 27.

                      We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                      The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                      If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                      See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                      Refactorings

                      Further Reading

                      Identical blocks of code found in 2 locations. Consider refactoring.

                        def self.module_for(example_group)
                          get_constant_or_yield(example_group, :LetDefinitions) do
                            mod = Module.new do
                              include Module.new {
                                example_group.const_set(:NamedSubjectPreventSuper, self)
                      Severity: Minor
                      Found in benchmarks/threadsafe_let_block.rb and 1 other location - About 15 mins to fix
                      lib/rspec/core/memoized_helpers.rb on lines 502..511

                      Duplicated Code

                      Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                      Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                      When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                      Tuning

                      This issue has a mass of 25.

                      We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                      The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                      If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                      See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                      Refactorings

                      Further Reading

                      Identical blocks of code found in 2 locations. Consider refactoring.

                            def self.module_for(example_group)
                              get_constant_or_yield(example_group, :LetDefinitions) do
                                mod = Module.new do
                                  include(Module.new {
                                    example_group.const_set(:NamedSubjectPreventSuper, self)
                      Severity: Minor
                      Found in lib/rspec/core/memoized_helpers.rb and 1 other location - About 15 mins to fix
                      benchmarks/threadsafe_let_block.rb on lines 34..43

                      Duplicated Code

                      Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                      Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                      When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                      Tuning

                      This issue has a mass of 25.

                      We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                      The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                      If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                      See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                      Refactorings

                      Further Reading

                      Similar blocks of code found in 2 locations. Consider refactoring.

                            implementations.each do |prefix, description|
                              x.report("Example match -- #{description} singleton group support") do |times|
                                prepare_implementation(prefix)
                                define_and_run_examples("Example match/#{description}", times, example_meta: { apply_it: true })
                      Severity: Minor
                      Found in benchmarks/singleton_example_groups/helper.rb and 1 other location - About 15 mins to fix
                      benchmarks/singleton_example_groups/helper.rb on lines 103..106

                      Duplicated Code

                      Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                      Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                      When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                      Tuning

                      This issue has a mass of 25.

                      We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                      The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                      If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                      See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                      Refactorings

                      Further Reading

                      Similar blocks of code found in 2 locations. Consider refactoring.

                            implementations.each do |prefix, description|
                              x.report("Group match -- #{description} singleton group support") do |times|
                                prepare_implementation(prefix)
                                define_and_run_examples("Group match/#{description}", times, group_meta: { apply_it: true })
                      Severity: Minor
                      Found in benchmarks/singleton_example_groups/helper.rb and 1 other location - About 15 mins to fix
                      benchmarks/singleton_example_groups/helper.rb on lines 96..99

                      Duplicated Code

                      Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                      Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                      When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                      Tuning

                      This issue has a mass of 25.

                      We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                      The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                      If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                      See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                      Refactorings

                      Further Reading

                      Severity
                      Category