ManageIQ/multi_repo

View on GitHub
lib/multi_repo/service/docker.rb

Summary

Maintainability
B
4 hrs
Test Coverage

Method request has a Cognitive Complexity of 19 (exceeds 5 allowed). Consider refactoring.
Open

    def request(verb, path, body: nil, headers: {}, verbose: true)
      path = File.join(registry, path)

      headers = default_headers.merge(headers) if default_headers

Severity: Minor
Found in lib/multi_repo/service/docker.rb - About 2 hrs 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

Class Docker has 21 methods (exceeds 20 allowed). Consider refactoring.
Open

  class Docker
    def self.registry
      @registry ||= ENV.fetch("DOCKER_REGISTRY")
    end

Severity: Minor
Found in lib/multi_repo/service/docker.rb - About 2 hrs to fix

    Unused block argument - result. If it's necessary, use _ or _result as an argument name to indicate that it won't be used.
    Open

                RestClient::Request.execute(:method => verb, :url => path, :headers => headers, :read_timeout => 300) do |response, request, result|
    Severity: Minor
    Found in lib/multi_repo/service/docker.rb by rubocop

    Checks for unused block arguments.

    Example:

    # bad
    do_something do |used, unused|
      puts used
    end
    
    do_something do |bar|
      puts :foo
    end
    
    define_method(:foo) do |bar|
      puts :baz
    end
    
    # good
    do_something do |used, _unused|
      puts used
    end
    
    do_something do
      puts :foo
    end
    
    define_method(:foo) do |_bar|
      puts :baz
    end

    Example: IgnoreEmptyBlocks: true (default)

    # good
    do_something { |unused| }

    Example: IgnoreEmptyBlocks: false

    # bad
    do_something { |unused| }

    Example: AllowUnusedKeywordArguments: false (default)

    # bad
    do_something do |unused: 42|
      foo
    end

    Example: AllowUnusedKeywordArguments: true

    # good
    do_something do |unused: 42|
      foo
    end

    Shadowing outer local variable - response.
    Open

                RestClient::Request.execute(:method => verb, :url => path, :headers => headers, :read_timeout => 300) do |response, request, result|
    Severity: Minor
    Found in lib/multi_repo/service/docker.rb by rubocop

    Checks for the use of local variable names from an outer scope in block arguments or block-local variables. This mirrors the warning given by ruby -cw prior to Ruby 2.6: "shadowing outer local variable - foo".

    NOTE: Shadowing of variables in block passed to Ractor.new is allowed because Ractor should not access outer variables. eg. following style is encouraged:

    ```ruby
    worker_id, pipe = env
    Ractor.new(worker_id, pipe) do |worker_id, pipe|
    end
    ```

    Example:

    # bad
    
    def some_method
      foo = 1
    
      2.times do |foo| # shadowing outer `foo`
        do_something(foo)
      end
    end

    Example:

    # good
    
    def some_method
      foo = 1
    
      2.times do |bar|
        do_something(bar)
      end
    end

    Unused block argument - request. If it's necessary, use _ or _request as an argument name to indicate that it won't be used.
    Open

                RestClient::Request.execute(:method => verb, :url => path, :headers => headers, :read_timeout => 300) do |response, request, result|
    Severity: Minor
    Found in lib/multi_repo/service/docker.rb by rubocop

    Checks for unused block arguments.

    Example:

    # bad
    do_something do |used, unused|
      puts used
    end
    
    do_something do |bar|
      puts :foo
    end
    
    define_method(:foo) do |bar|
      puts :baz
    end
    
    # good
    do_something do |used, _unused|
      puts used
    end
    
    do_something do
      puts :foo
    end
    
    define_method(:foo) do |_bar|
      puts :baz
    end

    Example: IgnoreEmptyBlocks: true (default)

    # good
    do_something { |unused| }

    Example: IgnoreEmptyBlocks: false

    # bad
    do_something { |unused| }

    Example: AllowUnusedKeywordArguments: false (default)

    # bad
    do_something do |unused: 42|
      foo
    end

    Example: AllowUnusedKeywordArguments: true

    # good
    do_something do |unused: 42|
      foo
    end

    Unused method argument - verbose.
    Open

        def self.system?(command, dry_run: false, verbose: true)
    Severity: Minor
    Found in lib/multi_repo/service/docker.rb by rubocop

    Checks for unused method arguments.

    Example:

    # bad
    def some_method(used, unused, _unused_but_allowed)
      puts used
    end
    
    # good
    def some_method(used, _unused, _unused_but_allowed)
      puts used
    end

    Example: AllowUnusedKeywordArguments: false (default)

    # bad
    def do_something(used, unused: 42)
      used
    end

    Example: AllowUnusedKeywordArguments: true

    # good
    def do_something(used, unused: 42)
      used
    end

    Example: IgnoreEmptyMethods: true (default)

    # good
    def do_something(unused)
    end

    Example: IgnoreEmptyMethods: false

    # bad
    def do_something(unused)
    end

    Example: IgnoreNotImplementedMethods: true (default)

    # good
    def do_something(unused)
      raise NotImplementedError
    end
    
    def do_something_else(unused)
      fail "TODO"
    end

    Example: IgnoreNotImplementedMethods: false

    # bad
    def do_something(unused)
      raise NotImplementedError
    end
    
    def do_something_else(unused)
      fail "TODO"
    end

    There are no issues that match your filters.

    Category
    Status