jdantonio/concurrent-ruby

View on GitHub

Showing 303 of 498 total issues

Method compute_physical_processor_count has 31 lines of code (exceeds 25 allowed). Consider refactoring.
Open

      def compute_physical_processor_count
        ppc = case RbConfig::CONFIG["target_os"]
              when /darwin\d\d/
                IO.popen("/usr/sbin/sysctl -n hw.physicalcpu", &:read).to_i
              when /linux/
Severity: Minor
Found in lib/concurrent-ruby/concurrent/utility/processor_counter.rb - About 1 hr to fix

    Method atomically has 31 lines of code (exceeds 25 allowed). Consider refactoring.
    Open

      def atomically
        raise ArgumentError.new('no block given') unless block_given?
    
        # Get the current transaction
    
    
    Severity: Minor
    Found in lib/concurrent-ruby/concurrent/tvar.rb - About 1 hr to fix

      Method attr_volatile has 30 lines of code (exceeds 25 allowed). Consider refactoring.
      Open

              def attr_volatile(*attr_names)
                return if attr_names.empty?
                include(Module.new do
                  atomic_ref_setup = attr_names.map {|attr_name| "@__#{attr_name} = Concurrent::AtomicReference.new"}
                  initialize_copy_setup = attr_names.zip(atomic_ref_setup).map do |attr_name, ref_setup|
      Severity: Minor
      Found in lib/concurrent-ruby/concurrent/thread_safe/util/volatile.rb - About 1 hr to fix

        Method ns_pop_op has 30 lines of code (exceeds 25 allowed). Consider refactoring.
        Open

              def ns_pop_op(matcher, probe, include_channel)
                message = ns_shift_message matcher
        
                # got message from buffer
                if message != NOTHING
        Severity: Minor
        Found in lib/concurrent-ruby-edge/concurrent/edge/channel.rb - About 1 hr to fix

          Method acquire_read_lock has 30 lines of code (exceeds 25 allowed). Consider refactoring.
          Open

              def acquire_read_lock
                if (held = @HeldCount.value) > 0
                  # If we already have a lock, there's no need to wait
                  if held & READ_LOCK_MASK == 0
                    # But we do need to update the counter, if we were holding a write
          Severity: Minor
          Found in lib/concurrent-ruby/concurrent/atomic/reentrant_read_write_lock.rb - About 1 hr to fix

            Method ns_initialize has 29 lines of code (exceeds 25 allowed). Consider refactoring.
            Open

                  def ns_initialize(opts)
                    min_length       = opts.fetch(:min_threads, DEFAULT_MIN_POOL_SIZE).to_i
                    max_length       = opts.fetch(:max_threads, DEFAULT_MAX_POOL_SIZE).to_i
                    idletime         = opts.fetch(:idletime, DEFAULT_THREAD_IDLETIMEOUT).to_i
                    @max_queue       = opts.fetch(:max_queue, DEFAULT_MAX_QUEUE_SIZE).to_i

              Method acquire has 29 lines of code (exceeds 25 allowed). Consider refactoring.
              Open

                  def acquire(timeout = nil, &block)
                    event = acquire_or_event
                    if event
                      within_timeout = event.wait(timeout)
                      # release immediately when acquired later after the timeout since it is unused
              Severity: Minor
              Found in lib/concurrent-ruby-edge/concurrent/edge/throttle.rb - About 1 hr to fix

                Method splitTreeBin has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
                Open

                    private static void splitTreeBin(Node[] nextTab, int i, TreeBin t) {
                        int bit = nextTab.length >>> 1;
                        TreeBin lt = new TreeBin();
                        TreeBin ht = new TreeBin();
                        int lc = 0, hc = 0;

                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 splitTreeBin has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
                Open

                    private static void splitTreeBin(AtomicReferenceArray<Node> nextTab, int i, TreeBin t) {
                        int bit = nextTab.length() >>> 1;
                        TreeBin lt = new TreeBin();
                        TreeBin ht = new TreeBin();
                        int lc = 0, hc = 0;

                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 para_setup has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
                Open

                def para_setup(num_threads, count, &block)
                  if num_threads % 2 > 0
                    raise ArgumentError, 'num_threads must be a multiple of two'
                  end
                  raise ArgumentError, 'need block' unless block_given?
                Severity: Minor
                Found in examples/benchmark_atomic.rb - About 1 hr 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 post has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
                Open

                      def post(*args, &task)
                        raise ArgumentError.new('no block given') unless block_given?
                        return fallback_action(*args, &task).call unless running?
                        @executor.submit Job.new(args, task)
                        true
                Severity: Minor
                Found in lib/concurrent-ruby/concurrent/executor/java_executor_service.rb - About 1 hr 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 release has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
                Open

                    def release
                      while true
                        current_capacity = capacity
                        if compare_and_set_capacity current_capacity, current_capacity + 1
                          if current_capacity < 0
                Severity: Minor
                Found in lib/concurrent-ruby-edge/concurrent/edge/throttle.rb - About 1 hr 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 compute_cpu_quota has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
                Open

                      def compute_cpu_quota
                        if RbConfig::CONFIG["target_os"].include?("linux")
                          if File.exist?("/sys/fs/cgroup/cpu.max")
                            # cgroups v2: https://docs.kernel.org/admin-guide/cgroup-v2.html#cpu-interface-files
                            cpu_max = File.read("/sys/fs/cgroup/cpu.max")
                Severity: Minor
                Found in lib/concurrent-ruby/concurrent/utility/processor_counter.rb - About 1 hr 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 create_simple_logger has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
                Open

                  def self.create_simple_logger(level = :FATAL, output = $stderr)
                    level = Concern::Logging.const_get(level) unless level.is_a?(Integer)
                
                    # TODO (pitr-ch 24-Dec-2016): figure out why it had to be replaced, stdlogger was deadlocking
                    lambda do |severity, progname, message = nil, &block|
                Severity: Minor
                Found in lib/concurrent-ruby/concurrent/concern/logging.rb - About 1 hr 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 pop_matching has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
                Open

                      def pop_matching(matcher, timeout = nil, timeout_value = nil)
                        # TODO (pitr-ch 27-Jan-2019): should it try to match pending pushes if it fails to match in the buffer? Maybe only if the size is zero. It could be surprising if it's used as a throttle it might be expected that it will not pop if buffer is full of messages which di not match, it might it expected it will block until the message is added to the buffer
                        # that it returns even if the buffer is full. User might expect that it has to be in the buffer first.
                        probe = @Mutex.synchronize do
                          message = ns_shift_message matcher
                Severity: Minor
                Found in lib/concurrent-ruby-edge/concurrent/edge/channel.rb - About 1 hr 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 execute_next_job has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
                Open

                    def execute_next_job
                      job       = synchronize { @queue.first }
                      old_value = @current.value
                
                      @caller.value = job.caller # for nested actions
                Severity: Minor
                Found in lib/concurrent-ruby/concurrent/agent.rb - About 1 hr 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 process_tasks has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
                Open

                    def process_tasks
                      loop do
                        task = synchronize { @condition.reset; @queue.peek }
                        break unless task
                
                
                Severity: Minor
                Found in lib/concurrent-ruby/concurrent/executor/timer_set.rb - About 1 hr 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 atomic_resolution has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
                Open

                      def self.atomic_resolution(resolvable_map)
                        # atomic_resolution event => [], future => [true, :v, nil]
                        sorted = resolvable_map.to_a.sort_by { |resolvable, _| locking_order_by resolvable }
                
                        reserved = 0
                Severity: Minor
                Found in lib/concurrent-ruby-edge/concurrent/edge/promises.rb - About 1 hr 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 toArray has 27 lines of code (exceeds 25 allowed). Consider refactoring.
                Open

                        @SuppressWarnings("unchecked") public final <T> T[] toArray(T[] a) {
                            long sz = map.mappingCount();
                            if (sz > (long)(MAX_ARRAY_SIZE))
                                throw new OutOfMemoryError(oomeMsg);
                            int m = (int)sz;

                  Method toArray has 27 lines of code (exceeds 25 allowed). Consider refactoring.
                  Open

                          @SuppressWarnings("unchecked") public final <T> T[] toArray(T[] a) {
                              long sz = map.mappingCount();
                              if (sz > (long)(MAX_ARRAY_SIZE))
                                  throw new OutOfMemoryError(oomeMsg);
                              int m = (int)sz;
                    Severity
                    Category
                    Status
                    Source
                    Language